so this one appears to break gles dispatch (on i965, but probably others)..
Somehow glCheckFramebufferStatus() ends up in _mesa_DeleteFramebuffers(), which doesn't go so well.. not sure I understand the dispatch code to understand what the issue is. But could someone either fix it or revert this patch? BR, -R On Fri, Aug 14, 2015 at 7:30 AM, Marta Lofstedt <marta.lofst...@linux.intel.com> wrote: > From: Marta Lofstedt <marta.lofst...@intel.com> > > The function glMemoryBarrierByRegion is part of > OpenGL ES 3.1 and OpenGL 4.5 core and compatibility > profiles. > > Signed-off-by: Marta Lofstedt <marta.lofst...@intel.com> > --- > src/mapi/glapi/gen/GL4x.xml | 6 +++++ > src/mesa/main/shaderimage.c | 40 > +++++++++++++++++++++++++++++++++ > src/mesa/main/shaderimage.h | 3 +++ > src/mesa/main/tests/dispatch_sanity.cpp | 9 ++++++-- > 4 files changed, 56 insertions(+), 2 deletions(-) > > diff --git a/src/mapi/glapi/gen/GL4x.xml b/src/mapi/glapi/gen/GL4x.xml > index 94ddfb7..dee5027 100644 > --- a/src/mapi/glapi/gen/GL4x.xml > +++ b/src/mapi/glapi/gen/GL4x.xml > @@ -44,4 +44,10 @@ > <enum name="DEPTH_STENCIL_TEXTURE_MODE" value="0x90EA"/> > </category> > > +<category name="4.5"> > + <function name="MemoryBarrierByRegion" es2="3.1"> > + <param name="barriers" type="GLbitfield"/> > + </function> > +</category> > + > </OpenGLAPI> > diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c > index a348cdb..7337f22 100644 > --- a/src/mesa/main/shaderimage.c > +++ b/src/mesa/main/shaderimage.c > @@ -653,3 +653,43 @@ _mesa_MemoryBarrier(GLbitfield barriers) > if (ctx->Driver.MemoryBarrier) > ctx->Driver.MemoryBarrier(ctx, barriers); > } > + > +void GLAPIENTRY > +_mesa_MemoryBarrierByRegion(GLbitfield barriers) > +{ > + GET_CURRENT_CONTEXT(ctx); > + > + GLbitfield all_allowed_bits = GL_ATOMIC_COUNTER_BARRIER_BIT | > + GL_FRAMEBUFFER_BARRIER_BIT | > + GL_SHADER_IMAGE_ACCESS_BARRIER_BIT | > + GL_SHADER_STORAGE_BARRIER_BIT | > + GL_TEXTURE_FETCH_BARRIER_BIT | > + GL_UNIFORM_BARRIER_BIT; > + > + if (ctx->Driver.MemoryBarrier) { > + /* From section 7.11.2 of the OpenGL ES 3.1 specification: > + * > + * "When barriers is ALL_BARRIER_BITS, shader memory accesses will > be > + * synchronized relative to all these barrier bits, but not to > other > + * barrier bits specific to MemoryBarrier." > + * > + * That is, if barriers is the special value GL_ALL_BARRIER_BITS, then > all > + * barriers allowed by glMemoryBarrierByRegion should be activated." > + */ > + if (barriers == GL_ALL_BARRIER_BITS) > + return ctx->Driver.MemoryBarrier(ctx, all_allowed_bits); > + > + /* From section 7.11.2 of the OpenGL ES 3.1 specification: > + * > + * "An INVALID_VALUE error is generated if barriers is not the > special > + * value ALL_BARRIER_BITS, and has any bits set other than those > + * described above." > + */ > + if ((barriers & ~all_allowed_bits) != 0) { > + _mesa_error(ctx, GL_INVALID_VALUE, > + "glMemoryBarrierByRegion(unsupported barrier bit"); > + } > + > + ctx->Driver.MemoryBarrier(ctx, barriers); > + } > +} > diff --git a/src/mesa/main/shaderimage.h b/src/mesa/main/shaderimage.h > index 33d8a1e..d08ece8 100644 > --- a/src/mesa/main/shaderimage.h > +++ b/src/mesa/main/shaderimage.h > @@ -68,6 +68,9 @@ _mesa_BindImageTextures(GLuint first, GLsizei count, const > GLuint *textures); > void GLAPIENTRY > _mesa_MemoryBarrier(GLbitfield barriers); > > +void GLAPIENTRY > +_mesa_MemoryBarrierByRegion(GLbitfield barriers); > + > #ifdef __cplusplus > } > #endif > diff --git a/src/mesa/main/tests/dispatch_sanity.cpp > b/src/mesa/main/tests/dispatch_sanity.cpp > index af89d2c..59107eb 100644 > --- a/src/mesa/main/tests/dispatch_sanity.cpp > +++ b/src/mesa/main/tests/dispatch_sanity.cpp > @@ -851,6 +851,9 @@ const struct function common_desktop_functions_possible[] > = { > // { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml > // { "glTextureStorage3DMultisampleEXT", 43, -1 }, // XXX: Add to xml > > +/* GL 4.5 */ > + { "glMemoryBarrierByRegion", 45, -1 }, > + > /* GL_ARB_internalformat_query */ > { "glGetInternalformativ", 30, -1 }, > > @@ -1739,6 +1742,9 @@ const struct function gl_core_functions_possible[] = { > // { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml > // { "glTextureStorage3DMultisampleEXT", 43, -1 }, // XXX: Add to xml > > +/* GL 4.5 */ > + { "glMemoryBarrierByRegion", 45, -1 }, > + > /* GL_ARB_direct_state_access */ > { "glCreateTransformFeedbacks", 45, -1 }, > { "glTransformFeedbackBufferBase", 45, -1 }, > @@ -2461,8 +2467,7 @@ const struct function gles31_functions_possible[] = { > { "glGetBooleani_v", 31, -1 }, > { "glMemoryBarrier", 31, -1 }, > > - // FINISHME: This function has not been implemented yet. > - // { "glMemoryBarrierByRegion", 31, -1 }, > + { "glMemoryBarrierByRegion", 31, -1 }, > > { "glTexStorage2DMultisample", 31, -1 }, > { "glGetMultisamplefv", 31, -1 }, > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev