Message ID | 20230801011723.627-9-gurchetansingh@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | gfxstream + rutabaga_gfx | expand |
On 2023/08/01 10:17, Gurchetan Singh wrote: > This change enables rutabaga to receive virtio-gpu-3d hypercalls > when it is active. > > Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> > --- > 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 9628e03f93..3e822fc514 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 6d19205e00..138a01d00e 100644 > --- a/hw/display/virtio-gpu.c > +++ b/hw/display/virtio-gpu.c > @@ -1358,8 +1358,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..246f0b051d 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 }, Nitpick: remove one whitespace before 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 = {
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index 9628e03f93..3e822fc514 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 6d19205e00..138a01d00e 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1358,8 +1358,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..246f0b051d 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 = {
This change enables rutabaga to receive virtio-gpu-3d hypercalls when it is active. Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> --- 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(-)