[Mesa-dev] [PATCH 0/9] dri2: Swapbuffer update v3.
Thomas Hellstrom
thellstrom at vmware.com
Wed Sep 5 13:36:09 UTC 2018
On 09/05/2018 02:36 PM, Timothy Arceri wrote:
> On 05/09/18 22:09, Thomas Hellstrom wrote:
>> On 09/05/2018 01:45 PM, Timothy Arceri wrote:
>>>
>>>
>>> On 16/08/17 04:31, Thomas Hellstrom wrote:
>>>> Implement back-to-fake-front flips,
>>>> Fix EGL_BUFFER_PRESERVED path.
>>>> Implement dri3 support for GLX_SWAP_EXCHANGE_OML and
>>>> GLX_SWAP_COPY_OML.
>>>>
>>>> The back-to-fake-front flips will save a full buffer copy in the
>>>> case of a
>>>> fake front being enabled and GLX_SWAP_UNDEFINED_OML.
>>>>
>>>> Support for EGL_BUFFER_PRESERVED and GLX_SWAP_X_OML are mostly
>>>> useful for
>>>> things like glretrace if traces are capured with applications
>>>> relying on a
>>>> specific swapbuffer behavior.
>>>>
>>>> The EGL_BUFFER_PRESERVED path previously made sure the present was
>>>> done as
>>>> a copy, but there was nothing making sure that after the present,
>>>> the same back buffer was chosen.
>>>> This has now been changed so that if the previous back buffer is
>>>> idle, we reuse it. Otherwise we grab a new and copy the contents and
>>>> buffer age from the previous back buffer. Server side flips are
>>>> allowed.
>>>>
>>>> GLX_SWAP_COPY_OML will behave like EGL_BUFFER_PRESERVED.
>>>>
>>>> GLX_SWAP_EXCHANGE_OML will behave similarly, except that we try to
>>>> reuse the
>>>> previous fake front as the new back buffer if it's idle. If not, we
>>>> grab
>>>> a new back buffer and copy the contents and buffer age from the old
>>>> fake front.
>>>>
>>>> v2:
>>>> - Split the original patch,
>>>> - Make sure we have a context for blitImage even if we don't have a
>>>> current context.
>>>> - Make sure the delayed backbuffer allocation is performed before
>>>> glXSwapBuffers, glXCopyBuffers and querying buffer age.
>>>> v3:
>>>> - squash three patches related to the same change.
>>>> - Address review comments by Michel Dänzer.
>>>>
>>>> Testing done:
>>>> piglit tests/quick without regressions on svga.
>>>> A modified piglit glx-swap-exchange posted for review on the piglit
>>>> list.
>>>> That test required modifying the dri2 state tracke to advertise
>>>> unconditional
>>>> support for GLX_SWAP_EXCHANGE_OML
>>>
>>> What exactly do I need to do to force this to be advertised? A
>>> bigger question is what more is required to expose
>>> GLX_SWAP_EXCHANGE_OML more generally?
>>>
>>> It seems this is required for a few games running on wine [1].
>>>
>>> [1]
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.freedesktop.org%2Fshow_bug.cgi%3Fid%3D97516&data=02%7C01%7Cthellstrom%40vmware.com%7Cc71a9d949e56467614c108d6132c3212%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C636717488813233512&sdata=%2FmIsVYyD7Uvg2DwynXKJS3Am%2FEKiyBVz1d%2BSwjIq2Jw%3D&reserved=0
>>>
>>>
>>>
>>
>> You need to get the X server AIGLX to advertize it, because the
>> available features are the intersection of the X server AIGLX
>> features and the dri driver features, even if this is purely
>> implemented in the dri client. The reason GLX works this way is that
>> after you've choosen your config you can either choose to select a
>> direct or indirect context. That was a poor design.
>>
>> Now the problem is that AIGLX isn't able to support it, because it
>> uses the dri driver dri2 path rather than the dri3 path, and I never
>> got to modifying AIGLX to use the dri3 path. Didn't think it was
>> worth the extra work.
>
> Hmm ... thanks for the info. I should at least add some of this to the
> bug report.
>
>>
>> In any case, you can hack-enable GLX_SWAP_EXCHANGE_OML if the client
>> is using dri3 by adding __DRI_ATTRIB_SWAP_EXCHANGE to
>> back_buffer_modes[] in src/gallium/state_trackers/dri/dri_screen.c,
>> recompile and make sure the X server also picks up the recompiled
>> driver. That is if you have a gallium driver. This worked fine with
>> vmwgfx at the time I pushed the patch as tested by the corresponding
>> piglit test.
>
> I did try this already with radeonsi but it didn't seem to work. I
> even restarted my PC to make sure the correct driver was selected.
How did you test? I'll give it a test on vmwgfx + piglit.
/Thomas
>
>>
>> For the other dri drivers there should be a similar way to set the
>> back_buffer_modes[].
>>
>> Thanks,
>> Thomas
>>
>>>> A piglit glx-swap-copy test derived from the glx-swap-exchange test.
>>>> Not posted yet.
>>>>
>>>>
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fmesa-dev&data=02%7C01%7Cthellstrom%40vmware.com%7Cc71a9d949e56467614c108d6132c3212%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C636717488813243551&sdata=iG47YiO49K4vh1C0aV5SiSX%2BlthujiFPXro5DiDNInY%3D&reserved=0
>>>>
>>>>
>>
More information about the mesa-dev
mailing list