[PATCH xserver 7/8] glamor: Add glamor_get_screen_context

Adam Jackson ajax at redhat.com
Wed Nov 1 20:31:35 UTC 2017


Also, fold glamor_context.h into glamor.h, and use the standard Xnest
trick so we can include server headers in glamor_glx.c.

Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 glamor/Makefile.am            |  1 -
 glamor/glamor.c               |  6 ++++++
 glamor/glamor.h               | 21 ++++++++++++++++++-
 glamor/glamor_context.h       | 49 -------------------------------------------
 glamor/glamor_glx.c           |  5 ++++-
 glamor/glamor_priv.h          |  1 -
 hw/xwayland/xwayland-glamor.c |  1 -
 7 files changed, 30 insertions(+), 54 deletions(-)
 delete mode 100644 glamor/glamor_context.h

diff --git a/glamor/Makefile.am b/glamor/Makefile.am
index b5395259d..5f57c628c 100644
--- a/glamor/Makefile.am
+++ b/glamor/Makefile.am
@@ -6,7 +6,6 @@ AM_CFLAGS = $(CWARNFLAGS) $(DIX_CFLAGS) $(GLAMOR_CFLAGS)
 
 libglamor_la_SOURCES = \
 	glamor.c \
-	glamor_context.h \
 	glamor_copy.c \
 	glamor_core.c \
 	glamor_dash.c \
diff --git a/glamor/glamor.c b/glamor/glamor.c
index 9fd110ed2..2f15aa222 100644
--- a/glamor/glamor.c
+++ b/glamor/glamor.c
@@ -53,6 +53,12 @@ glamor_set_screen_private(ScreenPtr screen, glamor_screen_private *priv)
     dixSetPrivate(&screen->devPrivates, &glamor_screen_private_key, priv);
 }
 
+struct glamor_context *
+glamor_get_screen_context(ScreenPtr screen)
+{
+    return (struct glamor_context *)&(glamor_get_screen_private(screen)->ctx);
+}
+
 /**
  * glamor_get_drawable_pixmap() returns a backing pixmap for a given drawable.
  *
diff --git a/glamor/glamor.h b/glamor/glamor.h
index 5b15a46e5..790f51eab 100644
--- a/glamor/glamor.h
+++ b/glamor/glamor.h
@@ -39,7 +39,22 @@
 #include <xf86xv.h>
 #endif
 
-struct glamor_context;
+struct glamor_context {
+    /** Either an EGLDisplay or an Xlib Display */
+    void *display;
+
+    /** Either a GLXContext or an EGLContext. */
+    void *ctx;
+
+    /** The EGLSurface we should MakeCurrent to */
+    void *drawable;
+
+    /** The GLXDrawable we should MakeCurrent to */
+    uint32_t drawable_xid;
+
+    void (*make_current)(struct glamor_context *glamor_ctx);
+};
+
 struct gbm_bo;
 struct gbm_device;
 
@@ -331,6 +346,8 @@ extern _X_EXPORT Bool
 extern _X_EXPORT void glamor_egl_screen_init(ScreenPtr screen,
                                              struct glamor_context *glamor_ctx);
 
+extern _X_EXPORT Bool glamor_glx_screen_init(struct glamor_context *glamor_ctx);
+
 extern _X_EXPORT int glamor_create_gc(GCPtr gc);
 
 extern _X_EXPORT void glamor_validate_gc(GCPtr gc, unsigned long changes,
@@ -351,4 +368,6 @@ extern _X_EXPORT XF86VideoAdaptorPtr glamor_xv_init(ScreenPtr pScreen,
                                                     int num_texture_ports);
 #endif
 
+extern struct glamor_context *glamor_get_screen_context(ScreenPtr screen);
+
 #endif                          /* GLAMOR_H */
diff --git a/glamor/glamor_context.h b/glamor/glamor_context.h
deleted file mode 100644
index 47b87e620..000000000
--- a/glamor/glamor_context.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-/**
- * @file glamor_context.h
- *
- * This is the struct of state required for context switching in
- * glamor.  It has to use types that don't require including either
- * server headers or Xlib headers, since it will be included by both
- * the server and the GLX (xlib) code.
- */
-
-struct glamor_context {
-    /** Either an EGLDisplay or an Xlib Display */
-    void *display;
-
-    /** Either a GLXContext or an EGLContext. */
-    void *ctx;
-
-    /** The EGLSurface we should MakeCurrent to */
-    void *drawable;
-
-    /** The GLXDrawable we should MakeCurrent to */
-    uint32_t drawable_xid;
-
-    void (*make_current)(struct glamor_context *glamor_ctx);
-};
-
-Bool glamor_glx_screen_init(struct glamor_context *glamor_ctx);
diff --git a/glamor/glamor_glx.c b/glamor/glamor_glx.c
index 7107c7c17..091af5213 100644
--- a/glamor/glamor_glx.c
+++ b/glamor/glamor_glx.c
@@ -21,8 +21,11 @@
  * IN THE SOFTWARE.
  */
 
+#include <dix-config.h>
+#define GC XlibGC
 #include <epoxy/glx.h>
-#include "glamor_context.h"
+#undef GC
+#include "glamor.h"
 
 /**
  * @file glamor_glx.c
diff --git a/glamor/glamor_priv.h b/glamor/glamor_priv.h
index 631f3d167..2a4ee80a1 100644
--- a/glamor/glamor_priv.h
+++ b/glamor/glamor_priv.h
@@ -50,7 +50,6 @@
 #include "glyphstr.h"
 
 #include "glamor_debug.h"
-#include "glamor_context.h"
 #include "glamor_program.h"
 
 #include <list.h>
diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index 8ffb40d6f..31659fb8e 100644
--- a/hw/xwayland/xwayland-glamor.c
+++ b/hw/xwayland/xwayland-glamor.c
@@ -34,7 +34,6 @@
 #include <glamor_egl.h>
 
 #include <glamor.h>
-#include <glamor_context.h>
 #include <dri3.h>
 #include "drm-client-protocol.h"
 
-- 
2.14.3



More information about the xorg-devel mailing list