]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Introduce virDomainGraphics-related helpers
authorErik Skultety <eskultet@redhat.com>
Mon, 26 Nov 2018 10:07:42 +0000 (11:07 +0100)
committerErik Skultety <eskultet@redhat.com>
Mon, 3 Dec 2018 13:56:08 +0000 (14:56 +0100)
A few simple helpers that allow us to determine whether a graphics can
and will need to make use of a DRM render node.

Signed-off-by: Erik Skultety <eskultet@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 a7ab3e26f122841664165e519e7d6825cba8afcc..8144f30b661ec35e53466efe130893875f2e9f36 100644 (file)
@@ -30933,3 +30933,46 @@ virDomainGraphicsDefHasOpenGL(const virDomainDef *def)
 
     return false;
 }
+
+
+bool
+virDomainGraphicsSupportsRenderNode(const virDomainGraphicsDef *graphics)
+{
+    return graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE;
+}
+
+
+const char *
+virDomainGraphicsGetRenderNode(const virDomainGraphicsDef *graphics)
+{
+    const char *ret = NULL;
+
+    switch (graphics->type) {
+    case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
+        if (graphics->data.spice.gl == VIR_TRISTATE_BOOL_YES)
+            ret = graphics->data.spice.rendernode;
+        break;
+    case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS:
+    case VIR_DOMAIN_GRAPHICS_TYPE_SDL:
+    case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
+    case VIR_DOMAIN_GRAPHICS_TYPE_RDP:
+    case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP:
+    case VIR_DOMAIN_GRAPHICS_TYPE_LAST:
+        break;
+    }
+
+    return ret;
+}
+
+
+bool
+virDomainGraphicsNeedsAutoRenderNode(const virDomainGraphicsDef *graphics)
+{
+    if (!virDomainGraphicsSupportsRenderNode(graphics))
+        return false;
+
+    if (virDomainGraphicsGetRenderNode(graphics))
+        return false;
+
+    return true;
+}
index 7a724fbc6fee10e83c092e4cb80bd0c10a7ee921..b50ff819fabb10ff6e22221ac7545ca58af73150 100644 (file)
@@ -3668,4 +3668,13 @@ virDomainDefHasManagedPR(const virDomainDef *def);
 bool
 virDomainGraphicsDefHasOpenGL(const virDomainDef *def);
 
+bool
+virDomainGraphicsSupportsRenderNode(const virDomainGraphicsDef *graphics);
+
+const char *
+virDomainGraphicsGetRenderNode(const virDomainGraphicsDef *graphics);
+
+bool
+virDomainGraphicsNeedsAutoRenderNode(const virDomainGraphicsDef *graphics);
+
 #endif /* __DOMAIN_CONF_H */
index c7f08f96204f19e7d6dc7265e0e43caa4858e35b..fd63c9ca616912764a9f33e5e200f9b7bc9ce693 100644 (file)
@@ -372,8 +372,10 @@ virDomainGraphicsAuthConnectedTypeToString;
 virDomainGraphicsDefFree;
 virDomainGraphicsDefHasOpenGL;
 virDomainGraphicsGetListen;
+virDomainGraphicsGetRenderNode;
 virDomainGraphicsListenAppendAddress;
 virDomainGraphicsListenAppendSocket;
+virDomainGraphicsNeedsAutoRenderNode;
 virDomainGraphicsSpiceChannelModeTypeFromString;
 virDomainGraphicsSpiceChannelModeTypeToString;
 virDomainGraphicsSpiceChannelNameTypeFromString;
@@ -388,6 +390,7 @@ virDomainGraphicsSpiceStreamingModeTypeFromString;
 virDomainGraphicsSpiceStreamingModeTypeToString;
 virDomainGraphicsSpiceZlibCompressionTypeFromString;
 virDomainGraphicsSpiceZlibCompressionTypeToString;
+virDomainGraphicsSupportsRenderNode;
 virDomainGraphicsTypeFromString;
 virDomainGraphicsTypeToString;
 virDomainGraphicsVNCSharePolicyTypeFromString;