diff --git a/auto/src/glew_init_gl.c b/auto/src/glew_init_gl.c index 8d7645f..2ad6c63 100644 --- a/auto/src/glew_init_gl.c +++ b/auto/src/glew_init_gl.c @@ -32,76 +32,89 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST) { const GLubyte* s; GLuint major, minor; - /* query opengl version */ - s = glGetString(GL_VERSION); - if (!s) return GLEW_ERROR_NO_GL_VERSION; - major = _glewStrCLen(s, '.')-1; - minor = _glewStrCLen(s, '.')+1; - - if (s+major == NULL - || s+minor-1 == NULL || s+minor == NULL - || (s[major] == 1 && s[minor] < '1')) + /* check for SiS driver */ + s = glGetString(GL_RENDERER); + if (s && _glewStrSame(s,"SiS",3)) { - return GLEW_ERROR_GL_VERSION_10_ONLY; + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_FALSE; + GLEW_VERSION_1_3 = GL_FALSE; + GLEW_VERSION_1_4 = GL_FALSE; + GLEW_VERSION_1_5 = GL_FALSE; + GLEW_VERSION_2_0 = GL_FALSE; } else { - if (s[major] >= '2') - { - GLEW_VERSION_1_1 = GL_TRUE; - GLEW_VERSION_1_2 = GL_TRUE; - GLEW_VERSION_1_3 = GL_TRUE; - GLEW_VERSION_1_4 = GL_TRUE; - GLEW_VERSION_1_5 = GL_TRUE; - GLEW_VERSION_2_0 = GL_TRUE; - } - else - { - if (s[minor] >= '5') - { - GLEW_VERSION_1_1 = GL_TRUE; - GLEW_VERSION_1_2 = GL_TRUE; - GLEW_VERSION_1_3 = GL_TRUE; - GLEW_VERSION_1_4 = GL_TRUE; - GLEW_VERSION_1_5 = GL_TRUE; - GLEW_VERSION_2_0 = GL_FALSE; - } - if (s[minor] == '4') - { - GLEW_VERSION_1_1 = GL_TRUE; - GLEW_VERSION_1_2 = GL_TRUE; - GLEW_VERSION_1_3 = GL_TRUE; - GLEW_VERSION_1_4 = GL_TRUE; - GLEW_VERSION_1_5 = GL_FALSE; - GLEW_VERSION_2_0 = GL_FALSE; - } - if (s[minor] == '3') - { - GLEW_VERSION_1_1 = GL_TRUE; - GLEW_VERSION_1_2 = GL_TRUE; - GLEW_VERSION_1_3 = GL_TRUE; - GLEW_VERSION_1_4 = GL_FALSE; - GLEW_VERSION_1_5 = GL_FALSE; - GLEW_VERSION_2_0 = GL_FALSE; - } - if (s[minor] == '2') - { - GLEW_VERSION_1_1 = GL_TRUE; - GLEW_VERSION_1_2 = GL_TRUE; - GLEW_VERSION_1_3 = GL_FALSE; - GLEW_VERSION_1_4 = GL_FALSE; - GLEW_VERSION_1_5 = GL_FALSE; - GLEW_VERSION_2_0 = GL_FALSE; - } - if (s[minor] < '2') - { - GLEW_VERSION_1_1 = GL_TRUE; - GLEW_VERSION_1_2 = GL_FALSE; - GLEW_VERSION_1_3 = GL_FALSE; - GLEW_VERSION_1_4 = GL_FALSE; - GLEW_VERSION_1_5 = GL_FALSE; - GLEW_VERSION_2_0 = GL_FALSE; - } - } + /* query opengl version */ + s = glGetString(GL_VERSION); + if (!s) return GLEW_ERROR_NO_GL_VERSION; + major = _glewStrCLen(s, '.')-1; + minor = _glewStrCLen(s, '.')+1; + if (s+major == NULL + || s+minor-1 == NULL || s+minor == NULL + || (s[major] == 1 && s[minor] < '1')) + { + return GLEW_ERROR_GL_VERSION_10_ONLY; + } + else + { + if (s[major] >= '2') + { + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_TRUE; + GLEW_VERSION_1_3 = GL_TRUE; + GLEW_VERSION_1_4 = GL_TRUE; + GLEW_VERSION_1_5 = GL_TRUE; + GLEW_VERSION_2_0 = GL_TRUE; + } + else + { + if (s[minor] >= '5') + { + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_TRUE; + GLEW_VERSION_1_3 = GL_TRUE; + GLEW_VERSION_1_4 = GL_TRUE; + GLEW_VERSION_1_5 = GL_TRUE; + GLEW_VERSION_2_0 = GL_FALSE; + } + if (s[minor] == '4') + { + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_TRUE; + GLEW_VERSION_1_3 = GL_TRUE; + GLEW_VERSION_1_4 = GL_TRUE; + GLEW_VERSION_1_5 = GL_FALSE; + GLEW_VERSION_2_0 = GL_FALSE; + } + if (s[minor] == '3') + { + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_TRUE; + GLEW_VERSION_1_3 = GL_TRUE; + GLEW_VERSION_1_4 = GL_FALSE; + GLEW_VERSION_1_5 = GL_FALSE; + GLEW_VERSION_2_0 = GL_FALSE; + } + if (s[minor] == '2') + { + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_TRUE; + GLEW_VERSION_1_3 = GL_FALSE; + GLEW_VERSION_1_4 = GL_FALSE; + GLEW_VERSION_1_5 = GL_FALSE; + GLEW_VERSION_2_0 = GL_FALSE; + } + if (s[minor] < '2') + { + GLEW_VERSION_1_1 = GL_TRUE; + GLEW_VERSION_1_2 = GL_FALSE; + GLEW_VERSION_1_3 = GL_FALSE; + GLEW_VERSION_1_4 = GL_FALSE; + GLEW_VERSION_1_5 = GL_FALSE; + GLEW_VERSION_2_0 = GL_FALSE; + } + } + } } /* initialize extensions */