diff options
author | Neil Roberts <neil@linux.intel.com> | 2012-12-13 16:28:41 +0000 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2013-01-08 14:11:43 +0000 |
commit | 5f621589467ab961f5130590298dc8e26d658a92 (patch) | |
tree | 3767e66f433763c3f81da8b1031b4b5b1e9759fe | |
parent | 425cfb2675912a2cbcaaaeed7c2196d563948222 (diff) | |
download | cogl-5f621589467ab961f5130590298dc8e26d658a92.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>
-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 2389892c..d0776eed 100644 --- a/cogl/driver/gl/gl/cogl-driver-gl.c +++ b/cogl/driver/gl/gl/cogl-driver-gl.c @@ -357,7 +357,6 @@ _cogl_driver_update_features (CoglContext *ctx, { CoglPrivateFeatureFlags private_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* @@ -440,10 +439,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) { COGL_FLAGS_SET (ctx->features, COGL_FEATURE_ID_OFFSCREEN, TRUE); @@ -548,11 +543,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 | |