Message ID | 20230824234046.499-9-gurchetansingh@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | rutabaga_gfx + gfxstream | expand |
Hi Gurchetan, Thank you for this series and for including some of my patches :) On 25/08/2023 01:40, 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> > Tested-by: Alyssa Ross <hi@alyssa.is> > Tested-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> > Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> > --- > v3: Whitespace fix (Akihiko) > v9: reorder virtio_gpu_have_udmabuf() after checking if rutabaga > is enabled to avoid spurious warnings (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..fe094addef 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_rutabaga_enabled(g->parent_obj.conf) && > + !virtio_gpu_have_udmabuf()) { > + error_setg(errp, "need rutabaga or udmabuf for blob resources"); Does that mean udmabuf is not required at all when using rutabaga? How does rutabaga handle 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 = { Patches 5 to 9: Reviewed-by: Antonio Caggiano <quic_acaggian@quicinc.com> Cheers, Antonio
On Fri, Aug 25, 2023 at 6:55 AM Antonio Caggiano <quic_acaggian@quicinc.com> wrote: > Hi Gurchetan, > > Thank you for this series and for including some of my patches :) > > On 25/08/2023 01:40, 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> > > Tested-by: Alyssa Ross <hi@alyssa.is> > > Tested-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> > > Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org> > > --- > > v3: Whitespace fix (Akihiko) > > v9: reorder virtio_gpu_have_udmabuf() after checking if rutabaga > > is enabled to avoid spurious warnings (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..fe094addef 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_rutabaga_enabled(g->parent_obj.conf) && > > + !virtio_gpu_have_udmabuf()) { > > + error_setg(errp, "need rutabaga or udmabuf for blob > resources"); > > Does that mean udmabuf is not required at all when using rutabaga? > How does rutabaga handle blob resources? > It's not required, since it's a Linux-only thing. Some use cases do prefer to use guest memory and we do have provisional support for that (see `handle` field of `rutabaga_resource_create_blob`). Though more testing is required on the target platform, and likely virtio-gpu spec changes for a full-functional solution. > > > 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 = { > > Patches 5 to 9: > Reviewed-by: Antonio Caggiano <quic_acaggian@quicinc.com> > > Cheers, > Antonio >
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..fe094addef 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_rutabaga_enabled(g->parent_obj.conf) && + !virtio_gpu_have_udmabuf()) { + error_setg(errp, "need rutabaga or udmabuf 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 = {