aboutsummaryrefslogtreecommitdiff
path: root/contrib/vhost-user-gpu/vugpu.h
diff options
context:
space:
mode:
authorErico Nunes <ernunes@redhat.com>2023-07-14 17:38:59 +0200
committerMarc-André Lureau <marcandre.lureau@redhat.com>2023-09-12 10:37:01 +0400
commite3c82fe04f31b8d6c17b0a17a179f1bbb8454aa1 (patch)
tree38d4c1eb6e9bbd3073fa0406aee36c4436c31de2 /contrib/vhost-user-gpu/vugpu.h
parent75f217b4addbc688d7fbff5dcc4c8d699d1f7060 (diff)
downloadqemu-e3c82fe04f31b8d6c17b0a17a179f1bbb8454aa1.zip
qemu-e3c82fe04f31b8d6c17b0a17a179f1bbb8454aa1.tar.gz
qemu-e3c82fe04f31b8d6c17b0a17a179f1bbb8454aa1.tar.bz2
contrib/vhost-user-gpu: add support for sending dmabuf modifiers
virglrenderer recently added virgl_renderer_resource_get_info_ext as a new api, which gets resource information, including dmabuf modifiers. We have to support dmabuf modifiers since the driver may choose to allocate buffers with these modifiers for efficiency, and importing buffers without modifiers information may result in completely broken rendering. Signed-off-by: Erico Nunes <ernunes@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Sergio Lopez <slp@redhat.com> Message-Id: <20230714153900.475857-3-ernunes@redhat.com>
Diffstat (limited to 'contrib/vhost-user-gpu/vugpu.h')
-rw-r--r--contrib/vhost-user-gpu/vugpu.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/contrib/vhost-user-gpu/vugpu.h b/contrib/vhost-user-gpu/vugpu.h
index f0f2069..509b679 100644
--- a/contrib/vhost-user-gpu/vugpu.h
+++ b/contrib/vhost-user-gpu/vugpu.h
@@ -37,6 +37,7 @@ typedef enum VhostUserGpuRequest {
VHOST_USER_GPU_DMABUF_SCANOUT,
VHOST_USER_GPU_DMABUF_UPDATE,
VHOST_USER_GPU_GET_EDID,
+ VHOST_USER_GPU_DMABUF_SCANOUT2,
} VhostUserGpuRequest;
typedef struct VhostUserGpuDisplayInfoReply {
@@ -84,6 +85,11 @@ typedef struct VhostUserGpuDMABUFScanout {
int fd_drm_fourcc;
} QEMU_PACKED VhostUserGpuDMABUFScanout;
+typedef struct VhostUserGpuDMABUFScanout2 {
+ struct VhostUserGpuDMABUFScanout dmabuf_scanout;
+ uint64_t modifier;
+} QEMU_PACKED VhostUserGpuDMABUFScanout2;
+
typedef struct VhostUserGpuEdidRequest {
uint32_t scanout_id;
} QEMU_PACKED VhostUserGpuEdidRequest;
@@ -98,6 +104,7 @@ typedef struct VhostUserGpuMsg {
VhostUserGpuScanout scanout;
VhostUserGpuUpdate update;
VhostUserGpuDMABUFScanout dmabuf_scanout;
+ VhostUserGpuDMABUFScanout2 dmabuf_scanout2;
VhostUserGpuEdidRequest edid_req;
struct virtio_gpu_resp_edid resp_edid;
struct virtio_gpu_resp_display_info display_info;
@@ -112,6 +119,7 @@ static VhostUserGpuMsg m __attribute__ ((unused));
#define VHOST_USER_GPU_MSG_FLAG_REPLY 0x4
#define VHOST_USER_GPU_PROTOCOL_F_EDID 0
+#define VHOST_USER_GPU_PROTOCOL_F_DMABUF2 1
struct virtio_gpu_scanout {
uint32_t width, height;
@@ -132,6 +140,7 @@ typedef struct VuGpu {
bool virgl;
bool virgl_inited;
bool edid_inited;
+ bool use_modifiers;
uint32_t inflight;
struct virtio_gpu_scanout scanout[VIRTIO_GPU_MAX_SCANOUTS];