[Cogl] [PATCH] Remove the public ARBfp feature

Neil Roberts neil at linux.intel.com
Wed Jan 30 06:21:06 PST 2013


Cogl no longer publicly exposes ARBfps so the feature check is
useless. This patch converts it to be an internal private feature
which is used to determine whether we can use the ARBfp fragend.
---
 cogl/cogl-context.c                                   | 2 +-
 cogl/cogl-context.h                                   | 2 --
 cogl/cogl-private.h                                   | 3 ++-
 cogl/driver/gl/cogl-pipeline-opengl.c                 | 2 +-
 cogl/driver/gl/gl/cogl-driver-gl.c                    | 2 +-
 cogl/driver/gl/gl/cogl-pipeline-progend-fixed-arbfp.c | 2 +-
 examples/cogl-info.c                                  | 5 -----
 7 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/cogl/cogl-context.c b/cogl/cogl-context.c
index ea2b1c0..21f87f4 100644
--- a/cogl/cogl-context.c
+++ b/cogl/cogl-context.c
@@ -85,7 +85,7 @@ _cogl_init_feature_overrides (CoglContext *ctx)
     ctx->private_feature_flags &= ~COGL_PRIVATE_FEATURE_PBOS;
 
   if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_DISABLE_ARBFP)))
-    COGL_FLAGS_SET (ctx->features, COGL_FEATURE_ID_ARBFP, FALSE);
+    ctx->private_feature_flags &= ~COGL_PRIVATE_FEATURE_ARBFP;
 
   if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_DISABLE_GLSL)))
     COGL_FLAGS_SET (ctx->features, COGL_FEATURE_ID_GLSL, FALSE);
diff --git a/cogl/cogl-context.h b/cogl/cogl-context.h
index 160f5cd..25e1d24 100644
--- a/cogl/cogl-context.h
+++ b/cogl/cogl-context.h
@@ -184,7 +184,6 @@ cogl_is_context (void *object);
  * @COGL_FEATURE_ID_ONSCREEN_MULTIPLE: Multiple onscreen framebuffers
  *    supported.
  * @COGL_FEATURE_ID_GLSL: GLSL support
- * @COGL_FEATURE_ID_ARBFP: ARBFP support
  * @COGL_FEATURE_ID_UNSIGNED_INT_INDICES: Set if
  *     %COGL_INDICES_TYPE_UNSIGNED_INT is supported in
  *     cogl_indices_new().
@@ -220,7 +219,6 @@ typedef enum _CoglFeatureID
   COGL_FEATURE_ID_TEXTURE_RECTANGLE,
   COGL_FEATURE_ID_TEXTURE_3D,
   COGL_FEATURE_ID_GLSL,
-  COGL_FEATURE_ID_ARBFP,
   COGL_FEATURE_ID_OFFSCREEN,
   COGL_FEATURE_ID_OFFSCREEN_MULTISAMPLE,
   COGL_FEATURE_ID_ONSCREEN_MULTIPLE,
diff --git a/cogl/cogl-private.h b/cogl/cogl-private.h
index d1c32e8..08ee775 100644
--- a/cogl/cogl-private.h
+++ b/cogl/cogl-private.h
@@ -56,7 +56,8 @@ typedef enum
   COGL_PRIVATE_FEATURE_QUERY_TEXTURE_PARAMETERS = 1L<<20,
   COGL_PRIVATE_FEATURE_ALPHA_TEXTURES = 1L<<21,
   COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE = 1L<<22,
-  COGL_PRIVATE_FEATURE_TEXTURE_MAX_LEVEL = 1L<<23
+  COGL_PRIVATE_FEATURE_TEXTURE_MAX_LEVEL = 1L<<23,
+  COGL_PRIVATE_FEATURE_ARBFP = 1L<<24
 } CoglPrivateFeatureFlags;
 
 /* Sometimes when evaluating pipelines, either during comparisons or
diff --git a/cogl/driver/gl/cogl-pipeline-opengl.c b/cogl/driver/gl/cogl-pipeline-opengl.c
index 8fc4a55..0a7b4db 100644
--- a/cogl/driver/gl/cogl-pipeline-opengl.c
+++ b/cogl/driver/gl/cogl-pipeline-opengl.c
@@ -662,7 +662,7 @@ get_max_activateable_texture_units (void)
              uploaded (but doesn't necessarily relate to how many texture
              images can be sampled) */
           if (cogl_has_feature (ctx, COGL_FEATURE_ID_GLSL) ||
-              cogl_has_feature (ctx, COGL_FEATURE_ID_ARBFP))
+              (ctx->private_feature_flags & COGL_PRIVATE_FEATURE_ARBFP))
             /* Previously this code subtracted the value by one but there
                was no explanation for why it did this and it doesn't seem
                to make sense so it has been removed */
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/driver/gl/gl/cogl-driver-gl.c
index 140a0e7..efe25c1 100644
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -465,7 +465,7 @@ _cogl_driver_update_features (CoglContext *ctx,
     private_flags |= COGL_PRIVATE_FEATURE_BLEND_CONSTANT;
 
   if (ctx->glGenPrograms)
-    COGL_FLAGS_SET (ctx->features, COGL_FEATURE_ID_ARBFP, TRUE);
+    private_flags |= COGL_PRIVATE_FEATURE_ARBFP;
 
   if (ctx->glCreateProgram)
     COGL_FLAGS_SET (ctx->features, COGL_FEATURE_ID_GLSL, TRUE);
diff --git a/cogl/driver/gl/gl/cogl-pipeline-progend-fixed-arbfp.c b/cogl/driver/gl/gl/cogl-pipeline-progend-fixed-arbfp.c
index 31e715b..3d41f92 100644
--- a/cogl/driver/gl/gl/cogl-pipeline-progend-fixed-arbfp.c
+++ b/cogl/driver/gl/gl/cogl-pipeline-progend-fixed-arbfp.c
@@ -58,7 +58,7 @@ _cogl_pipeline_progend_fixed_arbfp_start (CoglPipeline *pipeline)
   /* Validate that we can handle the fragment state using ARBfp
    */
 
-  if (!cogl_has_feature (ctx, COGL_FEATURE_ID_ARBFP))
+  if (!(ctx->private_feature_flags & COGL_PRIVATE_FEATURE_ARBFP))
     return FALSE;
 
   /* Fragment snippets are only supported in the GLSL fragend */
diff --git a/examples/cogl-info.c b/examples/cogl-info.c
index 3eacdc3..50721b2 100644
--- a/examples/cogl-info.c
+++ b/examples/cogl-info.c
@@ -70,11 +70,6 @@ struct {
     "GLSL support"
   },
   {
-    COGL_FEATURE_ID_ARBFP,
-    "ARBFP support",
-    "ARBFP support"
-  },
-  {
     COGL_FEATURE_ID_UNSIGNED_INT_INDICES,
     "Unsigned integer indices",
     "COGL_RENDERER_INDICES_TYPE_UNSIGNED_INT is supported in cogl_indices_new()."
-- 
1.7.11.3.g3c3efa5



More information about the Cogl mailing list