glx: Compute the GLX extension string from __glXScreenInit

Now that the enable bits are in the screen base class we can compute
this in one place, rather than making every backend do it.

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:
Adam Jackson 2016-03-23 15:41:24 -04:00
parent e21de4bf3c
commit 2e8781ead3
5 changed files with 8 additions and 49 deletions

View File

@ -939,7 +939,6 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
{
const char *driverName, *deviceName;
__GLXDRIscreen *screen;
size_t buffer_size;
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
screen = calloc(1, sizeof *screen);
@ -988,17 +987,6 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
__glXScreenInit(&screen->base, pScreen);
/* The first call simply determines the length of the extension string.
* This allows us to allocate some memory to hold the extension string,
* but it requires that we call __glXGetExtensionString a second time.
*/
buffer_size = __glXGetExtensionString(screen->base.glx_enable_bits, NULL);
if (buffer_size > 0) {
screen->base.GLXextensions = xnfalloc(buffer_size);
(void) __glXGetExtensionString(screen->base.glx_enable_bits,
screen->base.GLXextensions);
}
screen->enterVT = pScrn->EnterVT;
pScrn->EnterVT = glxDRIEnterVT;
screen->leaveVT = pScrn->LeaveVT;

View File

@ -448,7 +448,6 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
{
const char *driverName = "swrast";
__GLXDRIscreen *screen;
size_t buffer_size;
screen = calloc(1, sizeof *screen);
if (screen == NULL)
@ -490,17 +489,6 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
__glXScreenInit(&screen->base, pScreen);
/* The first call simply determines the length of the extension string.
* This allows us to allocate some memory to hold the extension string,
* but it requires that we call __glXGetExtensionString a second time.
*/
buffer_size = __glXGetExtensionString(screen->base.glx_enable_bits, NULL);
if (buffer_size > 0) {
screen->base.GLXextensions = xnfalloc(buffer_size);
(void) __glXGetExtensionString(screen->base.glx_enable_bits,
screen->base.GLXextensions);
}
__glXsetGetProcAddress(glXGetProcAddressARB);
LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", driverName);

View File

@ -383,6 +383,14 @@ __glXScreenInit(__GLXscreen * pGlxScreen, ScreenPtr pScreen)
}
dixSetPrivate(&pScreen->devPrivates, glxScreenPrivateKey, pGlxScreen);
i = __glXGetExtensionString(pGlxScreen->glx_enable_bits, NULL);
if (i > 0) {
pGlxScreen->GLXextensions = xnfalloc(i);
(void) __glXGetExtensionString(pGlxScreen->glx_enable_bits,
pGlxScreen->GLXextensions);
}
}
void

View File

@ -542,20 +542,6 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
__glXInitExtensionEnableBits(screen->base.glx_enable_bits);
__glXScreenInit(&screen->base, pScreen);
//__glXEnableExtension(screen->base.glx_enable_bits, "GLX_ARB_create_context");
//__glXEnableExtension(screen->base.glx_enable_bits, "GLX_ARB_create_context_profile");
// Generate the GLX extensions string (overrides that set by __glXScreenInit())
{
unsigned int buffer_size =
__glXGetExtensionString(screen->base.glx_enable_bits, NULL);
if (buffer_size > 0) {
screen->base.GLXextensions = xnfalloc(buffer_size);
__glXGetExtensionString(screen->base.glx_enable_bits,
screen->base.GLXextensions);
}
}
return &screen->base;
}

View File

@ -706,17 +706,6 @@ glxWinScreenProbe(ScreenPtr pScreen)
screen->base.numVisuals = 0;
__glXScreenInit(&screen->base, pScreen);
// Generate the GLX extensions string (overrides that set by __glXScreenInit())
{
unsigned int buffer_size =
__glXGetExtensionString(screen->base.glx_enable_bits, NULL);
if (buffer_size > 0) {
screen->base.GLXextensions = xnfalloc(buffer_size);
__glXGetExtensionString(screen->base.glx_enable_bits,
screen->base.GLXextensions);
}
}
}
wglMakeCurrent(NULL, NULL);