Message ID | 20230815003526.631-9-gurchetansingh@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | gfxstream + rutabaga_gfx | expand |
Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> Tested-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> On Tue, 15 Aug 2023 03:35, Gurchetan Singh <gurchetansingh@chromium.org> wrote: >This change enables rutabaga to receive virtio-gpu-3d hypercalls >when it is active. > >Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> >Tested-by: Alyssa Ross <hi@alyssa.is> >--- >v3: Whitespace fix (Akihiko) > > hw/display/virtio-gpu-base.c | 3 ++- > hw/display/virtio-gpu.c | 5 +++-- > softmmu/qdev-monitor.c | 3 +++ > softmmu/vl.c | 1 + > 4 files changed, 9 insertions(+), 3 deletions(-) > >diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c >index 4f2b0ba1f3..50c5373b65 100644 >--- a/hw/display/virtio-gpu-base.c >+++ b/hw/display/virtio-gpu-base.c >@@ -223,7 +223,8 @@ virtio_gpu_base_get_features(VirtIODevice *vdev, uint64_t features, > { > VirtIOGPUBase *g = VIRTIO_GPU_BASE(vdev); > >- if (virtio_gpu_virgl_enabled(g->conf)) { >+ if (virtio_gpu_virgl_enabled(g->conf) || >+ virtio_gpu_rutabaga_enabled(g->conf)) { > features |= (1 << VIRTIO_GPU_F_VIRGL); > } > if (virtio_gpu_edid_enabled(g->conf)) { >diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c >index 3e658f1fef..08e170e029 100644 >--- a/hw/display/virtio-gpu.c >+++ b/hw/display/virtio-gpu.c >@@ -1361,8 +1361,9 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp) > VirtIOGPU *g = VIRTIO_GPU(qdev); > > if (virtio_gpu_blob_enabled(g->parent_obj.conf)) { >- if (!virtio_gpu_have_udmabuf()) { >- error_setg(errp, "cannot enable blob resources without udmabuf"); >+ if (!virtio_gpu_have_udmabuf() && >+ !virtio_gpu_rutabaga_enabled(g->parent_obj.conf)) { >+ error_setg(errp, "need udmabuf or rutabaga for blob resources"); > return; > } > >diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c >index 74f4e41338..1b8005ae55 100644 >--- a/softmmu/qdev-monitor.c >+++ b/softmmu/qdev-monitor.c >@@ -86,6 +86,9 @@ static const QDevAlias qdev_alias_table[] = { > { "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_VIRTIO_PCI }, > { "virtio-gpu-gl-device", "virtio-gpu-gl", QEMU_ARCH_VIRTIO_MMIO }, > { "virtio-gpu-gl-pci", "virtio-gpu-gl", QEMU_ARCH_VIRTIO_PCI }, >+ { "virtio-gpu-rutabaga-device", "virtio-gpu-rutabaga", >+ QEMU_ARCH_VIRTIO_MMIO }, >+ { "virtio-gpu-rutabaga-pci", "virtio-gpu-rutabaga", QEMU_ARCH_VIRTIO_PCI }, > { "virtio-input-host-device", "virtio-input-host", QEMU_ARCH_VIRTIO_MMIO }, > { "virtio-input-host-ccw", "virtio-input-host", QEMU_ARCH_VIRTIO_CCW }, > { "virtio-input-host-pci", "virtio-input-host", QEMU_ARCH_VIRTIO_PCI }, >diff --git a/softmmu/vl.c b/softmmu/vl.c >index b0b96f67fa..2f98eefdf3 100644 >--- a/softmmu/vl.c >+++ b/softmmu/vl.c >@@ -216,6 +216,7 @@ static struct { > { .driver = "ati-vga", .flag = &default_vga }, > { .driver = "vhost-user-vga", .flag = &default_vga }, > { .driver = "virtio-vga-gl", .flag = &default_vga }, >+ { .driver = "virtio-vga-rutabaga", .flag = &default_vga }, > }; > > static QemuOptsList qemu_rtc_opts = { >-- >2.41.0.694.ge786442a9b-goog > >
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index 4f2b0ba1f3..50c5373b65 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -223,7 +223,8 @@ virtio_gpu_base_get_features(VirtIODevice *vdev, uint64_t features, { VirtIOGPUBase *g = VIRTIO_GPU_BASE(vdev); - if (virtio_gpu_virgl_enabled(g->conf)) { + if (virtio_gpu_virgl_enabled(g->conf) || + virtio_gpu_rutabaga_enabled(g->conf)) { features |= (1 << VIRTIO_GPU_F_VIRGL); } if (virtio_gpu_edid_enabled(g->conf)) { diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 3e658f1fef..08e170e029 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1361,8 +1361,9 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp) VirtIOGPU *g = VIRTIO_GPU(qdev); if (virtio_gpu_blob_enabled(g->parent_obj.conf)) { - if (!virtio_gpu_have_udmabuf()) { - error_setg(errp, "cannot enable blob resources without udmabuf"); + if (!virtio_gpu_have_udmabuf() && + !virtio_gpu_rutabaga_enabled(g->parent_obj.conf)) { + error_setg(errp, "need udmabuf or rutabaga for blob resources"); return; } diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c index 74f4e41338..1b8005ae55 100644 --- a/softmmu/qdev-monitor.c +++ b/softmmu/qdev-monitor.c @@ -86,6 +86,9 @@ static const QDevAlias qdev_alias_table[] = { { "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_VIRTIO_PCI }, { "virtio-gpu-gl-device", "virtio-gpu-gl", QEMU_ARCH_VIRTIO_MMIO }, { "virtio-gpu-gl-pci", "virtio-gpu-gl", QEMU_ARCH_VIRTIO_PCI }, + { "virtio-gpu-rutabaga-device", "virtio-gpu-rutabaga", + QEMU_ARCH_VIRTIO_MMIO }, + { "virtio-gpu-rutabaga-pci", "virtio-gpu-rutabaga", QEMU_ARCH_VIRTIO_PCI }, { "virtio-input-host-device", "virtio-input-host", QEMU_ARCH_VIRTIO_MMIO }, { "virtio-input-host-ccw", "virtio-input-host", QEMU_ARCH_VIRTIO_CCW }, { "virtio-input-host-pci", "virtio-input-host", QEMU_ARCH_VIRTIO_PCI }, diff --git a/softmmu/vl.c b/softmmu/vl.c index b0b96f67fa..2f98eefdf3 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -216,6 +216,7 @@ static struct { { .driver = "ati-vga", .flag = &default_vga }, { .driver = "vhost-user-vga", .flag = &default_vga }, { .driver = "virtio-vga-gl", .flag = &default_vga }, + { .driver = "virtio-vga-rutabaga", .flag = &default_vga }, }; static QemuOptsList qemu_rtc_opts = {