[Piglit] New test for partial blits after a buffer swap

Eric Anholt eric at anholt.net
Tue Oct 29 21:52:26 CET 2013


Federico Mena Quintero <federico.mena.lists at gmail.com> writes:

> 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.

Ouch.  Doing anything to GL_FRONT is really punitive to performance in
DRI2.  Any chance we could convince clutter to use
GLX_MESA_copy_sub_buffer/EGL_NV_post_sub_buffer instead?  Then you
wouldn't get that fullscreen copy.

Of course, the thing clutter really needs is buffer_age.  We need to
write tests so we can actually merge some code for it.

> 5. Internally, Mesa sees that the buffer for GL_FRONT has not been
> created yet, so it creates it and does the blit.

Sounds like we have a problem here of not updating our frake front with
the current real front contents.  I forget what the state of things was,
but at one point I recall issues with vsynced swaps versus copies from
front to fake front.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20131029/16d09597/attachment.pgp>


More information about the Piglit mailing list