Does gbm_bo_map() implicitly synchronise?

Pierre Ossman ossman at cendio.se
Mon Jun 17 15:27:22 UTC 2024


On 17/06/2024 16:50, Michel Dänzer wrote:
> On 2024-06-17 12:29, Pierre Ossman wrote:
>>
>> Just to avoid any uncertainty, are both of these things done implicitly by gbm_bo_map()/gbm_bo_unmap()?
>>
>> I did test adding those steps just in case, but unfortunately did not see an improvement. My order was:
>>
>> 1. gbm_bo_import(GBM_BO_USE_RENDERING)
>> 2. gbm_bo_get_fd()
>> 3. Wait for client to request displaying the buffer
>> 4. gbm_bo_map(GBM_BO_TRANSFER_READ)
>> 5. select(fd+1, &fds, NULL, NULL, NULL)
> 
> *If* select() is needed, it needs to be before gbm_bo_map(), because the latter may perform a blit from the real BO to a staging one for CPU access.
> 

Can I know whether it is needed or not? Or should I be cautious and 
always do it?

I also assumed I should do select() with readfds set when I want to 
read, and writefds set when I want to write?

Still, after moving it before the map the issue unfortunately remains. :/

A recording of the issue is available here, in case the behaviour rings 
a bell for anyone:

http://www.cendio.com/~ossman/dri3/Screencast%20from%202024-06-17%2017-06-50.webm

(tried to include it as an attachment, but that email was filtered out 
somewhere)

Regards,
-- 
Pierre Ossman           Software Development
Cendio AB               https://cendio.com
Teknikringen 8          https://twitter.com/ThinLinc
583 30 Linköping        https://facebook.com/ThinLinc
Phone: +46-13-214600

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?



More information about the mesa-dev mailing list