Hello Kai,

Thank you for your reply. After following the links you provided, I believe
that implementing the DMA feature should take place within the following
file:

https://code.qt.io/cgit/qt/qtwayland.git/tree/src/client/qwaylandshmbackingstore.cpp

Here's my proposed plan for this implementation:

1. Start by checking whether the compositor supports the wl_drm and
linux-DMA-buff protocols.
2. Manually implement both protocols, without relying on the wayland-egl
implementation.
3. Authenticate a DRM device fd through the wl_drm protocol.
4. Verify if the compositor supports the DRM_FORMAT_MOD_LINEAR modifier
using the linux-dma-buff protocol.
5. Create a LINEAR DMA buffer using the GBM library. I propose making this
buffer relatively large to prevent the need for frequent destruction and
recreation of a new buffer when the window is resized.
6. Perform mmap on the DMA buffer.
7. Wrap the mapped buffer with a QImage(), following a similar approach as
it's done with shared memory.

If any of these steps fail, fallback to shared memory.

Do you foresee any potential issues with this approach? Please feel free to
share your thoughts.

Best regards,
Eduardo Hopperdietzel
-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to