fwiw, issue seems to be due to picking up installed libglapi.so vs. one in $MESA/lib (where I was pointing $LD_LIBRARY_PATH)..
So this shouldn't be an issue running installed mesa. (Although I'm a bit curious how it ended up using installed libglapi.so vs the one in $LD_LIBRARY_PATH) BR, -R On Mon, Aug 24, 2015 at 11:08 AM, Rob Clark <robdcl...@gmail.com> wrote: > ping? It would be kinda nice to have gles working again. > > Fwiw, issue seems to be an off-by-one in the dispatch table, resulting > in (for example) glCheckFramebufferStatus() ending up in > _mesa_DeleteFramebuffers(), which ends badly.. > > Program received signal SIGSEGV, Segmentation fault. > 0x00007ffff6ec77e3 in _mesa_DeleteFramebuffers (n=36160, > framebuffers=0x0) at main/fbobject.c:2581 > 2581 if (framebuffers[i] > 0) { > (gdb) bt > #0 0x00007ffff6ec77e3 in _mesa_DeleteFramebuffers (n=36160, > framebuffers=0x0) at main/fbobject.c:2581 > #1 0x00007ffff659ec80 in glCheckFramebufferStatus (target=36160) at > es2api/glapi_mapi_tmp.h:2629 > #2 0x000000000049f04d in retrace_glCheckFramebufferStatus (call=...) > at /home/robclark/src/apitrace/build/retrace/glretrace_gl.cpp:26685 > #3 0x000000000040b854 in retrace::retraceCall > (call=call@entry=0xacf900) at > /home/robclark/src/apitrace/retrace/retrace_main.cpp:239 > #4 0x000000000040beca in runLeg (call=0xacf900, this=0xa68660) at > /home/robclark/src/apitrace/retrace/retrace_main.cpp:399 > #5 runRace (this=0xa68660) at > /home/robclark/src/apitrace/retrace/retrace_main.cpp:370 > #6 retrace::RelayRace::run (this=<optimized out>) at > /home/robclark/src/apitrace/retrace/retrace_main.cpp:539 > #7 0x00000000004078cb in mainLoop () at > /home/robclark/src/apitrace/retrace/retrace_main.cpp:599 > #8 main (argc=4, argv=0x7fffffffdfb8) at > /home/robclark/src/apitrace/retrace/retrace_main.cpp:908 > > > > BR, > -R > > > On Fri, Aug 21, 2015 at 5:41 PM, Rob Clark <robdcl...@gmail.com> wrote: >> 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