[libvirt] [PATCH] Support for 3d Acceleration in video tag

Daniel Veillard veillard at redhat.com
Wed Sep 2 16:23:01 UTC 2009


On Wed, Aug 19, 2009 at 10:45:25AM +0200, Pritesh Kothari wrote:
> > true, will add a element called <acceleration/> cause there are some
> > features for 2d acceleration as well, so that will take care of 3d and 2d
> > acceleration both.
> >
> > will post a patch soon with the above changes in it.
> 
> Reposting the patch with changes mentioned above.
[...]
> diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng
> index f857301..8f82e01 100644
> --- a/docs/schemas/domain.rng
> +++ b/docs/schemas/domain.rng
> @@ -814,6 +814,26 @@
>                <ref name="unsignedInt"/>
>              </attribute>
>            </optional>
> +          <optional>
> +            <element name="acceleration">
> +              <optional>
> +                <attribute name="3d">
> +                  <choice>
> +                    <value>yes</value>
> +                    <value>no</value>
> +                  </choice>
> +                </attribute>
> +              </optional>
> +              <optional>
> +                <attribute name="2d">
> +                  <choice>
> +                    <value>yes</value>
> +                    <value>no</value>
> +                  </choice>
> +                </attribute>
> +              </optional>
> +            </element>
> +          </optional>
>  	</element>
>        </optional>
>      </element>

  I'm afraid that in the long run we may have to deal with far more
video emulation options, a bit like cpu emulation flags, but that's a
reasonable approach for now.

[...]
> diff --git a/src/domain_conf.h b/src/domain_conf.h
> index 44302be..2f3a02d 100644
> --- a/src/domain_conf.h
> +++ b/src/domain_conf.h
> @@ -307,12 +307,21 @@ enum virDomainVideoType {
>  };
>  
>  
> +typedef struct _virDomainVideoAccelDef virDomainVideoAccelDef;
> +typedef virDomainVideoAccelDef *virDomainVideoAccelDefPtr;
> +struct _virDomainVideoAccelDef {
> +    int support3d : 1;
> +    int support2d : 1;
> +};
> +
> +
>  typedef struct _virDomainVideoDef virDomainVideoDef;
>  typedef virDomainVideoDef *virDomainVideoDefPtr;
>  struct _virDomainVideoDef {
>      int type;
>      unsigned int vram;
>      unsigned int heads;
> +    virDomainVideoAccelDef accel;
>  };
>  
>  /* 3 possible graphics console modes */

  I'm not that fond of adding a substructure like this by value,
I don't really see what this brings and make the code below less
clever

> @@ -3824,7 +3876,12 @@ virDomainVideoDefFormat(virConnectPtr conn,
>          virBufferVSprintf(buf, " vram='%u'", def->vram);
>      if (def->heads)
>          virBufferVSprintf(buf, " heads='%u'", def->heads);
> -    virBufferAddLit(buf, "/>\n");
> +    virBufferAddLit(buf, ">\n");
> +
> +    virDomainVideoAccelDefFormat(buf, def->accel);
> +
> +    virBufferAddLit(buf, "      </model>\n");
> +
>      virBufferAddLit(buf, "    </video>\n");
>  
>      return 0;

  as this forces us to always keep the model closed with an
end tag. As a result a lot of the regression tests fail because the
format changed. I will revamp that part a bit before pushing this out.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list