[libvirt] [PATCH] qemu: add sdl opengl support

Daniel P. Berrangé berrange at redhat.com
Wed May 2 07:13:19 UTC 2018


On Tue, May 01, 2018 at 08:22:45PM +0100, Maciej Wolny wrote:
> Add SDL graphics gl attribute, modify the domain XML schema, add a
> test, modify the documentation to include the new option.
> 
> Signed-off-by: Maciej Wolny <maciej.wolny at codethink.co.uk>
> ---
>  docs/schemas/domaincommon.rng                      |  8 +++++
>  src/conf/domain_conf.c                             | 41 ++++++++++++++++++++++
>  src/conf/domain_conf.h                             |  1 +
>  src/qemu/qemu_capabilities.c                       |  2 ++
>  src/qemu/qemu_capabilities.h                       |  1 +
>  src/qemu/qemu_command.c                            | 19 ++++++++++
>  .../qemuxml2argvdata/video-virtio-gpu-sdl-gl.args  | 28 +++++++++++++++
>  tests/qemuxml2argvdata/video-virtio-gpu-sdl-gl.xml | 38 ++++++++++++++++++++
>  tests/qemuxml2argvtest.c                           |  5 +++
>  9 files changed, 143 insertions(+)
>  create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-sdl-gl.args
>  create mode 100644 tests/qemuxml2argvdata/video-virtio-gpu-sdl-gl.xml
> 
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 3569b9212..a2ef93c09 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -3031,6 +3031,14 @@
>                <ref name="virYesNo"/>
>              </attribute>
>            </optional>
> +          <optional>
> +            <element name="gl">
> +              <attribute name="enable">
> +                <ref name="virYesNo"/>
> +              </attribute>
> +              <empty/>
> +            </element>
> +          </optional>
>          </group>
>          <group>
>            <attribute name="type">
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index b0257068d..7d65ca9df 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -13448,6 +13448,7 @@ static int
>  virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
>                                  xmlNodePtr node)
>  {
> +    xmlNodePtr cur;
>      char *fullscreen = virXMLPropString(node, "fullscreen");
>      int ret = -1;
>  
> @@ -13468,6 +13469,34 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
>      def->data.sdl.xauth = virXMLPropString(node, "xauth");
>      def->data.sdl.display = virXMLPropString(node, "display");
>  
> +    cur = node->children;
> +    while (cur != NULL) {
> +        if (cur->type == XML_ELEMENT_NODE) {
> +            if (virXMLNodeNameEqual(cur, "gl")) {
> +                char *enable = virXMLPropString(cur, "enable");
> +                int enableVal;
> +
> +                if (!enable) {
> +                    virReportError(VIR_ERR_XML_ERROR, "%s",
> +                                   _("sdl gl element missing enable"));
> +                    goto cleanup;
> +                }
> +
> +                enableVal = virTristateBoolTypeFromString(enable);
> +                if (enableVal < 0) {
> +                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                                   _("unknown enable value '%s'"), enable);
> +                    VIR_FREE(enable);
> +                    goto cleanup;
> +                }
> +                VIR_FREE(enable);
> +
> +                def->data.sdl.gl = enableVal;
> +            }
> +        }
> +        cur = cur->next;
> +    }
> +
>      ret = 0;
>   cleanup:
>      VIR_FREE(fullscreen);
> @@ -25652,6 +25681,18 @@ virDomainGraphicsDefFormat(virBufferPtr buf,
>          if (def->data.sdl.fullscreen)
>              virBufferAddLit(buf, " fullscreen='yes'");
>  
> +        if (!children && def->data.sdl.gl) {
> +            virBufferAddLit(buf, ">\n");
> +            virBufferAdjustIndent(buf, 2);
> +            children = true;
> +        }
> +
> +        if (def->data.sdl.gl) {
> +            virBufferAsprintf(buf, "<gl enable='%s'",
> +                              virTristateBoolTypeToString(def->data.sdl.gl));
> +            virBufferAddLit(buf, "/>\n");
> +        }

SPICE  GL support allows a "rendernode" property to be set - I'm wondering
if that is relevant to SDL or not ?


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list