Does gbm_bo_map() implicitly synchronise?
Chema Casanova
jmcasanova at igalia.com
Thu Jun 20 09:04:48 UTC 2024
El 17/6/24 a las 12:29, Pierre Ossman escribió:
>
>> So if you want to do some rendering with OpenGL and then see the
>> result in a buffer memory mapping the correct sequence would be the
>> following:
>>
>> 1. Issue OpenGL rendering commands.
>> 2. Call glFlush() to make sure the hw actually starts working on the
>> rendering.
>> 3. Call select() on the DMA-buf file descriptor to wait for the
>> rendering to complete.
>> 4. Use DMA_BUF_IOCTL_SYNC to make the rendering result CPU visible.
>>
>
> What I want to do is implement the X server side of DRI3 in just CPU.
> It works for every application I've tested except gnome-shell.
You can have a look at the Open MR we created two years ago for Xserver
[1] "modesetting: Add DRI3 support to modesetting driver with glamor
disabled". We are using it downstream for Raspberry Pi OS to enable on
RPi1-3 GPU accelerated client applications, while the Xserver is using
software composition with pixman.
[1] https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/945
We recently identified that it has an issue[2] with synchronization on
the server side when after glFlush() in the client side the command list
takes too much (several seconds) to finish the rendering.
[2] https://gitlab.freedesktop.org/mesa/mesa/-/issues/11228
>
> I would assume that 1. and 2. are supposed to be done by the X client,
> i.e. gnome-shell?
>
> What I need to be able to do is access the result of that, once the X
> client tries to draw using that GBM backed pixmap (e.g. using
> PresentPixmap).
>
> So far, we've only tested Intel GPUs, but we are setting up Nvidia and
> AMD GPUs at the moment. It will be interesting to see if the issue
> remains on those or not.
>
Regards,
Chema Casanova
More information about the mesa-dev
mailing list