Message ID | 20250324081922.359369-4-yuq825@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | ui: support multi plane texture | expand |
On Mon, Mar 24, 2025 at 12:19 PM <yuq825@gmail.com> wrote: > > From: Qiang Yu <yuq825@gmail.com> > > 0 is used as DRM_FORMAT_MOD_LINEAR already. > > Signed-off-by: Qiang Yu <yuq825@gmail.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > hw/display/vhost-user-gpu.c | 3 ++- > hw/display/virtio-gpu-udmabuf.c | 4 +++- > ui/egl-helpers.c | 3 ++- > 3 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c > index a7949c7078..a6a510db65 100644 > --- a/hw/display/vhost-user-gpu.c > +++ b/hw/display/vhost-user-gpu.c > @@ -18,6 +18,7 @@ > #include "chardev/char-fe.h" > #include "qapi/error.h" > #include "migration/blocker.h" > +#include "standard-headers/drm/drm_fourcc.h" > > typedef enum VhostUserGpuRequest { > VHOST_USER_GPU_NONE = 0, > @@ -251,7 +252,7 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg) > int fd = qemu_chr_fe_get_msgfd(&g->vhost_chr); > uint32_t offset = 0; > uint32_t stride = m->fd_stride; > - uint64_t modifier = 0; > + uint64_t modifier = DRM_FORMAT_MOD_INVALID; > QemuDmaBuf *dmabuf; > > if (m->scanout_id >= g->parent_obj.conf.max_outputs) { > diff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabuf.c > index 34fbe05b7a..de6ce53f16 100644 > --- a/hw/display/virtio-gpu-udmabuf.c > +++ b/hw/display/virtio-gpu-udmabuf.c > @@ -25,6 +25,7 @@ > #include <linux/memfd.h> > #include "qemu/memfd.h" > #include "standard-headers/linux/udmabuf.h" > +#include "standard-headers/drm/drm_fourcc.h" > > static void virtio_gpu_create_udmabuf(struct virtio_gpu_simple_resource *res) > { > @@ -187,7 +188,8 @@ static VGPUDMABuf > &offset, &fb->stride, > r->x, r->y, fb->width, fb->height, > qemu_pixman_to_drm_format(fb->format), > - 0, &res->dmabuf_fd, 1, true, false); > + DRM_FORMAT_MOD_INVALID, &res->dmabuf_fd, > + 1, true, false); > dmabuf->scanout_id = scanout_id; > QTAILQ_INSERT_HEAD(&g->dmabuf.bufs, dmabuf, next); > > diff --git a/ui/egl-helpers.c b/ui/egl-helpers.c > index 45b1b0b700..970286325f 100644 > --- a/ui/egl-helpers.c > +++ b/ui/egl-helpers.c > @@ -23,6 +23,7 @@ > #include "system/system.h" > #include "qapi/error.h" > #include "trace.h" > +#include "standard-headers/drm/drm_fourcc.h" > > EGLDisplay *qemu_egl_display; > EGLConfig qemu_egl_config; > @@ -333,7 +334,7 @@ void egl_dmabuf_import_texture(QemuDmaBuf *dmabuf) > attrs[i++] = qemu_dmabuf_get_stride(dmabuf)[0]; > attrs[i++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT; > attrs[i++] = 0; > - if (modifier) { > + if (modifier != DRM_FORMAT_MOD_INVALID) { > attrs[i++] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT; > attrs[i++] = (modifier >> 0) & 0xffffffff; > attrs[i++] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT; > -- > 2.43.0 >
diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c index a7949c7078..a6a510db65 100644 --- a/hw/display/vhost-user-gpu.c +++ b/hw/display/vhost-user-gpu.c @@ -18,6 +18,7 @@ #include "chardev/char-fe.h" #include "qapi/error.h" #include "migration/blocker.h" +#include "standard-headers/drm/drm_fourcc.h" typedef enum VhostUserGpuRequest { VHOST_USER_GPU_NONE = 0, @@ -251,7 +252,7 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg) int fd = qemu_chr_fe_get_msgfd(&g->vhost_chr); uint32_t offset = 0; uint32_t stride = m->fd_stride; - uint64_t modifier = 0; + uint64_t modifier = DRM_FORMAT_MOD_INVALID; QemuDmaBuf *dmabuf; if (m->scanout_id >= g->parent_obj.conf.max_outputs) { diff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabuf.c index 34fbe05b7a..de6ce53f16 100644 --- a/hw/display/virtio-gpu-udmabuf.c +++ b/hw/display/virtio-gpu-udmabuf.c @@ -25,6 +25,7 @@ #include <linux/memfd.h> #include "qemu/memfd.h" #include "standard-headers/linux/udmabuf.h" +#include "standard-headers/drm/drm_fourcc.h" static void virtio_gpu_create_udmabuf(struct virtio_gpu_simple_resource *res) { @@ -187,7 +188,8 @@ static VGPUDMABuf &offset, &fb->stride, r->x, r->y, fb->width, fb->height, qemu_pixman_to_drm_format(fb->format), - 0, &res->dmabuf_fd, 1, true, false); + DRM_FORMAT_MOD_INVALID, &res->dmabuf_fd, + 1, true, false); dmabuf->scanout_id = scanout_id; QTAILQ_INSERT_HEAD(&g->dmabuf.bufs, dmabuf, next); diff --git a/ui/egl-helpers.c b/ui/egl-helpers.c index 45b1b0b700..970286325f 100644 --- a/ui/egl-helpers.c +++ b/ui/egl-helpers.c @@ -23,6 +23,7 @@ #include "system/system.h" #include "qapi/error.h" #include "trace.h" +#include "standard-headers/drm/drm_fourcc.h" EGLDisplay *qemu_egl_display; EGLConfig qemu_egl_config; @@ -333,7 +334,7 @@ void egl_dmabuf_import_texture(QemuDmaBuf *dmabuf) attrs[i++] = qemu_dmabuf_get_stride(dmabuf)[0]; attrs[i++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT; attrs[i++] = 0; - if (modifier) { + if (modifier != DRM_FORMAT_MOD_INVALID) { attrs[i++] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT; attrs[i++] = (modifier >> 0) & 0xffffffff; attrs[i++] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT;