Commit 78fa4dba authored by Kristian H. Kristensen's avatar Kristian H. Kristensen Committed by Commit Bot

exo/clients: Pass modifiers when creating dma-buf buffers

This makes the sample clients pass along the format modifier when
creating buffers.  The modifier describes the buffer layout (linear,
tiled, compressed and such) and lets us use more efficient layouts.

BUG=b:145579089, b:79682290
TEST=wayland_rects_client --use-drm=msm and verify modifiers get passed

Change-Id: Ic5cbd5e5a014d26bed9ac5ea4d10f4037cc60fd5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2314983
Commit-Queue: Kristian H. Kristensen <hoegsberg@chromium.org>
Reviewed-by: default avatarFritz Koenig <frkoenig@chromium.org>
Reviewed-by: default avatarDaniele Castagna <dcastagna@chromium.org>
Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793365}
parent 28653ff4
......@@ -916,6 +916,7 @@ std::unique_ptr<ClientBase::Buffer> ClientBase::CreateDrmBuffer(
buffer->params.reset(
zwp_linux_dmabuf_v1_create_params(globals_.linux_dmabuf.get()));
uint64_t modifier = gbm_bo_get_modifier(buffer->bo.get());
for (size_t i = 0;
i < static_cast<size_t>(gbm_bo_get_plane_count(buffer->bo.get()));
++i) {
......@@ -923,7 +924,7 @@ std::unique_ptr<ClientBase::Buffer> ClientBase::CreateDrmBuffer(
uint32_t stride = gbm_bo_get_stride_for_plane(buffer->bo.get(), i);
uint32_t offset = gbm_bo_get_offset(buffer->bo.get(), i);
zwp_linux_buffer_params_v1_add(buffer->params.get(), fd.get(), i, offset,
stride, 0, 0);
stride, modifier >> 32, modifier);
}
uint32_t flags = 0;
if (y_invert)
......@@ -948,6 +949,10 @@ std::unique_ptr<ClientBase::Buffer> ClientBase::CreateDrmBuffer(
gbm_bo_get_stride_for_plane(buffer->bo.get(), 0),
EGL_DMA_BUF_PLANE0_OFFSET_EXT,
0,
EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT,
modifier,
EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT,
modifier >> 32,
EGL_NONE};
EGLImageKHR image = eglCreateImageKHR(
eglGetCurrentDisplay(), EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment