Tapani Pälli <tapani.pa...@intel.com> writes: > This patch implements a stub for GL_EXT_discard_framebuffer with > required checks listed by the extension specification. This extension > is required by GLBenchmark 2.5 when compiled with OpenGL ES 2.0 > as the rendering backend.
Are there piglit tests for this coming? > --- > src/mapi/glapi/gen/es_EXT.xml | 13 +++++++++ > src/mesa/drivers/dri/intel/intel_extensions.c | 1 + > src/mesa/main/dd.h | 4 ++- > src/mesa/main/extensions.c | 1 + > src/mesa/main/fbobject.c | 40 > +++++++++++++++++++++++++++ > src/mesa/main/fbobject.h | 4 +++ > src/mesa/main/mtypes.h | 1 + > src/mesa/main/tests/dispatch_sanity.cpp | 1 + > 8 files changed, 64 insertions(+), 1 deletion(-) > diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c > b/src/mesa/drivers/dri/intel/intel_extensions.c > index bf5e2b5..a182139 100755 > --- a/src/mesa/drivers/dri/intel/intel_extensions.c > +++ b/src/mesa/drivers/dri/intel/intel_extensions.c > @@ -65,6 +65,7 @@ intelInitExtensions(struct gl_context *ctx) > ctx->Extensions.EXT_blend_equation_separate = true; > ctx->Extensions.EXT_blend_func_separate = true; > ctx->Extensions.EXT_blend_minmax = true; > + ctx->Extensions.EXT_discard_framebuffer = true; > ctx->Extensions.EXT_framebuffer_blit = true; > ctx->Extensions.EXT_framebuffer_object = true; > ctx->Extensions.EXT_fog_coord = true; > diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c > index 04435e0..f7bd6f2 100644 > --- a/src/mesa/main/extensions.c > +++ b/src/mesa/main/extensions.c > @@ -168,6 +168,7 @@ static const struct extension extension_table[] = { > { "GL_EXT_blend_color", o(EXT_blend_color), > GLL, 1995 }, > { "GL_EXT_blend_equation_separate", > o(EXT_blend_equation_separate), GL, 2003 }, > { "GL_EXT_blend_func_separate", > o(EXT_blend_func_separate), GLL, 1999 }, > + { "GL_EXT_discard_framebuffer", > o(EXT_discard_framebuffer), ES2, 2009 }, > { "GL_EXT_blend_minmax", o(EXT_blend_minmax), > GLL | ES1 | ES2, 1995 }, > { "GL_EXT_blend_subtract", o(dummy_true), > GLL, 1995 }, > { "GL_EXT_clip_volume_hint", o(EXT_clip_volume_hint), > GL, 1996 }, Is there any reason not to just expose this stub extension everywhere, since it requires nothing from the driver author? > + > +void GLAPIENTRY > +_mesa_DiscardFramebufferEXT(GLenum target, GLsizei numAttachments, > + const GLenum *attachments) > +{ > + struct gl_framebuffer *fb; > + GLint i; > + > + GET_CURRENT_CONTEXT(ctx); > + > + if (target != GL_FRAMEBUFFER) { > + _mesa_error(ctx, GL_INVALID_ENUM, "%s(target)", __func__); > + return; > + } > + > + if (numAttachments < 0) { > + _mesa_error(ctx, GL_INVALID_VALUE, > + "%s(numAttachments < 0)", __func__); > + return; > + } > + > + for(i = 0; i < numAttachments; i++) { > + switch (attachments[i]) { > + case GL_COLOR: > + case GL_DEPTH: > + case GL_STENCIL: > + case GL_COLOR_ATTACHMENT0: > + case GL_DEPTH_ATTACHMENT: > + case GL_STENCIL_ATTACHMENT: > + break; break should be indented, like return is. Usually "case" statements are not indented from the switch though. > + default: > + _mesa_error(ctx, GL_INVALID_ENUM, "%s(attachment)", __func__); > + return; > + } > + } This looks like not the right error behavior -- you're supposed to reject non-(COLOR/DEPTH/STENCIL) on _mesa_is_winsys_fbo() and non-(COLOR_ATT0/DEPTH_ATT/STENCIL_ATT) otherwise.
pgpa8ab1Dp1er.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev