[Mesa-dev] [PATCH] vl/dri3: remove the wait before getting back buffer

Liu, Leo Leo.Liu at amd.com
Thu Mar 21 19:10:08 UTC 2019


On 2019-03-20 1:56 p.m., Michel Dänzer wrote:
> On 2019-03-20 4:42 p.m., Liu, Leo wrote:
>> The wait here is unnecessary since we got a pool of back buffers,
>> and the wait for swap buffer will happen before the present pixmap,
>> at the same time the previous back buffer will be put back to pool
>> for reuse after the check for PresentIdleNotify event
>>
>> Signed-off-by: Leo Liu <leo.liu at amd.com>
>>
>>   [...]
>>
>> @@ -626,13 +621,6 @@ vl_dri3_screen_texture_from_drawable(struct vl_screen *vscreen, void *drawable)
>>      if (!dri3_set_drawable(scrn, (Drawable)drawable))
>>         return NULL;
>>   
>> -   if (scrn->flushed) {
>> -      while (scrn->special_event && scrn->recv_sbc < scrn->send_sbc)
>> -         if (!dri3_wait_present_events(scrn))
>> -            return NULL;
>> -   }
>> -   scrn->flushed = false;
>> -
>>      buffer = (scrn->is_pixmap) ?
>>               dri3_get_front_buffer(scrn) :
>>               dri3_get_back_buffer(scrn);
>>
> Hmm. Is the wait here not necessary before getting a pixmap's front
> buffer either though? Maybe wait only here for a pixmap, and only in
> vl_dri3_flush_frontbuffer for a window?
>
> Sorry I didn't realize this earlier.
>
The pixmap case is used by Totem player, or previous GLX case for MPV 
player, and the front buffer of the pixmap is a temporary buffer, and 
later as source for GL to present.

For pixmap case, there is no need to wait,  and the dri3 present wait 
before dri3_get_front_buffer() is not get called, because scrn->flushed 
will never be true, since our presentation flush code is not used by 
this case.

Thanks,

Leo



More information about the mesa-dev mailing list