Application calling DRI2SwapBuffers twice without updating buffers
Jesse Barnes
jbarnes at virtuousgeek.org
Mon Sep 13 09:20:51 PDT 2010
On Mon, 13 Sep 2010 11:57:51 +0300
Pauli Nieminen <ext-pauli.nieminen at nokia.com> wrote:
> Hi,
>
> It is possible for client to call DRI2SwapBuffers twice in row even tough
> client should update back buffer in between. Problem is exposed when
> application does stupid thing like:
>
> renderScene();
> glXSwapBuffers();
> /* Might be long delay between but no rendering */
> glXSwapBuffers();
>
> glx and egl specifications don't say anything if driver may fail in this case.
> Only relevant part is that the back will hold undefined content. Second swap
> will results front buffer holding undefined content. Which makes me think that
> specification makes above code application error only that shouldn't be
> detected.
>
> Is ddx driver allowed to fail the swap in this case?
>
> There is some special case when application doesn't have any back buffer.
> Hardware limitation forces driver to share buffers between applications. Too
> bad sharing causes that new application might takes over the back buffer
> between swaps.
>
> The special case where there is no valid back for client because client
> failed to render between swapbuffers has to fail either silently or with error.
> I would prefer to return error that is mostly likely ignored by application.
>
> Should driver fail all swaps that would result to the front buffer to have
> completely undefined content?
>
> There could be simple detection for the application trying to show random
> content. This would catch a few trivial application errors that would cause
> corruption in screen.
>
> Detecting application errors (if it can be done cheaply) would help application
> developers understand that their code is causing problems.
>
> If driver is utilising invalidate events detection can't happen in server
> side.
We could print a warning in this case at the very least. Maybe if we
try to swap again with the same dri2 invalidate stamp we could print an
error. Kristian?
Jesse
--
Jesse Barnes, Intel Open Source Technology Center
More information about the xorg-devel
mailing list