Made GLX 1.3 the minimum supported version.

This commit is contained in:
Camilla Berglund 2014-03-06 16:45:40 +01:00
parent a89a02ff85
commit d169557b00
3 changed files with 14 additions and 67 deletions

View File

@ -58,11 +58,14 @@ The following dependencies are needed by the examples and test programs:
- [Win32] Enabled generation of pkg-config file for MinGW - [Win32] Enabled generation of pkg-config file for MinGW
- [Win32] Bugfix: Failure to load winmm or its functions was not reported to - [Win32] Bugfix: Failure to load winmm or its functions was not reported to
the error callback the error callback
- [X11] Made GLX 1.3 the minimum supported version
- [X11] Bugfix: The case of finding no usable CRTCs was not detected - [X11] Bugfix: The case of finding no usable CRTCs was not detected
- [X11] Bugfix: Detection of broken Nvidia RandR gamma support did not verify - [X11] Bugfix: Detection of broken Nvidia RandR gamma support did not verify
that at least one CRTC was present that at least one CRTC was present
- [X11] Bugfix: A stale `_NET_SUPPORTING_WM_CHECK` root window property would - [X11] Bugfix: A stale `_NET_SUPPORTING_WM_CHECK` root window property would
cause an uncaught `BadWindow` error cause an uncaught `BadWindow` error
- [X11] Bugfix: No check was made for the presence GLX 1.3 when
`GLX_SGIX_fbconfig` was unavailable
## Contact ## Contact

View File

@ -42,20 +42,11 @@ void (*glXGetProcAddressEXT(const GLubyte* procName))();
// Returns the specified attribute of the specified GLXFBConfig // Returns the specified attribute of the specified GLXFBConfig
// NOTE: Do not call this unless we have found GLX 1.3+ or GLX_SGIX_fbconfig
// //
static int getFBConfigAttrib(GLXFBConfig fbconfig, int attrib) static int getFBConfigAttrib(GLXFBConfig fbconfig, int attrib)
{ {
int value; int value;
glXGetFBConfigAttrib(_glfw.x11.display, fbconfig, attrib, &value);
if (_glfw.glx.SGIX_fbconfig)
{
_glfw.glx.GetFBConfigAttribSGIX(_glfw.x11.display,
fbconfig, attrib, &value);
}
else
glXGetFBConfigAttrib(_glfw.x11.display, fbconfig, attrib, &value);
return value; return value;
} }
@ -78,24 +69,11 @@ static GLboolean chooseFBConfig(const _GLFWfbconfig* desired, GLXFBConfig* resul
trustWindowBit = GL_FALSE; trustWindowBit = GL_FALSE;
} }
if (_glfw.glx.SGIX_fbconfig) nativeConfigs = glXGetFBConfigs(_glfw.x11.display, _glfw.x11.screen,
{ &nativeCount);
nativeConfigs = _glfw.glx.ChooseFBConfigSGIX(_glfw.x11.display,
_glfw.x11.screen,
NULL,
&nativeCount);
}
else
{
nativeConfigs = glXGetFBConfigs(_glfw.x11.display,
_glfw.x11.screen,
&nativeCount);
}
if (!nativeCount) if (!nativeCount)
{ {
_glfwInputError(GLFW_API_UNAVAILABLE, _glfwInputError(GLFW_API_UNAVAILABLE, "GLX: No GLXFBConfigs returned");
"GLX: No GLXFBConfigs returned");
return GL_FALSE; return GL_FALSE;
} }
@ -171,15 +149,6 @@ static GLXContext createLegacyContext(_GLFWwindow* window,
GLXFBConfig fbconfig, GLXFBConfig fbconfig,
GLXContext share) GLXContext share)
{ {
if (_glfw.glx.SGIX_fbconfig)
{
return _glfw.glx.CreateContextWithConfigSGIX(_glfw.x11.display,
fbconfig,
GLX_RGBA_TYPE,
share,
True);
}
return glXCreateNewContext(_glfw.x11.display, return glXCreateNewContext(_glfw.x11.display,
fbconfig, fbconfig,
GLX_RGBA_TYPE, GLX_RGBA_TYPE,
@ -273,26 +242,6 @@ int _glfwInitContextAPI(void)
_glfw.glx.MESA_swap_control = GL_TRUE; _glfw.glx.MESA_swap_control = GL_TRUE;
} }
if (_glfwPlatformExtensionSupported("GLX_SGIX_fbconfig"))
{
_glfw.glx.GetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC)
_glfwPlatformGetProcAddress("glXGetFBConfigAttribSGIX");
_glfw.glx.ChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC)
_glfwPlatformGetProcAddress("glXChooseFBConfigSGIX");
_glfw.glx.CreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)
_glfwPlatformGetProcAddress("glXCreateContextWithConfigSGIX");
_glfw.glx.GetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)
_glfwPlatformGetProcAddress("glXGetVisualFromFBConfigSGIX");
if (_glfw.glx.GetFBConfigAttribSGIX &&
_glfw.glx.ChooseFBConfigSGIX &&
_glfw.glx.CreateContextWithConfigSGIX &&
_glfw.glx.GetVisualFromFBConfigSGIX)
{
_glfw.glx.SGIX_fbconfig = GL_TRUE;
}
}
if (_glfwPlatformExtensionSupported("GLX_ARB_multisample")) if (_glfwPlatformExtensionSupported("GLX_ARB_multisample"))
_glfw.glx.ARB_multisample = GL_TRUE; _glfw.glx.ARB_multisample = GL_TRUE;
@ -317,6 +266,12 @@ int _glfwInitContextAPI(void)
if (_glfwPlatformExtensionSupported("GLX_EXT_create_context_es2_profile")) if (_glfwPlatformExtensionSupported("GLX_EXT_create_context_es2_profile"))
_glfw.glx.EXT_create_context_es2_profile = GL_TRUE; _glfw.glx.EXT_create_context_es2_profile = GL_TRUE;
if (_glfw.glx.versionMajor == 1 && _glfw.glx.versionMinor < 3)
{
_glfwInputError(GLFW_API_UNAVAILABLE, "No GLXFBConfig support found");
return GL_FALSE;
}
return GL_TRUE; return GL_TRUE;
} }
@ -364,13 +319,7 @@ int _glfwCreateContext(_GLFWwindow* window,
} }
// Retrieve the corresponding visual // Retrieve the corresponding visual
if (_glfw.glx.SGIX_fbconfig) window->glx.visual = glXGetVisualFromFBConfig(_glfw.x11.display, native);
{
window->glx.visual =
_glfw.glx.GetVisualFromFBConfigSGIX(_glfw.x11.display, native);
}
else
window->glx.visual = glXGetVisualFromFBConfig(_glfw.x11.display, native);
if (window->glx.visual == NULL) if (window->glx.visual == NULL)
{ {

View File

@ -100,12 +100,7 @@ typedef struct _GLFWlibraryGLX
PFNGLXSWAPINTERVALSGIPROC SwapIntervalSGI; PFNGLXSWAPINTERVALSGIPROC SwapIntervalSGI;
PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT; PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT;
PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA; PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA;
PFNGLXGETFBCONFIGATTRIBSGIXPROC GetFBConfigAttribSGIX;
PFNGLXCHOOSEFBCONFIGSGIXPROC ChooseFBConfigSGIX;
PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC CreateContextWithConfigSGIX;
PFNGLXGETVISUALFROMFBCONFIGSGIXPROC GetVisualFromFBConfigSGIX;
PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB;
GLboolean SGIX_fbconfig;
GLboolean SGI_swap_control; GLboolean SGI_swap_control;
GLboolean EXT_swap_control; GLboolean EXT_swap_control;
GLboolean MESA_swap_control; GLboolean MESA_swap_control;