Hi Federico, Just FYI you should send the piglit test to the piglit mailing list: http://lists.freedesktop.org/mailman/listinfo/piglit
Also to allow easy review you should use git send-email rather than attaching it to the email. Timothy Arceri On Mon, 2013-10-21 at 17:37 -0500, Federico Mena Quintero wrote: > Hello, everyone, > > Attached is a new test for piglit which exposes a bug in Mesa's > software rendering (and another bug in hardware rendering, but that's > not its main purpose). > > The bug is as follows. With software rendering, after doing a buffer > swap, glBlitFrameBufferEXT() appears to to copy the whole framebuffer > instead of just the specified region. This breaks clutter and cogl, > since they keep track of a dirty region themselves, and they use blits > instead of full buffer swaps to avoid updating the whole display on > every frame unnecessarily. > > What is happening is actually a bit more complicated. > glBlitFrameBufferEXT()'s basic machinery works correctly, but if there > has been a buffer swap before it, the following happens: > > 1. Draw some stuff (say, to GL_BACK) > > 2. Swap buffers. As far as I can tell, this just causes an > XPutImage() from the GL_BACK buffer to the X window. > > 3. Draw some stuff to GL_BACK. > > 4. Do glBlitFrameBufferEXT() from GL_BACK to GL_FRONT with the area you > are interested in. > > 5. Internally, Mesa sees that the buffer for GL_FRONT has not been > created yet, so it creates it and does the blit. > > 6. Do glFlush() so that GL_FRONT actually gets sent to the screen. This > causes an XPutImage() of the *whole* of GL_FRONT, thus giving > incorrect results - the area that should have been updated is the one > from (4), i.e. just the blit. > > If you run the test program with hardware acceleration, it will work > correctly. But if you run it with LIBGL_ALWAYS_SOFTWARE=1, it will > fail. > > For a related bug, do the following: in the test program change the > line that says > > #define SWAP_BUFFERS_BEFORE_BLIT 1 > > from 1 to 0. Run the program again; this time it will work correctly > with software rendering, but at least on my box it fails with hardware > rendering (Intel). > > I don't know enough about Mesa's internals to fix this quickly. Any > help is appreciated. > > Thanks, > > Federico > > _______________________________________________ > 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