From: Ian Romanick <ian.d.roman...@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 _______________________________________________ xorg-devel mailing list xorg-devel@lists.x.org http://lists.x.org/mailman/listinfo/xorg-devel