[PATCH xserver] glx: Use __glXInitExtensionEnableBits in all backends (v2)
Adam Jackson
ajax at redhat.com
Wed Mar 30 15:06:07 UTC 2016
On xquartz this enables SGI_make_current_read, which is a mostly
harmless lie as CGL doesn't implement it, as well as SGIX_pbuffer, which
is fine because no pbuffer-enabled configs are created.
On xwin this enables SGIX_pbuffer and ARB_multisample in all cases.
Again this is harmless if the backend doesn't support the features,
since no fbconfigs will be created to expose them.
It also adds SGIX_visual_select_group to both xquartz and xwin.
Amusingly, both were filling in the appropriate field in the fbconfig
already.
v2: Warn about missing WGL extensions (Emil)
Reviewed-by: Eric Anholt <eric at anholt.net>
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
Signed-off-by: Adam Jackson <ajax at redhat.com>
---
hw/xquartz/GL/indirect.c | 12 +-----------
hw/xwin/glx/indirect.c | 29 +++++++++--------------------
2 files changed, 10 insertions(+), 31 deletions(-)
diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
index 544cb78..398cdf1 100644
--- a/hw/xquartz/GL/indirect.c
+++ b/hw/xquartz/GL/indirect.c
@@ -545,22 +545,12 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
screen->base.fbconfigs = __glXAquaCreateVisualConfigs(
&screen->base.numFBConfigs, pScreen->myNum);
+ __glXInitExtensionEnableBits(screen->glx_enable_bits);
__glXScreenInit(&screen->base, pScreen);
screen->base.GLXmajor = 1;
screen->base.GLXminor = 4;
- memset(screen->glx_enable_bits, 0, __GLX_EXT_BYTES);
-
- __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_info");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_rating");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_import_context");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_OML_swap_method");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_fbconfig");
-
- __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIS_multisample");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_multisample");
-
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c
index 7828b6c..cbbc113 100644
--- a/hw/xwin/glx/indirect.c
+++ b/hw/xwin/glx/indirect.c
@@ -642,17 +642,12 @@ glxWinScreenProbe(ScreenPtr pScreen)
// Based on the WGL extensions available, enable various GLX extensions
// XXX: make this table-driven ?
//
- memset(screen->glx_enable_bits, 0, __GLX_EXT_BYTES);
-
- __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_info");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_rating");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_import_context");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_OML_swap_method");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_fbconfig");
- __glXEnableExtension(screen->glx_enable_bits, "GLX_SGI_make_current_read");
+ __glXInitExtensionEnableBits(screen->glx_enable_bits);
if (strstr(wgl_extensions, "WGL_ARB_make_current_read"))
screen->has_WGL_ARB_make_current_read = TRUE;
+ else
+ LogMessage(X_WARNING, "AIGLX: missing WGL_ARB_make_current_read\n")
if (strstr(gl_extensions, "GL_WIN_swap_hint")) {
__glXEnableExtension(screen->glx_enable_bits,
@@ -674,21 +669,15 @@ glxWinScreenProbe(ScreenPtr pScreen)
/* screen->has_WGL_ARB_render_texture = TRUE; */
/* } */
- if (strstr(wgl_extensions, "WGL_ARB_pbuffer")) {
- __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_pbuffer");
- LogMessage(X_INFO, "AIGLX: enabled GLX_SGIX_pbuffer\n");
+ if (strstr(wgl_extensions, "WGL_ARB_pbuffer"))
screen->has_WGL_ARB_pbuffer = TRUE;
- }
+ else
+ LogMessage(X_WARNING, "AIGLX: missing WGL_ARB_pbuffer\n")
- if (strstr(wgl_extensions, "WGL_ARB_multisample")) {
- __glXEnableExtension(screen->glx_enable_bits,
- "GLX_ARB_multisample");
- __glXEnableExtension(screen->glx_enable_bits,
- "GLX_SGIS_multisample");
- LogMessage(X_INFO,
- "AIGLX: enabled GLX_ARB_multisample and GLX_SGIS_multisample\n");
+ if (strstr(wgl_extensions, "WGL_ARB_multisample"))
screen->has_WGL_ARB_multisample = TRUE;
- }
+ else
+ LogMessage(X_WARNING, "AIGLX: missing WGL_ARB_multisample\n")
screen->base.destroy = glxWinScreenDestroy;
screen->base.createContext = glxWinCreateContext;
--
2.5.0
More information about the xorg-devel
mailing list