Message ID | 20230815003526.631-6-gurchetansingh@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | gfxstream + rutabaga_gfx | expand |
On Tue, 15 Aug 2023 03:35, Gurchetan Singh <gurchetansingh@chromium.org> wrote: >This modifies the common virtio-gpu.h file have the fields and >defintions needed by gfxstream/rutabaga, by VirtioGpuRutabaga. > >The command to run these would be: > >Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> >Tested-by: Alyssa Ross <hi@alyssa.is> >--- >-device virtio-vga-rutabaga,capset_names=gfxstream-vulkan:cross-domain, \ > wayland_socket_path=/run/user/1000/wayland-0,hostmem=8G \ I think the commit message got mangled here, the commit trailers got between "The command to run these would be:" and the CLI flags. By the way minor typo, splitting the device+commas argument with white-space will not get parsed correctly, "wayland_socket_path..." should be immediately after the previous comma. Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> Tested-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> > >v1: void *rutabaga --> struct rutabaga *rutabaga (Akihiko) > have a separate rutabaga device instead of using GL device (Bernard) > >v2: VirtioGpuRutabaga --> VirtIOGPURutabaga (Akihiko) > move MemoryRegionInfo into VirtIOGPURutabaga (Akihiko) > remove 'ctx' field (Akihiko) > remove 'rutabaga_active' > > include/hw/virtio/virtio-gpu.h | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > >diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h >index 55973e112f..e2a07e68d9 100644 >--- a/include/hw/virtio/virtio-gpu.h >+++ b/include/hw/virtio/virtio-gpu.h >@@ -38,6 +38,9 @@ OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPUGL, VIRTIO_GPU_GL) > #define TYPE_VHOST_USER_GPU "vhost-user-gpu" > OBJECT_DECLARE_SIMPLE_TYPE(VhostUserGPU, VHOST_USER_GPU) > >+#define TYPE_VIRTIO_GPU_RUTABAGA "virtio-gpu-rutabaga-device" >+OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPURutabaga, VIRTIO_GPU_RUTABAGA) >+ > struct virtio_gpu_simple_resource { > uint32_t resource_id; > uint32_t width; >@@ -94,6 +97,7 @@ enum virtio_gpu_base_conf_flags { > VIRTIO_GPU_FLAG_DMABUF_ENABLED, > VIRTIO_GPU_FLAG_BLOB_ENABLED, > VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED, >+ VIRTIO_GPU_FLAG_RUTABAGA_ENABLED, > }; > > #define virtio_gpu_virgl_enabled(_cfg) \ >@@ -108,6 +112,8 @@ enum virtio_gpu_base_conf_flags { > (_cfg.flags & (1 << VIRTIO_GPU_FLAG_BLOB_ENABLED)) > #define virtio_gpu_context_init_enabled(_cfg) \ > (_cfg.flags & (1 << VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED)) >+#define virtio_gpu_rutabaga_enabled(_cfg) \ >+ (_cfg.flags & (1 << VIRTIO_GPU_FLAG_RUTABAGA_ENABLED)) > #define virtio_gpu_hostmem_enabled(_cfg) \ > (_cfg.hostmem > 0) > >@@ -232,6 +238,28 @@ struct VhostUserGPU { > bool backend_blocked; > }; > >+#define MAX_SLOTS 4096 >+ >+struct MemoryRegionInfo { >+ int used; >+ MemoryRegion mr; >+ uint32_t resource_id; >+}; >+ >+struct rutabaga; >+ >+struct VirtIOGPURutabaga { >+ struct VirtIOGPU parent_obj; >+ >+ struct MemoryRegionInfo memory_regions[MAX_SLOTS]; >+ char *capset_names; >+ char *wayland_socket_path; >+ char *wsi; >+ bool headless; >+ uint32_t num_capsets; >+ struct rutabaga *rutabaga; >+}; >+ > #define VIRTIO_GPU_FILL_CMD(out) do { \ > size_t s; \ > s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ >-- >2.41.0.694.ge786442a9b-goog > >
diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h index 55973e112f..e2a07e68d9 100644 --- a/include/hw/virtio/virtio-gpu.h +++ b/include/hw/virtio/virtio-gpu.h @@ -38,6 +38,9 @@ OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPUGL, VIRTIO_GPU_GL) #define TYPE_VHOST_USER_GPU "vhost-user-gpu" OBJECT_DECLARE_SIMPLE_TYPE(VhostUserGPU, VHOST_USER_GPU) +#define TYPE_VIRTIO_GPU_RUTABAGA "virtio-gpu-rutabaga-device" +OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPURutabaga, VIRTIO_GPU_RUTABAGA) + struct virtio_gpu_simple_resource { uint32_t resource_id; uint32_t width; @@ -94,6 +97,7 @@ enum virtio_gpu_base_conf_flags { VIRTIO_GPU_FLAG_DMABUF_ENABLED, VIRTIO_GPU_FLAG_BLOB_ENABLED, VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED, + VIRTIO_GPU_FLAG_RUTABAGA_ENABLED, }; #define virtio_gpu_virgl_enabled(_cfg) \ @@ -108,6 +112,8 @@ enum virtio_gpu_base_conf_flags { (_cfg.flags & (1 << VIRTIO_GPU_FLAG_BLOB_ENABLED)) #define virtio_gpu_context_init_enabled(_cfg) \ (_cfg.flags & (1 << VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED)) +#define virtio_gpu_rutabaga_enabled(_cfg) \ + (_cfg.flags & (1 << VIRTIO_GPU_FLAG_RUTABAGA_ENABLED)) #define virtio_gpu_hostmem_enabled(_cfg) \ (_cfg.hostmem > 0) @@ -232,6 +238,28 @@ struct VhostUserGPU { bool backend_blocked; }; +#define MAX_SLOTS 4096 + +struct MemoryRegionInfo { + int used; + MemoryRegion mr; + uint32_t resource_id; +}; + +struct rutabaga; + +struct VirtIOGPURutabaga { + struct VirtIOGPU parent_obj; + + struct MemoryRegionInfo memory_regions[MAX_SLOTS]; + char *capset_names; + char *wayland_socket_path; + char *wsi; + bool headless; + uint32_t num_capsets; + struct rutabaga *rutabaga; +}; + #define VIRTIO_GPU_FILL_CMD(out) do { \ size_t s; \ s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \