From 295fee8796d6223d7caaa4be000a8abb1e207012 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 16 Nov 2023 13:23:26 -0800 Subject: [PATCH] Support creating `wl_buffer` for multi-planar dmabuf Apparently `I915_y_tiled_ccs` is a 2 plane format. --- src/wayland/buffer.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/wayland/buffer.rs b/src/wayland/buffer.rs index 9e5f381..38bacd6 100644 --- a/src/wayland/buffer.rs +++ b/src/wayland/buffer.rs @@ -88,7 +88,18 @@ impl AppData { let fd = bo.fd().ok()?; let stride = bo.stride().ok()?; let params = self.dmabuf_state.create_params(&self.qh).ok()?; - params.add(fd.as_fd(), 0, 0, stride, modifier.into()); + for i in 0..bo.plane_count().ok()? as i32 { + let plane_fd = bo.fd_for_plane(i).ok()?; + let plane_offset = bo.offset(i).ok()?; + let plane_stride = bo.stride_for_plane(i).ok()?; + params.add( + plane_fd.as_fd(), + i as u32, + plane_offset, + plane_stride, + modifier.into(), + ); + } let buffer = params .create_immed( buffer_info.width as i32,