Am 17.06.24 um 16:50 schrieb Michel Dänzer:
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.

But don't you then need to wait for the blit to finish?

Regards,
Christian.



6. ioctl(DMA_BUF_IOCTL_SYNC, &{ .flags = DMA_BUF_SYNC_START | DMA_BUF_SYNC_READ 
})
gbm_bo_map() should do this internally if needed.


7. pixman_blt()
8. gbm_bo_unmap()


Reply via email to