[PATCH 7/7] qemuBuildDeviceVideoStr: Don't overwrite @model

Michal Privoznik posted 7 patches 4 years, 8 months ago
[PATCH 7/7] qemuBuildDeviceVideoStr: Don't overwrite @model
Posted by Michal Privoznik 4 years, 8 months ago
Now we have everything prepared so that @model doesn't have to be
rewritten. The correct model can be chosen right from the
beginning.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 src/qemu/qemu_command.c | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index c9e152324d..22cc383f33 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -4164,6 +4164,12 @@ qemuDeviceVideoGetModel(virQEMUCaps *qemuCaps,
 {
     const char *model = NULL;
     bool primaryVga = false;
+    virTristateSwitch accel3d = VIR_TRISTATE_SWITCH_ABSENT;
+
+    *virtio = false;
+
+    if (video->accel)
+        accel3d = video->accel->accel3d;
 
     *virtio = false;
 
@@ -4197,7 +4203,11 @@ qemuDeviceVideoGetModel(virQEMUCaps *qemuCaps,
                 model = "qxl-vga";
                 break;
             case VIR_DOMAIN_VIDEO_TYPE_VIRTIO:
-                model = "virtio-vga";
+                if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_VGA_GL) &&
+                    accel3d == VIR_TRISTATE_SWITCH_ON)
+                    model = "virtio-vga-gl";
+                else
+                    model = "virtio-vga";
                 break;
             case VIR_DOMAIN_VIDEO_TYPE_BOCHS:
                 model = "bochs-display";
@@ -4220,7 +4230,11 @@ qemuDeviceVideoGetModel(virQEMUCaps *qemuCaps,
                 model = "qxl";
                 break;
             case VIR_DOMAIN_VIDEO_TYPE_VIRTIO:
-                model = "virtio-gpu";
+                if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_GPU_GL_PCI) &&
+                    accel3d == VIR_TRISTATE_SWITCH_ON)
+                    model = "virtio-gpu-gl";
+                else
+                    model = "virtio-gpu";
                 *virtio = true;
                 break;
             case VIR_DOMAIN_VIDEO_TYPE_DEFAULT:
@@ -4268,21 +4282,12 @@ qemuBuildDeviceVideoStr(const virDomainDef *def,
         return NULL;
 
     if (virtio) {
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_GPU_GL_PCI) &&
-            accel3d == VIR_TRISTATE_SWITCH_ON &&
-            STREQ(model, "virtio-gpu"))
-            model = "virtio-gpu-gl";
-
         if (qemuBuildVirtioDevStr(&buf, model, qemuCaps,
                                   VIR_DOMAIN_DEVICE_VIDEO, video) < 0) {
             return NULL;
         }
     } else {
         virBufferAsprintf(&buf, "%s", model);
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_VGA_GL) &&
-            accel3d == VIR_TRISTATE_SWITCH_ON &&
-            STREQ(model, "virtio-vga"))
-            virBufferAddLit(&buf, "-gl");
     }
 
     virBufferAsprintf(&buf, ",id=%s", video->info.alias);
-- 
2.31.1

Re: [PATCH 7/7] qemuBuildDeviceVideoStr: Don't overwrite @model
Posted by Peter Krempa 4 years, 8 months ago
On Fri, Jun 11, 2021 at 17:05:00 +0200, Michal Privoznik wrote:
> Now we have everything prepared so that @model doesn't have to be
> rewritten. The correct model can be chosen right from the
> beginning.
> 
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
>  src/qemu/qemu_command.c | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index c9e152324d..22cc383f33 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -4164,6 +4164,12 @@ qemuDeviceVideoGetModel(virQEMUCaps *qemuCaps,
>  {
>      const char *model = NULL;
>      bool primaryVga = false;
> +    virTristateSwitch accel3d = VIR_TRISTATE_SWITCH_ABSENT;
> +
> +    *virtio = false;

You've already have this ...

> +
> +    if (video->accel)
> +        accel3d = video->accel->accel3d;
>  
>      *virtio = false;

... here.


>