On 25/04/17 06:23 PM, Nicolai Hähnle wrote: > From: Nicolai Hähnle <nicolai.haeh...@amd.com> > > The incomplete framebuffer is set for a surfaceless context. This leads to > the following error in piglit spec@egl_khr_surfaceless_context@viewport:
[...] > diff --git a/src/mesa/state_tracker/st_manager.c > b/src/mesa/state_tracker/st_manager.c > index 86a82c2..2ba7de6 100644 > --- a/src/mesa/state_tracker/st_manager.c > +++ b/src/mesa/state_tracker/st_manager.c > @@ -837,27 +837,28 @@ st_api_destroy(struct st_api *stapi) > > /** > * Flush the front buffer if the current context renders to the front buffer. > */ > void > st_manager_flush_frontbuffer(struct st_context *st) > { > struct st_framebuffer *stfb = st_ws_framebuffer(st->ctx->DrawBuffer); > struct st_renderbuffer *strb = NULL; > > + assert(st->ctx->DrawBuffer != _mesa_get_incomplete_framebuffer()); This assertion sometimes fails in Xorg (with GLX indirect rendering enabled) during a piglit run, see example backtrace below. I found a way to reproduce it quickly: Run ( while .../piglit/bin/glx-get-current-display-ext -auto >/dev/null; do done )& in the background, then start a piglit gpu run. ../../../src/mesa/state_tracker/st_manager.c:840:st_manager_flush_frontbuffer: Assertion `st->ctx->DrawBuffer != _mesa_get_incomplete_framebuffer()' failed. Thread 1 "Xorg" received signal SIGTRAP, Trace/breakpoint trap. 0x00007f97c3a39b76 in _debug_assert_fail (expr=expr@entry=0x7f97c3e85e68 "st->ctx->DrawBuffer != _mesa_get_incomplete_framebuffer()", file=file@entry=0x7f97c3e85e38 "../../../src/mesa/state_tracker/st_manager.c", line=line@entry=840, function=function@entry=0x7f97c3e86930 <__func__.43856> "st_manager_flush_frontbuffer") at ../../../../src/gallium/auxiliary/util/u_debug.c:321 321 os_abort(); (gdb) bt #0 0x00007f97c3a39b76 in _debug_assert_fail (expr=expr@entry=0x7f97c3e85e68 "st->ctx->DrawBuffer != _mesa_get_incomplete_framebuffer()", file=file@entry=0x7f97c3e85e38 "../../../src/mesa/state_tracker/st_manager.c", line=line@entry=840, function=function@entry=0x7f97c3e86930 <__func__.43856> "st_manager_flush_frontbuffer") at ../../../../src/gallium/auxiliary/util/u_debug.c:321 #1 0x00007f97c37cb928 in st_manager_flush_frontbuffer (st=0x55d1c5cd1080) at ../../../src/mesa/state_tracker/st_manager.c:840 #2 st_context_flush (stctxi=0x55d1c5cd1080, flags=<optimized out>, fence=<optimized out>) at ../../../src/mesa/state_tracker/st_manager.c:506 #3 0x00007f97c39772b2 in dri_make_current (cPriv=<optimized out>, driDrawPriv=0x55d1c6aa5df0, driReadPriv=0x55d1c6aa5df0) at ../../../../../src/gallium/state_trackers/dri/dri_context.c:240 #4 0x00007f97c3975cf4 in driBindContext (pcp=<optimized out>, pdp=<optimized out>, prp=<optimized out>) at ../../../../../../src/mesa/drivers/dri/common/dri_util.c:555 #5 0x00007f97c7bad635 in DoMakeCurrent (cl=0x55d1c6a64318, drawId=<optimized out>, readId=16777220, contextId=<optimized out>, tag=<optimized out>) at ../../glx/glxcmds.c:663 #6 0x000055d1c43ae059 in Dispatch () at ../../dix/dispatch.c:478 #7 0x000055d1c43b21a5 in dix_main (argc=3, argv=0x7ffc12f6f2a8, envp=<optimized out>) at ../../dix/main.c:276 #8 0x00007f97c97132b1 in __libc_start_main (main=0x55d1c439c8b0 <main>, argc=3, argv=0x7ffc12f6f2a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc12f6f298) at ../csu/libc-start.c:291 #9 0x000055d1c439c8ea in _start () -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev