diff options
author | Adam Jackson <ajax@redhat.com> | 2016-03-22 14:40:37 -0400 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2016-03-30 11:13:57 -0400 |
commit | 77bdaa1313aa55191b49ec73c1e377928ca294fe (patch) | |
tree | c0ebdfac9902954aa83338716c94b4640e7e0977 | |
parent | 15af78fc56569dc3b6a7f2c5a6a49edb602111b7 (diff) |
glx: Use __glXInitExtensionEnableBits in all backends (v2)
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@anholt.net>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
-rw-r--r-- | hw/xquartz/GL/indirect.c | 12 | ||||
-rw-r--r-- | 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 544cb780c..398cdf158 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 7828b6c78..cbbc11302 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; |