On Tue, May 08, 2018 at 12:12:42PM +0100, Maciej Wolny wrote: > On 02/05/18 11:54, Daniel P. Berrangé wrote: > > On Wed, May 02, 2018 at 11:48:24AM +0100, Maciej Wolny wrote: > >> On 02/05/18 08:13, Daniel P. Berrangé wrote: > >>> 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@xxxxxxxxxxxxxxx> > >>>> --- > >>>> 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 > >>> > >> > >> I purposefully didn't look into this because we didn't need that option for > >> our use cases - would you still merge this patch without implementing this > >> option? > > > > My thought was that if rendernode is also applicable for SPICE, then > > instead of duplicating the struct fields and duplicating parsing, we > > should create a helper method for dealing with the <gl> element that > > can be shared with SPICE & SDL. If rendernode is not allowed with > > SPICE in QEMU, then your simpler approach is sufficient > > Grepping through the source code of QEMU, it seems that the rendernode option > is only used for SPICE (for egl_rendernode_init in ui/spice-core.c). Ok, thanks for checking - sounds like your simple code is fine as is. 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list