glx: Enable GLX 1.4 unconditionally
Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
2a72789ee8
commit
36bcbf76dc
|
@ -45,6 +45,7 @@
|
||||||
#include "indirect_dispatch.h"
|
#include "indirect_dispatch.h"
|
||||||
#include "indirect_table.h"
|
#include "indirect_table.h"
|
||||||
#include "indirect_util.h"
|
#include "indirect_util.h"
|
||||||
|
#include "protocol-versions.h"
|
||||||
|
|
||||||
static char GLXServerVendorName[] = "SGI";
|
static char GLXServerVendorName[] = "SGI";
|
||||||
|
|
||||||
|
@ -797,8 +798,8 @@ __glXDisp_QueryVersion(__GLXclientState * cl, GLbyte * pc)
|
||||||
.type = X_Reply,
|
.type = X_Reply,
|
||||||
.sequenceNumber = client->sequence,
|
.sequenceNumber = client->sequence,
|
||||||
.length = 0,
|
.length = 0,
|
||||||
.majorVersion = glxMajorVersion,
|
.majorVersion = SERVER_GLX_MAJOR_VERSION,
|
||||||
.minorVersion = glxMinorVersion
|
.minorVersion = SERVER_GLX_MINOR_VERSION
|
||||||
};
|
};
|
||||||
|
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
|
@ -2454,7 +2455,6 @@ __glXDisp_QueryServerString(__GLXclientState * cl, GLbyte * pc)
|
||||||
char *buf;
|
char *buf;
|
||||||
__GLXscreen *pGlxScreen;
|
__GLXscreen *pGlxScreen;
|
||||||
int err;
|
int err;
|
||||||
char ver_str[16];
|
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xGLXQueryServerStringReq);
|
REQUEST_SIZE_MATCH(xGLXQueryServerStringReq);
|
||||||
|
|
||||||
|
@ -2466,11 +2466,7 @@ __glXDisp_QueryServerString(__GLXclientState * cl, GLbyte * pc)
|
||||||
ptr = GLXServerVendorName;
|
ptr = GLXServerVendorName;
|
||||||
break;
|
break;
|
||||||
case GLX_VERSION:
|
case GLX_VERSION:
|
||||||
/* Return to the server version rather than the screen version
|
ptr = "1.4";
|
||||||
* to prevent confusion when they do not match.
|
|
||||||
*/
|
|
||||||
snprintf(ver_str, 16, "%d.%d", glxMajorVersion, glxMinorVersion);
|
|
||||||
ptr = ver_str;
|
|
||||||
break;
|
break;
|
||||||
case GLX_EXTENSIONS:
|
case GLX_EXTENSIONS:
|
||||||
ptr = pGlxScreen->GLXextensions;
|
ptr = pGlxScreen->GLXextensions;
|
||||||
|
|
|
@ -1000,18 +1000,6 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
screen->base.GLXextensions);
|
screen->base.GLXextensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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)
|
|
||||||
* - GLX_SGIX_fbconfig (1.3)
|
|
||||||
* - GLX_SGIX_pbuffer (1.3)
|
|
||||||
* - GLX_ARB_multisample (1.4)
|
|
||||||
*/
|
|
||||||
screen->base.GLXmajor = 1;
|
|
||||||
screen->base.GLXminor = 4;
|
|
||||||
|
|
||||||
screen->enterVT = pScrn->EnterVT;
|
screen->enterVT = pScrn->EnterVT;
|
||||||
pScrn->EnterVT = glxDRIEnterVT;
|
pScrn->EnterVT = glxDRIEnterVT;
|
||||||
screen->leaveVT = pScrn->LeaveVT;
|
screen->leaveVT = pScrn->LeaveVT;
|
||||||
|
|
|
@ -500,9 +500,6 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
screen->base.GLXextensions);
|
screen->base.GLXextensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
screen->base.GLXmajor = 1;
|
|
||||||
screen->base.GLXminor = 4;
|
|
||||||
|
|
||||||
__glXsetGetProcAddress(glXGetProcAddressARB);
|
__glXsetGetProcAddress(glXGetProcAddressARB);
|
||||||
|
|
||||||
LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", driverName);
|
LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", driverName);
|
||||||
|
|
|
@ -380,8 +380,6 @@ GlxExtensionInit(void)
|
||||||
|
|
||||||
glxScreen = p->screenProbe(pScreen);
|
glxScreen = p->screenProbe(pScreen);
|
||||||
if (glxScreen != NULL) {
|
if (glxScreen != NULL) {
|
||||||
if (glxScreen->GLXminor < glxMinorVersion)
|
|
||||||
glxMinorVersion = glxScreen->GLXminor;
|
|
||||||
LogMessage(X_INFO,
|
LogMessage(X_INFO,
|
||||||
"GLX: Initialized %s GL provider for screen %d\n",
|
"GLX: Initialized %s GL provider for screen %d\n",
|
||||||
p->name, i);
|
p->name, i);
|
||||||
|
|
|
@ -154,9 +154,6 @@ static const char GLServerExtensions[] =
|
||||||
"GL_SGIX_shadow_ambient "
|
"GL_SGIX_shadow_ambient "
|
||||||
"GL_SUN_slice_accum ";
|
"GL_SUN_slice_accum ";
|
||||||
|
|
||||||
unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
|
|
||||||
unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
|
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
glxCloseScreen(ScreenPtr pScreen)
|
glxCloseScreen(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -313,15 +310,6 @@ __glXScreenInit(__GLXscreen * pGlxScreen, ScreenPtr pScreen)
|
||||||
pGlxScreen->GLextensions = strdup(GLServerExtensions);
|
pGlxScreen->GLextensions = strdup(GLServerExtensions);
|
||||||
pGlxScreen->GLXextensions = NULL;
|
pGlxScreen->GLXextensions = NULL;
|
||||||
|
|
||||||
/* 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;
|
|
||||||
|
|
||||||
pGlxScreen->CloseScreen = pScreen->CloseScreen;
|
pGlxScreen->CloseScreen = pScreen->CloseScreen;
|
||||||
pScreen->CloseScreen = glxCloseScreen;
|
pScreen->CloseScreen = glxCloseScreen;
|
||||||
|
|
||||||
|
|
|
@ -140,20 +140,8 @@ struct __GLXscreen {
|
||||||
GLint numVisuals;
|
GLint numVisuals;
|
||||||
|
|
||||||
char *GLextensions;
|
char *GLextensions;
|
||||||
|
|
||||||
char *GLXextensions;
|
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) (ScreenPtr pScreen);
|
Bool (*CloseScreen) (ScreenPtr pScreen);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -548,9 +548,6 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
|
||||||
__glXInitExtensionEnableBits(screen->glx_enable_bits);
|
__glXInitExtensionEnableBits(screen->glx_enable_bits);
|
||||||
__glXScreenInit(&screen->base, pScreen);
|
__glXScreenInit(&screen->base, pScreen);
|
||||||
|
|
||||||
screen->base.GLXmajor = 1;
|
|
||||||
screen->base.GLXminor = 4;
|
|
||||||
|
|
||||||
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
|
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
|
||||||
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
|
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
|
||||||
|
|
||||||
|
|
|
@ -720,27 +720,7 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
screen->base.GLXextensions);
|
screen->base.GLXextensions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Override the GLX version (__glXScreenInit() sets it to "1.2")
|
|
||||||
// if we have all the needed extensions to operate as a higher version
|
|
||||||
//
|
|
||||||
// SGIX_fbconfig && SGIX_pbuffer && SGI_make_current_read -> 1.3
|
|
||||||
// ARB_multisample -> 1.4
|
|
||||||
//
|
|
||||||
if (screen->has_WGL_ARB_pbuffer) {
|
|
||||||
if (screen->has_WGL_ARB_multisample) {
|
|
||||||
screen->base.GLXmajor = 1;
|
|
||||||
screen->base.GLXminor = 4;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
screen->base.GLXmajor = 1;
|
|
||||||
screen->base.GLXminor = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
LogMessage(X_INFO, "AIGLX: Set GLX version to %d.%d\n",
|
|
||||||
screen->base.GLXmajor, screen->base.GLXminor);
|
|
||||||
|
|
||||||
wglMakeCurrent(NULL, NULL);
|
wglMakeCurrent(NULL, NULL);
|
||||||
wglDeleteContext(hglrc);
|
wglDeleteContext(hglrc);
|
||||||
|
|
Loading…
Reference in New Issue