[ioquake3] 17/33: Load OpenGL ES 1.1 function procs

Simon McVittie smcv at debian.org
Mon Oct 30 14:00:27 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository ioquake3.

commit a83ae01d93c778274fa05e0961c39775f33b6328
Author: Zack Middleton <zack at cloemail.com>
Date:   Mon Oct 2 04:47:17 2017 -0500

    Load OpenGL ES 1.1 function procs
---
 code/renderercommon/qgl.h | 73 ++++++++++++++++++++++++++---------------------
 code/sdl/sdl_glimp.c      | 18 ++++++++----
 2 files changed, 53 insertions(+), 38 deletions(-)

diff --git a/code/renderercommon/qgl.h b/code/renderercommon/qgl.h
index ab9c35c..3377f92 100644
--- a/code/renderercommon/qgl.h
+++ b/code/renderercommon/qgl.h
@@ -45,31 +45,31 @@ extern void (APIENTRYP qglUnlockArraysEXT) (void);
 // GL function loader, based on https://gist.github.com/rygorous/16796a0c876cf8a5f542caddb55bce8a
 // get missing functions from code/SDL2/include/SDL_opengl.h
 
-// OpenGL 1.0
-#define QGL_1_0_PROCS \
+// OpenGL 1.0/1.1 and OpenGL ES 1.0
+#define QGL_1_1_PROCS \
 	GLE(void, AlphaFunc, GLenum func, GLclampf ref) \
-	GLE(void, Begin, GLenum mode) \
+	GLE(void, BindTexture, GLenum target, GLuint texture) \
 	GLE(void, BlendFunc, GLenum sfactor, GLenum dfactor) \
 	GLE(void, ClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) \
-	GLE(void, ClearDepth, GLclampd depth) \
 	GLE(void, Clear, GLbitfield mask) \
 	GLE(void, ClearStencil, GLint s) \
-	GLE(void, ClipPlane, GLenum plane, const GLdouble *equation) \
-	GLE(void, Color3f, GLfloat red, GLfloat green, GLfloat blue) \
 	GLE(void, Color4f, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) \
-	GLE(void, Color4ubv, const GLubyte *v) \
 	GLE(void, ColorMask, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) \
