]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Introduce virDomainGraphicsDefHasOpenGL helper
authorErik Skultety <eskultet@redhat.com>
Sat, 30 Jun 2018 16:20:33 +0000 (18:20 +0200)
committerErik Skultety <eskultet@redhat.com>
Wed, 18 Jul 2018 16:16:08 +0000 (18:16 +0200)
A simple helper which will loop through all the graphics elements and
checks whether at least one of them enables OpenGL support, either by
containing <gl enable='yes'/> or being of type 'egl-headless'.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Acked-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms

index 89c65560266178fef2aee055127eb65e06ae4cbe..187a8b36a0f8736dd91c433ce8a0d4633d424a38 100644 (file)
@@ -30274,3 +30274,46 @@ virDomainDefHasManagedPR(const virDomainDef *def)
 
     return false;
 }
+
+
+/**
+ * virDomainGraphicsDefHasOpenGL:
+ * @def: domain definition
+ *
+ * Returns true if a domain config contains at least one <graphics> element
+ * with OpenGL support enabled, false otherwise.
+ */
+bool
+virDomainGraphicsDefHasOpenGL(const virDomainDef *def)
+{
+    size_t i;
+
+    for (i = 0; i < def->ngraphics; i++) {
+        virDomainGraphicsDefPtr graphics = def->graphics[i];
+
+        /* we only care about OpenGL support for a given type here */
+        switch (graphics->type) {
+        case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
+        case VIR_DOMAIN_GRAPHICS_TYPE_RDP:
+        case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP:
+            continue;
+        case VIR_DOMAIN_GRAPHICS_TYPE_SDL:
+            if (graphics->data.sdl.gl == VIR_TRISTATE_BOOL_YES)
+                return true;
+
+            continue;
+        case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
+            if (graphics->data.spice.gl == VIR_TRISTATE_BOOL_YES)
+                return true;
+
+            continue;
+        case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS:
+            return true;
+
+        case VIR_DOMAIN_GRAPHICS_TYPE_LAST:
+            break;
+        }
+    }
+
+    return false;
+}
index 26f75b15d0ade8d49c7082f3036d1cf3fc7a48fb..3deda1d978b6860b7376d25ba75c0be7794bc959 100644 (file)
@@ -3642,4 +3642,7 @@ virDomainDiskGetDetectZeroesMode(virDomainDiskDiscard discard,
 bool
 virDomainDefHasManagedPR(const virDomainDef *def);
 
+bool
+virDomainGraphicsDefHasOpenGL(const virDomainDef *def);
+
 #endif /* __DOMAIN_CONF_H */
index c27c224e93bfb7b22b4bdbee16db5cb2f028fedf..ebf39791096cc4ad6d97aee7e31943e6cf169ae3 100644 (file)
@@ -359,6 +359,7 @@ virDomainGetFilesystemForTarget;
 virDomainGraphicsAuthConnectedTypeFromString;
 virDomainGraphicsAuthConnectedTypeToString;
 virDomainGraphicsDefFree;
+virDomainGraphicsDefHasOpenGL;
 virDomainGraphicsGetListen;
 virDomainGraphicsListenAppendAddress;
 virDomainGraphicsListenAppendSocket;