https://bugs.freedesktop.org/show_bug.cgi?id=74853
Priority: medium Bug ID: 74853 Keywords: regression CC: maraeo@gmail.com Assignee: dri-devel@lists.freedesktop.org Summary: [r300g, bisected] some piglit fbo tests segfault Severity: normal Classification: Unclassified OS: All Reporter: pavel.ondracka@email.cz Hardware: Other Status: NEW Version: git Component: Drivers/Gallium/r300 Product: Mesa
Some affected tests: fbo-missing-attachment-blit es2 from -fbo -auto fbo-missing-attachment-blit es2 to -fbo -auto fbo-missing-attachment-clear -auto framebuffer-blit-levels draw depth -fbo -auto framebuffer-blit-levels draw stencil -fbo -auto and others...
First bad commit: commit 9baa45f78b8ca7d66280e36009b6a685055d7cd6 Author: Marek Olšák marek.olsak@amd.com Date: Wed Jan 8 01:09:15 2014 +0100
st/mesa: bind NULL colorbuffers as specified by glDrawBuffers
An example why it is required:
Let's say there's a fragment shader writing to gl_FragData[0..1]. The user calls: glDrawBuffers(2, {GL_NONE, GL_COLOR_ATTACHMENT0});
That means gl_FragData[0] is unused and gl_FragData[1] is written to GL_COLOR_ATTACHMENT0.
st/mesa was skipping the GL_NONE draw buffer, therefore gl_FragData[0] was written to GL_COLOR_ATTACHMENT0, which was wrong.
This commit fixes it, but drivers must also be fixed not to crash when binding NULL colorbuffers. There is also a new set of piglit tests for this.
The MSAA state also had to be fixed not to crash when reading fb->cbufs[0].
Reviewed-by: Brian Paul brianp@vmware.com
./framebuffer-blit-levels draw depth -fbo -auto Program received signal SIGSEGV, Segmentation fault. 0xb6ca230f in r300_set_framebuffer_state (pipe=0x80880e8, state=0x84bc9a0) at r300_state.c:1020 1020 r300->screen->cmask_resource == state->cbufs[0]->texture; (gdb) bt #0 0xb6ca230f in r300_set_framebuffer_state (pipe=0x80880e8, state=0x84bc9a0) at r300_state.c:1020 #1 0xb6affe43 in cso_set_framebuffer (ctx=0x84d16f0, fb=0x84bc9a0) at cso_cache/cso_context.c:649 #2 0xb69d0d84 in update_framebuffer_state (st=0x84bbf30) at state_tracker/st_atom_framebuffer.c:125 #3 0xb69ce0d3 in st_validate_state (st=0x84bbf30) at state_tracker/st_atom.c:202 #4 0xb69d7301 in st_BlitFramebuffer (ctx=0x84787d8, srcX0=0, srcY0=0, srcX1=128, srcY1=128, dstX0=0, dstY0=0, dstX1=128, dstY1=128, mask=256, filter=9728) at state_tracker/st_cb_blit.c:94 #5 0xb6868fb3 in _mesa_BlitFramebuffer (srcX0=0, srcY0=0, srcX1=128, srcY1=128, dstX0=0, dstY0=0, dstX1=128, dstY1=128, mask=256, filter=9728) at main/blit.c:509 #6 0xb7eb51ff in stub_glBlitFramebuffer (srcX0=0, srcY0=0, srcX1=128, srcY1=128, dstX0=0, dstY0=0, dstX1=128, dstY1=128, mask=256, filter=9728) at /home/Paulie/piglit/tests/util/generated_dispatch.c:1724 #7 0x080498c3 in piglit_display () at /home/Paulie/piglit/tests/spec/arb_framebuffer_object/framebuffer-blit-levels.c:372 #8 0xb7eb0540 in display () at /home/Paulie/piglit/tests/util/piglit-framework-gl/piglit_glut_framework.c:60 #9 0xb7fb88ec in fghcbDisplayWindow () from /lib/libglut.so.3 #10 0xb7fbc507 in fgEnumWindows () from /lib/libglut.so.3 #11 0xb7fb8e6e in glutMainLoopEvent () from /lib/libglut.so.3 #12 0xb7fb9657 in glutMainLoop () from /lib/libglut.so.3 #13 0xb7eb0799 in run_test (gl_fw=0xb7fa1b20 <glut_fw>, argc=3, argv=0xbffff1e4) at /home/Paulie/piglit/tests/util/piglit-framework-gl/piglit_glut_framework.c:142 #14 0xb7eae59c in piglit_gl_test_run (argc=3, argv=0xbffff1e4, config=0xbffff108) at /home/Paulie/piglit/tests/util/piglit-framework-gl.c:191 #15 0x08048df9 in main (argc=3, argv=0xbffff1e4) at /home/Paulie/piglit/tests/spec/arb_framebuffer_object/framebuffer-blit-levels.c:63
https://bugs.freedesktop.org/show_bug.cgi?id=74853
--- Comment #1 from Marek Olšák maraeo@gmail.com --- I fixed most of the tests by e522c455e40b06a89885d413d564df40015259b3. There are no crashes, but some of them are unfixable on R500. Closing.
https://bugs.freedesktop.org/show_bug.cgi?id=74853
Marek Olšák maraeo@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
dri-devel@lists.freedesktop.org