On 2024-06-24 21:08, James Jones wrote:
> FWIW, the NVIDIA binary driver's implementation of gbm_bo_map/unmap()
> 
> 1) Don't do any synchronization against in-flight work. The assumption is 
> that if the content is going to be read, the API writing the data has 
> established that coherence. Likewise, if it's going to be written, the API 
> reading it afterwards does any invalidates or whatever are needed for 
> coherence.
> 
> 2) We don't blit anything or format convert, because our GBM implementation 
> has no DMA engine access, and I'd like to keep it that way. Setting up a 
> DMA-capable driver instance is much more expensive as far as runtime 
> resources than setting up a simple allocator+mmap driver, at least in our 
> driver architecture. Our GBM map just does an mmap(), and if it's not linear, 
> you're not going to be able to interpret the data unless you've read up on 
> our tiling formats. I'm aware this is different from Mesa, and no one has 
> complained thus far.

I've seen at least one webkitgtk issue report about gbm_bo_map not working as 
intended with nvidia.

gbm_bo_map definitely has to handle tiling, that's one of its main purposes.

It also really has to handle implicit synchronization, since there's no GBM API 
for explicit synchronization.


Just doing a direct mmap for gbm_bo_map can be bad for other reasons as well. 
E.g. if the BO storage is in VRAM and the application does CPU reads, it'll 
fall down a performance cliff.


-- 
Earthling Michel Dänzer            |                  https://redhat.com
Libre software enthusiast          |         Mesa and Xwayland developer

Reply via email to