This series: Reviewed-by: Sinclair Yeh <s...@vmware.com>
On Thu, Jun 22, 2017 at 12:42:32PM +0200, Thomas Hellstrom wrote: > A patch series that deals with dri3 correctness- and performance fixes. > > The corectness fixes attempts to deal with the fact that we need to wait for > all pending swapbuffers before we touch the front buffer. Otherwise a > front buffer change may be overwritten by a pending swapbuffer when it > was actually intended to be drawn *after* the swapbuffer. Also a post > swapbuffer front read could actually occur *before* the swapbuffer. > > Patch 1 deals with the dri3 internal synchronization. All frontbuffer > accesses introduce a "swapbuffer barrier" to order with respect to > pending swapbuffers. > The exception is _WaitX because if we call _WaitX we're ordering with > respect to X rendering and if there are pending swapbuffers, an application > would already have called _WaitGL to be able to do the X rendering correctly, > and _WaitGL is ordering with respect to pending swapbuffers. This patch > fixes the piglit copysubbuffer test. > > Patch 2 to 4 deals with having glFinish() order with respect to pending > swapbuffers. The behaviour is actually not correct in that it doesn't wait > for the pending swapbuffers to complete, but a user shouldn't be able to > tell the difference. This patch series is motivated by the fact that the > glXWaitGL man page states that glFinish() can be used instead of glXWaitGL, > and without this series it can't. The functionality is only implemented for > gallium. Other drivers need to provide their own implementation. Ideally > we should have accomplished this without the dri interface changes by > calling an unconditional flush_frontbuffer, but at least the gallium > flush_frontbuffer implementation is relying on us having a fake front which > is not always the case. > > Patch 5 replaces the back-to-fake-front full buffer copies with a swap > during swapbuffers. Should be saving a lot of work when we actually have a > fake front. There were some conserns raised when this was posted as an RFC > that the separate-server-gpu case would be broken as well as the buffer > age functionality. I've audited the code and I think that's not the case. > The piglit buffer age test still reports a pass after this change. The > separate-server-gpu case I guess needs additional testing. > > Tested wih piglit -quick without regressions. > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev