From 782992e8036113e9f9dbf669e2448244ceda5d16 Mon Sep 17 00:00:00 2001 From: ikits Date: Thu, 17 Mar 2005 01:45:46 +0000 Subject: [PATCH] added check for crippled hardware git-svn-id: https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew@409 783a27ee-832a-0410-bc00-9f386506c6dd --- auto/src/glew_init_gl.c | 147 ++++++++++++++++++++++------------------ 1 file changed, 80 insertions(+), 67 deletions(-) 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 */