[PATCH] GLX: More clearly document the GLX protocol version handling
Ian Romanick
idr at freedesktop.org
Thu Oct 1 10:45:16 PDT 2009
From: Ian Romanick <ian.d.romanick at intel.com>
---
glx/glxcmds.c | 1 -
glx/glxdri2.c | 6 ++----
glx/glxscreens.c | 12 ++++++++++--
glx/glxscreens.h | 9 +++++++++
include/protocol-versions.h | 2 +-
5 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 30c25a9..ba4c123 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -50,7 +50,6 @@
#include "indirect_dispatch.h"
#include "indirect_table.h"
#include "indirect_util.h"
-#include "protocol-versions.h"
static int
validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err)
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index 82568e6..ed7dc80 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -685,10 +685,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
screen->base.GLXextensions);
}
- /* We know that the X server supports the protocol for at least GLX 1.4.
- * When a new version of GLX is created, we'll have to revisit this. We're
- * also going to assume (perhaps incorrectly?) that all DRI2-enabled
- * drivers support the required extension for GLX 1.3. The extensions
+ /* We're going to assume (perhaps incorrectly?) that all DRI2-enabled
+ * drivers support the required extensions for GLX 1.4. The extensions
* we're assuming are:
*
* - GLX_SGI_make_current_read (1.3)
diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 6ce24b2..674e2c6 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -42,6 +42,7 @@
#include "glxserver.h"
#include "glxutil.h"
#include "glxext.h"
+#include "protocol-versions.h"
static int glxScreenPrivateKeyIndex;
static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex;
@@ -162,8 +163,8 @@ static const char GLServerExtensions[] =
** supported across all screens in a multi-screen system.
*/
static char GLXServerVendorName[] = "SGI";
-unsigned glxMajorVersion = 1;
-unsigned glxMinorVersion = 4;
+unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
+unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
static char GLXServerExtensions[] =
"GLX_ARB_multisample "
"GLX_EXT_visual_info "
@@ -380,6 +381,13 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
pGlxScreen->GLextensions = xstrdup(GLServerExtensions);
pGlxScreen->GLXvendor = xstrdup(GLXServerVendorName);
pGlxScreen->GLXextensions = xstrdup(GLXServerExtensions);
+
+ /* All GLX providers must support all of the functionality required for at
+ * least GLX 1.2. If the provider supports a higher version, the GLXminor
+ * version can be changed in the provider's screen-probe routine. For
+ * most providers, the screen-probe routine is the caller of this
+ * function.
+ */
pGlxScreen->GLXmajor = 1;
pGlxScreen->GLXminor = 2;
diff --git a/glx/glxscreens.h b/glx/glxscreens.h
index 2d696d2..bff4363 100644
--- a/glx/glxscreens.h
+++ b/glx/glxscreens.h
@@ -160,8 +160,17 @@ struct __GLXscreen {
char *GLXvendor;
char *GLXversion;
char *GLXextensions;
+
+ /**
+ * \name GLX version supported by this screen.
+ *
+ * Since the GLX version advertised by the server is for the whole server,
+ * the GLX protocol code uses the minimum version supported on all screens.
+ */
+ /*@{*/
unsigned GLXmajor;
unsigned GLXminor;
+ /*@}*/
Bool (*CloseScreen)(int index, ScreenPtr pScreen);
Bool (*DestroyWindow)(WindowPtr pWindow);
diff --git a/include/protocol-versions.h b/include/protocol-versions.h
index da9770c..d688c66 100644
--- a/include/protocol-versions.h
+++ b/include/protocol-versions.h
@@ -61,7 +61,7 @@
/* GLX */
#define SERVER_GLX_MAJOR_VERSION 1
-#define SERVER_GLX_MINOR_VERSION 2
+#define SERVER_GLX_MINOR_VERSION 4
/* Xinerama */
#define SERVER_PANORAMIX_MAJOR_VERSION 1
--
1.6.4.3
More information about the xorg-devel
mailing list