diff options
author | Neil Roberts <neil@linux.intel.com> | 2012-12-13 16:28:41 +0000 |
---|---|---|
committer | Robert Bragg <robert@linux.intel.com> | 2013-01-21 14:20:48 +0000 |
commit | 7989d91e849da7200245358633ad4119903423a3 (patch) | |
tree | 7ef577fd98c5fb367c29aa043b3445045dc060b2 | |
parent | a08d10ee773da4db20e24b152f2edb93e475abdb (diff) | |
download | cogl-7989d91e849da7200245358633ad4119903423a3.tar.gz |
Don't try to use clip planes on GL3
GL3 has support for clip planes but they are used differently and
involve writing to a builtin output variable in the vertex shader. The
current clip plane code assumes it is only used with a fixed function
driver and tries to directly push to the matrix builtins. This
obviously won't work on GL3 so for now let's just disable clip planes.
Reviewed-by: Robert Bragg <robert@linux.intel.com>
(cherry picked from commit 5f621589467ab961f5130590298dc8e26d658a92)
-rw-r--r-- | cogl/driver/gl/gl/cogl-driver-gl.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/driver/gl/gl/cogl-driver-gl.c index 6025d58f..e4b45cb5 100644 --- a/cogl/driver/gl/gl/cogl-driver-gl.c +++ b/cogl/driver/gl/gl/cogl-driver-gl.c @@ -359,7 +359,6 @@ _cogl_driver_update_features (CoglContext *ctx, CoglPrivateFeatureFlags private_flags = 0; CoglFeatureFlags flags = 0; char **gl_extensions; - int max_clip_planes = 0; int gl_major = 0, gl_minor = 0; /* We have to special case getting the pointer to the glGetString* @@ -449,10 +448,6 @@ _cogl_driver_update_features (CoglContext *ctx, if (_cogl_check_extension ("GL_MESA_pack_invert", gl_extensions)) private_flags |= COGL_PRIVATE_FEATURE_MESA_PACK_INVERT; - GE( ctx, glGetIntegerv (GL_MAX_CLIP_PLANES, &max_clip_planes) ); - if (max_clip_planes >= 4) - private_flags |= COGL_PRIVATE_FEATURE_FOUR_CLIP_PLANES; - if (ctx->glGenRenderbuffers) { flags |= COGL_FEATURE_OFFSCREEN; @@ -580,11 +575,19 @@ _cogl_driver_update_features (CoglContext *ctx, private_flags |= COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE; if (ctx->driver == COGL_DRIVER_GL) - /* Features which are not available in GL 3 */ - private_flags |= (COGL_PRIVATE_FEATURE_FIXED_FUNCTION | - COGL_PRIVATE_FEATURE_ALPHA_TEST | - COGL_PRIVATE_FEATURE_QUADS | - COGL_PRIVATE_FEATURE_ALPHA_TEXTURES); + { + int max_clip_planes = 0; + + /* Features which are not available in GL 3 */ + private_flags |= (COGL_PRIVATE_FEATURE_FIXED_FUNCTION | + COGL_PRIVATE_FEATURE_ALPHA_TEST | + COGL_PRIVATE_FEATURE_QUADS | + COGL_PRIVATE_FEATURE_ALPHA_TEXTURES); + + GE( ctx, glGetIntegerv (GL_MAX_CLIP_PLANES, &max_clip_planes) ); + if (max_clip_planes >= 4) + private_flags |= COGL_PRIVATE_FEATURE_FOUR_CLIP_PLANES; + } private_flags |= (COGL_PRIVATE_FEATURE_READ_PIXELS_ANY_FORMAT | COGL_PRIVATE_FEATURE_ANY_GL | |