From c026faaeed9035aff21b31ee167e3a8f3018d88d Mon Sep 17 00:00:00 2001 From: Roderick Colenbrander Date: Tue, 19 Dec 2006 20:24:25 +0100 Subject: [PATCH] winex11.drv: pbuffer detection. --- dlls/winex11.drv/opengl.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 418067a94d5..cb7366ae2db 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -2947,7 +2947,18 @@ static void X11DRV_WineGL_LoadExtensions(void) if (glxRequireExtension("GLX_ARB_multisample")) register_extension(&WGL_ARB_multisample); - if (glxRequireVersion(3) && glxRequireExtension("GLX_SGIX_pbuffer")) + /* In general pbuffer functionality requires support in the X-server. The functionality is + * available either when the GLX_SGIX_pbuffer is present or when the GLX server version is 1.3. + * All display drivers except for Nvidia's use the GLX module from Xfree86/Xorg which only + * supports GLX 1.2. The endresult is that only Nvidia's drivers support pbuffers. + * + * The only other drive which has pbuffer support is Ati's FGLRX driver. They provide clientside GLX 1.3 support + * without support in the X-server (which other Mesa based drivers require). + * + * Support pbuffers when the GLX version is 1.3 and GLX_SGIX_pbuffer is available. Further pbuffers can + * also be supported when GLX_ATI_render_texture is available. This extension depends on pbuffers, so when it + * is available pbuffers must be available too. */ + if ( (glxRequireVersion(3) && glxRequireExtension("GLX_SGIX_pbuffer")) || glxRequireExtension("GLX_ATI_render_texture")) register_extension(&WGL_ARB_pbuffer); register_extension(&WGL_ARB_pixel_format);