summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Roberts <neil@linux.intel.com>2012-12-13 16:28:41 +0000
committerNeil Roberts <neil@linux.intel.com>2013-01-08 14:11:43 +0000
commit5f621589467ab961f5130590298dc8e26d658a92 (patch)
tree3767e66f433763c3f81da8b1031b4b5b1e9759fe
parent425cfb2675912a2cbcaaaeed7c2196d563948222 (diff)
downloadcogl-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.c23
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 |