On Thu, Nov 8, 2012 at 3:04 PM, Michel Dänzer <mic...@daenzer.net> wrote:
> On Don, 2012-11-08 at 14:48 +0100, Marek Olšák wrote:
>> Flushing here is unnecessary. The drivers which always flush in dri2Throttle
>> or __DRI2flushExtensionRec::flush are just wasting time here.
>>
>> st/mesa is updated to do what glFlush does.
>>
>> XXX I guess some other drivers should be updated to flush by themselves
>>     if they don't?
>> ---
>>  src/glx/glxcmds.c                    |    4 ----
>>  src/mesa/state_tracker/st_cb_flush.c |    1 +
>>  2 files changed, 1 insertion(+), 4 deletions(-)
>>
>> diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
>> index 394bf59..22392bc 100644
>> --- a/src/glx/glxcmds.c
>> +++ b/src/glx/glxcmds.c
>> @@ -781,10 +781,6 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
>>        __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable);
>>
>>        if (pdraw != NULL) {
>> -         if (gc && drawable == gc->currentDrawable) {
>> -            glFlush();
>> -         }
>> -
>
> This behaviour is described rather explicitly in the GLX spec, so it
> seems kind of weird to remove this and then ensure the glXSwapBuffers
> semantics in non-GLX code. Would it be possible to eliminate the flushes
> in non-GLX code instead, or at least make them less expensive?

The GLX spec says glFlush should be performed, not that it must be
performed by explicitly calling "glFlush" inside libGL and before
dri2SwapBuffers. The problem is glFlush is the first flush here, not
the last one. If MSAA resolve or colorbuffer decompression had to be
done before SwapBuffers, we would want to do that *before* this
glFlush call. The glFlush call is completely useless if there still is
work to be done to finish the frame even if it's just creating the
fence for throttling, or worse, a complex MLAA resolve operation.

I'm open to suggestions how to resolve this flushing mess, but I don't
see any other way at the moment.

Marek
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to