[Piglit] [PATCH 17/20] msaa: Make a new Fbo::try_setup() function.
Anuj Phogat
anuj.phogat at gmail.com
Wed Jun 6 16:48:16 PDT 2012
On Tue, Jun 5, 2012 at 5:03 PM, Paul Berry <stereotype441 at gmail.com> wrote:
> In contrast to the Fbo::setup() function (which terminates the test if
> the framebuffer is incomplete), Fbo::try_setup() merely returns a
> boolean indicating whether the framebuffer is complete. This will be
> necessary to allow different color formats to be tested, since we
> won't want to terminate the test if a non-renderable color format is
> attempted.
> ---
> tests/spec/ext_framebuffer_multisample/common.cpp | 46 ++++++++++++++-------
> tests/spec/ext_framebuffer_multisample/common.h | 1 +
> 2 files changed, 32 insertions(+), 15 deletions(-)
>
> diff --git a/tests/spec/ext_framebuffer_multisample/common.cpp b/tests/spec/ext_framebuffer_multisample/common.cpp
> index ce0552e..d7cbe9c 100644
> --- a/tests/spec/ext_framebuffer_multisample/common.cpp
> +++ b/tests/spec/ext_framebuffer_multisample/common.cpp
> @@ -147,11 +147,37 @@ Fbo::set_samples(int num_samples)
>
> /**
> * Modify the state of the framebuffer object to reflect the state in
> - * new_config.
> + * new_config. if the resulting framebuffer is incomplete, terminate
> + * the test.
> */
> void
> Fbo::setup(const FboConfig &new_config)
> {
> + if (!try_setup(new_config)) {
> + printf("Framebuffer not complete\n");
> + if (!config.combine_depth_stencil) {
> + /* Some implementations do not support
> + * separate depth and stencil attachments, so
> + * don't consider it an error if we fail to
> + * make a complete framebuffer using separate
> + * depth and stencil attachments.
> + */
> + piglit_report_result(PIGLIT_SKIP);
> + } else {
> + piglit_report_result(PIGLIT_FAIL);
> + }
> + }
> +}
> +
> +
> +/**
> + * Modify the state of the framebuffer object to reflect the state in
> + * config. Return true if the resulting framebuffer is complete,
> + * false otherwise.
> + */
> +bool
> +Fbo::try_setup(const FboConfig &new_config)
> +{
> this->config = new_config;
>
> if (!gl_objects_generated)
> @@ -223,22 +249,12 @@ Fbo::setup(const FboConfig &new_config)
> GL_RENDERBUFFER, depth_rb);
> }
>
> - if (glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
> - printf("Framebuffer not complete\n");
> - if (!config.combine_depth_stencil) {
> - /* Some implementations do not support
> - * separate depth and stencil attachments, so
> - * don't consider it an error if we fail to
> - * make a complete framebuffer using separate
> - * depth and stencil attachments.
> - */
> - piglit_report_result(PIGLIT_SKIP);
> - } else {
> - piglit_report_result(PIGLIT_FAIL);
> - }
> - }
> + bool success = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER)
> + == GL_FRAMEBUFFER_COMPLETE;
>
> glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
> +
> + return success;
> }
>
>
> diff --git a/tests/spec/ext_framebuffer_multisample/common.h b/tests/spec/ext_framebuffer_multisample/common.h
> index 3caf8a0..0e6913f 100644
> --- a/tests/spec/ext_framebuffer_multisample/common.h
> +++ b/tests/spec/ext_framebuffer_multisample/common.h
> @@ -86,6 +86,7 @@ public:
>
> void set_samples(int num_samples);
> void setup(const FboConfig &new_config);
> + bool try_setup(const FboConfig &new_config);
>
> void set_viewport();
>
> --
> 1.7.7.6
>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the Piglit
mailing list