diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2009-10-01 10:39:19 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2009-10-01 23:13:40 -0700 |
commit | 4c6bfa2c09ae2b0cffdf9211a6dfbcaefe0366b5 (patch) | |
tree | f6e73408541d675d96ed8fd4a192d5fd4ef73af9 | |
parent | 45f447dafded5adfe11b7df3325c2d8f6ae0639b (diff) |
GLX: More clearly document the GLX protocol version handling
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | glx/glxcmds.c | 1 | ||||
-rw-r--r-- | glx/glxdri2.c | 6 | ||||
-rw-r--r-- | glx/glxscreens.c | 12 | ||||
-rw-r--r-- | glx/glxscreens.h | 9 | ||||
-rw-r--r-- | include/protocol-versions.h | 2 |
5 files changed, 22 insertions, 8 deletions
diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 30c25a917..ba4c12398 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 82568e696..ed7dc80ba 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 6ce24b2b4..674e2c681 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 2d696d2ea..bff436307 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 da9770ce3..d688c66b5 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 |