revision 1210:79bbd30363f4
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 1210:79bbd30363f4 |
parent | 1209:e606e65eaf54 |
child | 1211:eecdeb37934a |
author | nkeynes |
date | Tue Feb 07 14:27:13 2012 +1000 (12 years ago) |
Add wrangling for some of the core vs EXT/ARB versions of functions + macros
config.h.in | view | annotate | diff | log | ||
configure | view | annotate | diff | log | ||
configure.in | view | annotate | diff | log | ||
src/drivers/gl_fbo.c | view | annotate | diff | log | ||
src/pvr2/glutil.h | view | annotate | diff | log | ||
src/pvr2/texcache.c | view | annotate | diff | log |
1.1 --- a/config.h.in Tue Feb 07 11:59:07 2012 +10001.2 +++ b/config.h.in Tue Feb 07 14:27:13 2012 +10001.3 @@ -106,8 +106,11 @@1.4 /* Have Color Clamp */1.5 #undef HAVE_OPENGL_CLAMP_COLOR1.7 +/* Have 2.0 framebuffer_object support */1.8 +#undef HAVE_OPENGL_FBO1.9 +1.10 /* Have EXT_framebuffer_object support */1.11 -#undef HAVE_OPENGL_FBO1.12 +#undef HAVE_OPENGL_FBO_EXT1.14 /* Have 2.0 shader support */1.15 #undef HAVE_OPENGL_SHADER
2.1 --- a/configure Tue Feb 07 11:59:07 2012 +10002.2 +++ b/configure Tue Feb 07 14:27:13 2012 +10002.3 @@ -11258,6 +11258,95 @@2.4 fi2.7 +{ echo "$as_me:$LINENO: checking for glGenFramebuffers" >&52.8 +echo $ECHO_N "checking for glGenFramebuffers... $ECHO_C" >&6; }2.9 +if test "${ac_cv_func_glGenFramebuffers+set}" = set; then2.10 + echo $ECHO_N "(cached) $ECHO_C" >&62.11 +else2.12 + cat >conftest.$ac_ext <<_ACEOF2.13 +/* confdefs.h. */2.14 +_ACEOF2.15 +cat confdefs.h >>conftest.$ac_ext2.16 +cat >>conftest.$ac_ext <<_ACEOF2.17 +/* end confdefs.h. */2.18 +/* Define glGenFramebuffers to an innocuous variant, in case <limits.h> declares glGenFramebuffers.2.19 + For example, HP-UX 11i <limits.h> declares gettimeofday. */2.20 +#define glGenFramebuffers innocuous_glGenFramebuffers2.21 +2.22 +/* System header to define __stub macros and hopefully few prototypes,2.23 + which can conflict with char glGenFramebuffers (); below.2.24 + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since2.25 + <limits.h> exists even on freestanding compilers. */2.26 +2.27 +#ifdef __STDC__2.28 +# include <limits.h>2.29 +#else2.30 +# include <assert.h>2.31 +#endif2.32 +2.33 +#undef glGenFramebuffers2.34 +2.35 +/* Override any GCC internal prototype to avoid an error.2.36 + Use char because int might match the return type of a GCC2.37 + builtin and then its argument prototype would still apply. */2.38 +#ifdef __cplusplus2.39 +extern "C"2.40 +#endif2.41 +char glGenFramebuffers ();2.42 +/* The GNU C library defines this for functions which it implements2.43 + to always fail with ENOSYS. Some functions are actually named2.44 + something starting with __ and the normal name is an alias. */2.45 +#if defined __stub_glGenFramebuffers || defined __stub___glGenFramebuffers2.46 +choke me2.47 +#endif2.48 +2.49 +int2.50 +main ()2.51 +{2.52 +return glGenFramebuffers ();2.53 + ;2.54 + return 0;2.55 +}2.56 +_ACEOF2.57 +rm -f conftest.$ac_objext conftest$ac_exeext2.58 +if { (ac_try="$ac_link"2.59 +case "(($ac_try" in2.60 + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;2.61 + *) ac_try_echo=$ac_try;;2.62 +esac2.63 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&52.64 + (eval "$ac_link") 2>conftest.er12.65 + ac_status=$?2.66 + grep -v '^ *+' conftest.er1 >conftest.err2.67 + rm -f conftest.er12.68 + cat conftest.err >&52.69 + echo "$as_me:$LINENO: \$? = $ac_status" >&52.70 + (exit $ac_status); } && {2.71 + test -z "$ac_c_werror_flag" ||2.72 + test ! -s conftest.err2.73 + } && test -s conftest$ac_exeext &&2.74 + $as_test_x conftest$ac_exeext; then2.75 + ac_cv_func_glGenFramebuffers=yes2.76 +else2.77 + echo "$as_me: failed program was:" >&52.78 +sed 's/^/| /' conftest.$ac_ext >&52.79 +2.80 + ac_cv_func_glGenFramebuffers=no2.81 +fi2.82 +2.83 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \2.84 + conftest$ac_exeext conftest.$ac_ext2.85 +fi2.86 +{ echo "$as_me:$LINENO: result: $ac_cv_func_glGenFramebuffers" >&52.87 +echo "${ECHO_T}$ac_cv_func_glGenFramebuffers" >&6; }2.88 +if test $ac_cv_func_glGenFramebuffers = yes; then2.89 +2.90 +cat >>confdefs.h <<\_ACEOF2.91 +#define HAVE_OPENGL_FBO 12.92 +_ACEOF2.93 +2.94 +fi2.95 +2.96 { echo "$as_me:$LINENO: checking for glGenFramebuffersEXT" >&52.97 echo $ECHO_N "checking for glGenFramebuffersEXT... $ECHO_C" >&6; }2.98 if test "${ac_cv_func_glGenFramebuffersEXT+set}" = set; then2.99 @@ -11342,7 +11431,7 @@2.100 if test $ac_cv_func_glGenFramebuffersEXT = yes; then2.102 cat >>confdefs.h <<\_ACEOF2.103 -#define HAVE_OPENGL_FBO 12.104 +#define HAVE_OPENGL_FBO_EXT 12.105 _ACEOF2.107 fi
3.1 --- a/configure.in Tue Feb 07 11:59:07 2012 +10003.2 +++ b/configure.in Tue Feb 07 14:27:13 2012 +10003.3 @@ -286,7 +286,8 @@3.4 AM_CONDITIONAL(VIDEO_NSGL, [test "x$HAVE_NSGL" = "xyes"])3.6 dnl Check for optional (but highly desireable) OpenGL features3.7 -AC_CHECK_FUNC(glGenFramebuffersEXT, [ AC_DEFINE([HAVE_OPENGL_FBO],1,[Have EXT_framebuffer_object support]) ], [])3.8 +AC_CHECK_FUNC(glGenFramebuffers, [ AC_DEFINE([HAVE_OPENGL_FBO],1,[Have 2.0 framebuffer_object support]) ], [])3.9 +AC_CHECK_FUNC(glGenFramebuffersEXT, [ AC_DEFINE([HAVE_OPENGL_FBO_EXT],1,[Have EXT_framebuffer_object support]) ], [])3.10 AC_CHECK_FUNC(glCreateShader, [ AC_DEFINE([HAVE_OPENGL_SHADER],1,[Have 2.0 shader support]) ], [])3.11 AC_CHECK_FUNC(glCreateShaderObjectARB, [ AC_DEFINE([HAVE_OPENGL_SHADER_ARB],1,[Have ARB shader support]) ], [])3.12 AC_CHECK_FUNC(glClampColorARB, [ AC_DEFINE([HAVE_OPENGL_CLAMP_COLOR],1,[Have Color Clamp]) ], [])
4.1 --- a/src/drivers/gl_fbo.c Tue Feb 07 11:59:07 2012 +10004.2 +++ b/src/drivers/gl_fbo.c Tue Feb 07 14:27:13 2012 +10004.3 @@ -30,7 +30,7 @@4.4 #include "drivers/video_gl.h"4.5 #include "pvr2/glutil.h"4.7 -#ifdef HAVE_OPENGL_FBO4.8 +#if defined(HAVE_OPENGL_FBO) || defined(HAVE_OPENGL_FBO_EXT)4.10 #define MAX_FRAMEBUFFERS 24.11 #define MAX_TEXTURES_PER_FB 164.12 @@ -62,7 +62,7 @@4.13 static gboolean gl_fbo_have_packed_stencil = FALSE;4.14 static struct gl_fbo_info fbo[MAX_FRAMEBUFFERS];4.16 -#define ATTACHMENT_POINT(n) (GL_COLOR_ATTACHMENT0_EXT+(n))4.17 +#define ATTACHMENT_POINT(n) (GL_COLOR_ATTACHMENT0+(n))4.18 static int last_used_fbo;4.20 gboolean gl_fbo_is_supported()4.21 @@ -80,9 +80,9 @@4.22 GLuint fbids[MAX_FRAMEBUFFERS];4.23 GLuint rbids[MAX_FRAMEBUFFERS*2]; /* depth buffer, stencil buffer per fb */4.25 - glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, &gl_fbo_max_attachments);4.26 - glGenFramebuffersEXT( MAX_FRAMEBUFFERS, &fbids[0] );4.27 - glGenRenderbuffersEXT( MAX_FRAMEBUFFERS*2, &rbids[0] );4.28 + glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &gl_fbo_max_attachments);4.29 + glGenFramebuffers( MAX_FRAMEBUFFERS, &fbids[0] );4.30 + glGenRenderbuffers( MAX_FRAMEBUFFERS*2, &rbids[0] );4.31 for( i=0; i<MAX_FRAMEBUFFERS; i++ ) {4.32 fbo[i].fb_id = fbids[i];4.33 fbo[i].depth_id = rbids[i*2];4.34 @@ -114,28 +114,28 @@4.35 driver->read_render_buffer = gl_fbo_read_render_buffer;4.37 gl_fbo_test_framebuffer();4.38 - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);4.39 + glBindFramebuffer(GL_FRAMEBUFFER, 0);4.40 }4.42 void gl_fbo_shutdown()4.43 {4.44 int i;4.45 - glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );4.46 + glBindFramebuffer( GL_FRAMEBUFFER, 0 );4.47 for( i=0; i<MAX_FRAMEBUFFERS; i++ ) {4.48 - glDeleteFramebuffersEXT( 1, &fbo[i].fb_id );4.49 - glDeleteRenderbuffersEXT( 2, &fbo[i].depth_id );4.50 + glDeleteFramebuffers( 1, &fbo[i].fb_id );4.51 + glDeleteRenderbuffers( 2, &fbo[i].depth_id );4.52 }4.53 }4.55 static void gl_fbo_setup_framebuffer( int bufno, int width, int height )4.56 {4.57 int i;4.58 - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo[bufno].fb_id);4.59 + glBindFramebuffer(GL_FRAMEBUFFER, fbo[bufno].fb_id);4.61 /* Clear out any existing texture attachments */4.62 for( i=0; i<gl_fbo_max_attachments; i++ ) {4.63 if( fbo[bufno].tex_ids[i] != -1 ) {4.64 - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, ATTACHMENT_POINT(i),4.65 + glFramebufferTexture2D(GL_FRAMEBUFFER, ATTACHMENT_POINT(i),4.66 GL_TEXTURE_RECTANGLE_ARB, 0, 0);4.67 fbo[bufno].tex_ids[i] = -1;4.68 }4.69 @@ -143,17 +143,17 @@4.71 /* Setup the renderbuffers */4.72 if( gl_fbo_have_packed_stencil ) {4.73 - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fbo[bufno].depth_id);4.74 - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH24_STENCIL8_EXT, width, height);4.75 - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,4.76 - GL_RENDERBUFFER_EXT, fbo[bufno].depth_id);4.77 - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,4.78 - GL_RENDERBUFFER_EXT, fbo[bufno].depth_id);4.79 + glBindRenderbuffer(GL_RENDERBUFFER, fbo[bufno].depth_id);4.80 + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_EXT, width, height);4.81 + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,4.82 + GL_RENDERBUFFER, fbo[bufno].depth_id);4.83 + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,4.84 + GL_RENDERBUFFER, fbo[bufno].depth_id);4.85 } else {4.86 - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fbo[bufno].depth_id);4.87 - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, width, height);4.88 - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,4.89 - GL_RENDERBUFFER_EXT, fbo[bufno].depth_id);4.90 + glBindRenderbuffer(GL_RENDERBUFFER, fbo[bufno].depth_id);4.91 + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);4.92 + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,4.93 + GL_RENDERBUFFER, fbo[bufno].depth_id);4.94 /* In theory you could attach a separate stencil buffer. In practice this4.95 * isn't actually supported by any hardware I've had access to, so we're4.96 * stencil-less.4.97 @@ -183,7 +183,7 @@4.98 last_used_fbo = bufno;4.99 }4.100 if( fbo[bufno].width == width && fbo[bufno].height == height ) {4.101 - glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fbo[bufno].fb_id );4.102 + glBindFramebuffer( GL_FRAMEBUFFER, fbo[bufno].fb_id );4.103 } else {4.104 gl_fbo_setup_framebuffer( bufno, width, height );4.105 }4.106 @@ -210,7 +210,7 @@4.107 }4.108 fbo[fbo_no].tex_ids[attach] = tex_id;4.109 glBindTexture( GL_TEXTURE_RECTANGLE_ARB, 0 ); // Ensure the output texture is unbound4.110 - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, ATTACHMENT_POINT(attach),4.111 + glFramebufferTexture2D(GL_FRAMEBUFFER, ATTACHMENT_POINT(attach),4.112 GL_TEXTURE_RECTANGLE_ARB, tex_id, 0 );4.113 /* Set draw/read buffers by default */4.114 glDrawBuffer(ATTACHMENT_POINT(attach));4.115 @@ -226,8 +226,8 @@4.116 render_buffer_t buffer = gl_fbo_create_render_buffer( 640, 480, 0 );4.117 gl_fbo_set_render_target(buffer);4.119 - GLint status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);4.120 - if( status != GL_FRAMEBUFFER_COMPLETE_EXT ) {4.121 + GLint status = glCheckFramebufferStatus(GL_FRAMEBUFFER);4.122 + if( status != GL_FRAMEBUFFER_COMPLETE ) {4.123 ERROR( "Framebuffer failure: %x", status );4.124 result = FALSE;4.125 }4.126 @@ -274,8 +274,8 @@4.127 if( fbo[i].width == buffer->width && fbo[i].height == buffer->height ) {4.128 for( j=0; j<gl_fbo_max_attachments; j++ ) {4.129 if( fbo[i].tex_ids[j] == buffer->buf_id ) {4.130 - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo[i].fb_id);4.131 - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, ATTACHMENT_POINT(j),4.132 + glBindFramebuffer(GL_FRAMEBUFFER, fbo[i].fb_id);4.133 + glFramebufferTexture2D(GL_FRAMEBUFFER, ATTACHMENT_POINT(j),4.134 GL_TEXTURE_RECTANGLE_ARB, GL_NONE, 0 );4.135 fbo[i].tex_ids[j] = -1;4.136 return;4.137 @@ -343,7 +343,7 @@4.139 void gl_fbo_detach()4.140 {4.141 - glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );4.142 + glBindFramebuffer( GL_FRAMEBUFFER, 0 );4.143 /* Make sure texture attachment is not a current draw/read buffer */4.144 glDrawBuffer( GL_FRONT );4.145 glReadBuffer( GL_FRONT );
5.1 --- a/src/pvr2/glutil.h Tue Feb 07 11:59:07 2012 +10005.2 +++ b/src/pvr2/glutil.h Tue Feb 07 14:27:13 2012 +10005.3 @@ -57,7 +57,51 @@5.5 /****** Extension variant wrangling *****/5.7 +#if defined(GL_MIRRORED_REPEAT_ARB) && !defined(GL_MIRRORED_REPEAT)5.8 +#define GL_MIRRORED_REPEAT GL_MIRRORED_REPEAT_ARB5.9 +#endif5.11 +#if defined(GL_FRAMEBUFFER_EXT) && !defined(GL_FRAMEBUFFER)5.12 +#define GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT5.13 +#endif5.14 +5.15 +#if defined(GL_RENDERBUFFER_EXT) && !defined(GL_RENDERBUFFER)5.16 +#define GL_RENDERBUFFER GL_RENDERBUFFER_EXT5.17 +#endif5.18 +5.19 +#if defined(GL_COLOR_ATTACHMENT0_EXT) && !defined(GL_COLOR_ATTACHMENT0)5.20 +#define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT5.21 +#endif5.22 +5.23 +#if defined(GL_MAX_COLOR_ATTACHMENTS_EXT) && !defined(GL_MAX_COLOR_ATTACHMENTS)5.24 +#define GL_MAX_COLOR_ATTACHMENTS GL_MAX_COLOR_ATTACHMENTS_EXT5.25 +#endif5.26 +5.27 +#if defined(GL_STENCIL_ATTACHMENT_EXT) && !defined(GL_STENCIL_ATTACHMENT)5.28 +#define GL_STENCIL_ATTACHMENT GL_STENCIL_ATTACHMENT_EXT5.29 +#endif5.30 +5.31 +#if defined(GL_DEPTH_ATTACHMENT_EXT) && !defined(GL_DEPTH_ATTACHMENT)5.32 +#define GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_EXT5.33 +#endif5.34 +5.35 +#if defined(GL_FRAMEBUFFER_COMPLETE_EXT) && !defined(GL_FRAMEBUFFER_COMPLETE)5.36 +#define GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_EXT5.37 +#endif5.38 +5.39 +#if defined(HAVE_OPENGL_FBO_EXT) && !defined(HAVE_OPENGL_FBO)5.40 +#define glGenFramebuffers glGenFramebuffersEXT5.41 +#define glGenRenderbuffers glGenRenderbuffersEXT5.42 +#define glBindFramebuffer glBindFramebufferEXT5.43 +#define glDeleteFramebuffers glDeleteFramebuffersEXT5.44 +#define glDeleteRenderbuffers glDeleteRenderbuffersEXT5.45 +#define glBindFramebuffer glBindFramebufferEXT5.46 +#define glBindRenderbuffer glBindRenderbufferEXT5.47 +#define glRenderbufferStorage glRenderbufferStorageEXT5.48 +#define glFramebufferRenderbuffer glFramebufferRenderbufferEXT5.49 +#define glFramebufferTexture2D glFramebufferTexture2DEXT5.50 +#define glCheckFramebufferStatus glCheckFramebufferStatusEXT5.51 +#endif5.54 /****** Shader handling (gl_sl.c) *****/
6.1 --- a/src/pvr2/texcache.c Tue Feb 07 11:59:07 2012 +10006.2 +++ b/src/pvr2/texcache.c Tue Feb 07 14:27:13 2012 +10006.3 @@ -790,16 +790,16 @@6.5 /* Set texture parameters from the poly2 word */6.6 if( POLY2_TEX_CLAMP_U(poly2_word) ) {6.7 - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );6.8 + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );6.9 } else if( POLY2_TEX_MIRROR_U(poly2_word) ) {6.10 - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT_ARB );6.11 + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT );6.12 } else {6.13 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );6.14 }6.15 if( POLY2_TEX_CLAMP_V(poly2_word) ) {6.16 - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );6.17 + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );6.18 } else if( POLY2_TEX_MIRROR_V(poly2_word) ) {6.19 - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT_ARB );6.20 + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT );6.21 } else {6.22 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );6.23 }
.