+	GLE(void, ColorPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
+	GLE(void, CopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) \
 	GLE(void, CullFace, GLenum mode) \
+	GLE(void, DeleteTextures, GLsizei n, const GLuint *textures) \
 	GLE(void, DepthFunc, GLenum func) \
 	GLE(void, DepthMask, GLboolean flag) \
-	GLE(void, DepthRange, GLclampd near_val, GLclampd far_val) \
+	GLE(void, DisableClientState, GLenum cap) \
 	GLE(void, Disable, GLenum cap) \
-	GLE(void, DrawBuffer, GLenum mode) \
+	GLE(void, DrawArrays, GLenum mode, GLint first, GLsizei count) \
+	GLE(void, DrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) \
+	GLE(void, EnableClientState, GLenum cap) \
 	GLE(void, Enable, GLenum cap) \
-	GLE(void, End, void) \
 	GLE(void, Finish, void) \
 	GLE(void, Flush, void) \
-	GLE(void, Frustum, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val) \
+	GLE(void, GenTextures, GLsizei n, GLuint *textures ) \
 	GLE(void, GetBooleanv, GLenum pname, GLboolean *params) \
 	GLE(GLenum, GetError, void) \
 	GLE(void, GetIntegerv, GLenum pname, GLint *params) \
@@ -78,8 +78,6 @@ extern void (APIENTRYP qglUnlockArraysEXT) (void);
 	GLE(void, LoadIdentity, void) \
 	GLE(void, LoadMatrixf, const GLfloat *m) \
 	GLE(void, MatrixMode, GLenum mode) \
-	GLE(void, Ortho, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val) \
-	GLE(void, PolygonMode, GLenum face, GLenum mode) \
 	GLE(void, PolygonOffset, GLfloat factor, GLfloat units) \
 	GLE(void, PopMatrix, void) \
 	GLE(void, PushMatrix, void) \
@@ -89,33 +87,43 @@ extern void (APIENTRYP qglUnlockArraysEXT) (void);
 	GLE(void, StencilFunc, GLenum func, GLint ref, GLuint mask) \
 	GLE(void, StencilMask, GLuint mask) \
 	GLE(void, StencilOp, GLenum fail, GLenum zfail, GLenum zpass) \
-	GLE(void, TexCoord2f, GLfloat s, GLfloat t) \
-	GLE(void, TexCoord2fv, const GLfloat *v) \
+	GLE(void, TexCoordPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
 	GLE(void, TexEnvf, GLenum target, GLenum pname, GLfloat param) \
 	GLE(void, TexImage2D, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) \
 	GLE(void, TexParameterf, GLenum target, GLenum pname, GLfloat param) \
 	GLE(void, TexParameteri, GLenum target, GLenum pname, GLint param) \
+	GLE(void, TexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) \
 	GLE(void, Translatef, GLfloat x, GLfloat y, GLfloat z) \
+	GLE(void, VertexPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
+	GLE(void, Viewport, GLint x, GLint y, GLsizei width, GLsizei height) \
+
+// OpenGL 1.0/1.1 but not OpenGL ES 1.x
+#define QGL_DESKTOP_1_1_PROCS \
+	GLE(void, ArrayElement, GLint i) \
+	GLE(void, Begin, GLenum mode) \
+	GLE(void, ClearDepth, GLclampd depth) \
+	GLE(void, ClipPlane, GLenum plane, const GLdouble *equation) \
+	GLE(void, Color3f, GLfloat red, GLfloat green, GLfloat blue) \
+	GLE(void, Color4ubv, const GLubyte *v) \
+	GLE(void, DepthRange, GLclampd near_val, GLclampd far_val) \
+	GLE(void, DrawBuffer, GLenum mode) \
+	GLE(void, End, void) \
+	GLE(void, Frustum, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val) \
+	GLE(void, Ortho, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val) \
+	GLE(void, PolygonMode, GLenum face, GLenum mode) \
+	GLE(void, TexCoord2f, GLfloat s, GLfloat t) \
+	GLE(void, TexCoord2fv, const GLfloat *v) \
 	GLE(void, Vertex2f, GLfloat x, GLfloat y) \
 	GLE(void, Vertex3f, GLfloat x, GLfloat y, GLfloat z) \
 	GLE(void, Vertex3fv, const GLfloat *v) \
-	GLE(void, Viewport, GLint x, GLint y, GLsizei width, GLsizei height) \
 
-// OpenGL 1.1
-#define QGL_1_1_PROCS \
-	GLE(void, GenTextures, GLsizei n, GLuint *textures ) \
-	GLE(void, DeleteTextures, GLsizei n, const GLuint *textures) \
-	GLE(void, BindTexture, GLenum target, GLuint texture) \
-	GLE(void, EnableClientState, GLenum cap) \
-	GLE(void, DisableClientState, GLenum cap) \
-	GLE(void, ArrayElement, GLint i) \
-	GLE(void, DrawArrays, GLenum mode, GLint first, GLsizei count) \
-	GLE(void, DrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) \
-	GLE(void, TexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) \
-	GLE(void, CopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) \
-	GLE(void, VertexPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
-	GLE(void, ColorPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
-	GLE(void, TexCoordPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
+// OpenGL ES 1.1 but not desktop OpenGL 1.x
+#define QGL_ES_1_1_PROCS \
+	GLE(void, ClearDepthf, GLclampf depth) \
+	GLE(void, ClipPlanef, GLenum plane, const GLfloat *equation) \
+	GLE(void, DepthRangef, GLclampf near_val, GLclampf far_val) \
+	GLE(void, Frustumf, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) \
+	GLE(void, Orthof, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) \
 
 // OpenGL 1.3, was GL_ARB_texture_compression
 #define QGL_1_3_PROCS \
@@ -294,8 +302,9 @@ extern void (APIENTRYP qglUnlockArraysEXT) (void);
 	GLE(GLvoid, NamedFramebufferRenderbufferEXT, GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) \
 
 #define GLE(ret, name, ...) typedef ret APIENTRY name##proc(__VA_ARGS__); extern name##proc * qgl##name;
-QGL_1_0_PROCS;
 QGL_1_1_PROCS;
+QGL_DESKTOP_1_1_PROCS;
+QGL_ES_1_1_PROCS;
 QGL_1_3_PROCS;
 QGL_1_5_PROCS;
 QGL_2_0_PROCS;
diff --git a/code/sdl/sdl_glimp.c b/code/sdl/sdl_glimp.c
index 11b291c..e707bbe 100644
--- a/code/sdl/sdl_glimp.c
+++ b/code/sdl/sdl_glimp.c
@@ -64,8 +64,9 @@ void (APIENTRYP qglLockArraysEXT) (GLint first, GLsizei count);
 void (APIENTRYP qglUnlockArraysEXT) (void);
 
 #define GLE(ret, name, ...) name##proc * qgl##name;
-QGL_1_0_PROCS;
 QGL_1_1_PROCS;
+QGL_DESKTOP_1_1_PROCS;
+QGL_ES_1_1_PROCS;
 QGL_3_0_PROCS;
 #undef GLE
 
@@ -265,11 +266,15 @@ static qboolean GLimp_GetProcAddresses( void ) {
 		sscanf( version, "%d.%d", &qglMajorVersion, &qglMinorVersion );
 	}
 
-	// require OpenGL 1.1 or OpenGL ES 1.0
-	// FIXME: Not all of these functions are available in OpenGL ES
-	if ( QGL_VERSION_ATLEAST( 1, 1 ) /*|| QGLES_VERSION_ATLEAST( 1, 0 )*/ ) {
-		QGL_1_0_PROCS;
+	if ( QGL_VERSION_ATLEAST( 1, 1 ) ) {
 		QGL_1_1_PROCS;
+		QGL_DESKTOP_1_1_PROCS;
+	} else if ( qglesMajorVersion == 1 && qglesMinorVersion >= 1 ) {
+		// OpenGL ES 1.1 (2.0 is not backward compatible)
+		QGL_1_1_PROCS;
+		QGL_ES_1_1_PROCS;
+		// error so this doesn't segfault due to NULL desktop GL functions being used
+		Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s\n", version );
 	} else {
 		Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s\n", version );
 	}
@@ -298,8 +303,9 @@ static void GLimp_ClearProcAddresses( void ) {
 	qglesMajorVersion = 0;
 	qglesMinorVersion = 0;
 
-	QGL_1_0_PROCS;
 	QGL_1_1_PROCS;
+	QGL_DESKTOP_1_1_PROCS;
+	QGL_ES_1_1_PROCS;
 	QGL_3_0_PROCS;
 
 #undef GLE

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git



More information about the Pkg-games-commits mailing list