linux_dmabuf_v1: Implement data_ptr_access

Allow direct access to the pixel data of linux_dmabuf_v1 buffers by
mmapping the FD.  This causes a wait on any outstanding fences and also
triggers the DMA_BUF_SYNC mechanism to do any cache fiddling needed.

This doesn't support multi-planar formats (e.g. YUV420 from hardware
codecs)

I also fix the comment on wlr_renderer.render_buffer_caps (it's used for
textures, not the render target) and update
wlr_renderer_init_wl_display() and
wlr_linux_dmabuf_feedback_v1_init_with_options() to use the renderer's
own claimed buffer_caps instead of hardcoding DMABUF as required.

Loosely based on 46ef2cfa3c
This commit is contained in:
David Turner 2024-06-06 11:16:49 +01:00
parent af43d3b9e7
commit 27bbb91abf
5 changed files with 120 additions and 4 deletions

View file

@ -32,6 +32,9 @@ install_subdir('wlr',
foreach name, have : internal_features
internal_config.set10('HAVE_' + name.underscorify().to_upper(), have)
endforeach
internal_config.set10('HAVE_LINUX_DMA_BUF_H', cc.has_header('linux/dma-buf.h'))
wlr_files += configure_file(
output: 'config.h',
configuration: internal_config,