On Tue, Jun 5, 2012 at 5:03 PM, Paul Berry <[email protected]> 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 <[email protected]> _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
