[Spice-devel] [PATCH v2 x11spice 2/2] Provide compatibility for Glamor in Xorg 1.17.

Jeremy White jwhite at codeweavers.com
Wed Jul 31 16:27:20 UTC 2019


In Xorg 1.18, X changed so that GLAMOR_USE_EGL_SCREEN was the only
flag required and it implies the behavior previously requested
with the GLAMOR_USE_SCREEN and GLAMORE_USE_PICTURE_SCREEN flags.
Thus, if we are building against an older Xorg, we need to specify
those now deprecated flags.

Additionally, the compat-api header conflicts with the older
glamor header file, so it needs to be moved to be included
after glamor.h.

Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
v2: Provide more explanation
---
 spice-video-dummy/src/dummy.h             |  4 ++--
 spice-video-dummy/src/spicedummy_driver.c | 15 ++++++++++++++-
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/spice-video-dummy/src/dummy.h b/spice-video-dummy/src/dummy.h
index a2502902..af77c177 100644
--- a/spice-video-dummy/src/dummy.h
+++ b/spice-video-dummy/src/dummy.h
@@ -11,11 +11,11 @@
 #endif
 #include <string.h>
 
-#include "compat-api.h"
-
 #define GLAMOR_FOR_XORG 1
 #include "glamor.h"
 
+#include "compat-api.h"
+
 /* Supported chipsets */
 typedef enum {
     DUMMY_CHIP
diff --git a/spice-video-dummy/src/spicedummy_driver.c b/spice-video-dummy/src/spicedummy_driver.c
index fc355f85..1dbe87b2 100644
--- a/spice-video-dummy/src/spicedummy_driver.c
+++ b/spice-video-dummy/src/spicedummy_driver.c
@@ -558,6 +558,19 @@ DUMMYScreenInit(SCREEN_INIT_ARGS_DECL)
     int ret;
     VisualPtr visual;
     void *pixels;
+    int glamor_flags = GLAMOR_USE_EGL_SCREEN;
+
+    /* In Xorg 1.18, X changed so that GLAMOR_USE_EGL_SCREEN was the only
+       flag required and it implies the behavior previously requested
+       with the GLAMOR_USE_SCREEN and GLAMORE_USE_PICTURE_SCREEN flags.
+       Thus, if we are building against an older Xorg, we need to specify
+       those now deprecated flags. */
+#if defined(GLAMOR_USE_SCREEN)
+    glamor_flags |= GLAMOR_USE_SCREEN;
+#endif
+#if defined(GLAMOR_USE_PICTURE_SCREEN)
+    glamor_flags |= GLAMOR_USE_PICTURE_SCREEN;
+#endif
 
     /*
      * we need to get the ScrnInfoRec for this screen, so let's allocate
@@ -618,7 +631,7 @@ DUMMYScreenInit(SCREEN_INIT_ARGS_DECL)
     /* must be after RGB ordering fixed */
     fbPictureInit(pScreen, 0, 0);
 
-    if (dPtr->glamor && !glamor_init(pScreen, GLAMOR_USE_EGL_SCREEN)) {
+    if (dPtr->glamor && !glamor_init(pScreen, glamor_flags)) {
         xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                    "Failed to initialise glamor at ScreenInit() time.\n");
         return FALSE;
-- 
2.20.1



More information about the Spice-devel mailing list