[Cogl] [PATCH] Remove legacy state

Neil Roberts neil at linux.intel.com
Tue Apr 17 09:22:15 PDT 2012


This removes the global legacy state for setting the depth state,
backface culling and global program.

The internal _cogl_push_source wrapper which takes a boolean to set
whether legacy state should be applied has been removed. The normal
cogl_push_source can always be used instead.

The CoglDrawFlag for disable legacy state has been removed. Similarly
the boolean argument to disable legacy state when drawing rectangles
has also been removed.

The legacy state testing in test-backface-culling had already been
partially removed in f951d0995f8a8 but the masks were not correctly
updated so it was not testing all of the combinations correctly.

The legacy state testing from test-depth-state has been removed.
---
 cogl/cogl-attribute-private.h         |    3 +-
 cogl/cogl-attribute.c                 |   13 ---
 cogl/cogl-blit.c                      |    2 +-
 cogl/cogl-clip-stack.c                |    3 +-
 cogl/cogl-context-private.h           |    8 --
 cogl/cogl-context.c                   |    8 --
 cogl/cogl-framebuffer.c               |   28 +++----
 cogl/cogl-framebuffer.h               |   16 ----
 cogl/cogl-journal.c                   |    3 +-
 cogl/cogl-pipeline-private.h          |    3 -
 cogl/cogl-pipeline.c                  |   28 ------
 cogl/cogl-primitives-private.h        |    3 +-
 cogl/cogl-primitives.c                |   31 +------
 cogl/cogl-private.h                   |    6 --
 cogl/cogl-texture.c                   |    2 +-
 cogl/cogl.c                           |  149 +++------------------------------
 cogl/cogl.symbols                     |    7 --
 cogl/cogl1-context.h                  |  104 +----------------------
 tests/conform/test-backface-culling.c |   10 +-
 tests/conform/test-depth-test.c       |   35 --------
 20 files changed, 41 insertions(+), 421 deletions(-)

diff --git a/cogl/cogl-attribute-private.h b/cogl/cogl-attribute-private.h
index 82a15f2..bde6fe2 100644
--- a/cogl/cogl-attribute-private.h
+++ b/cogl/cogl-attribute-private.h
@@ -70,14 +70,13 @@ typedef enum
   COGL_DRAW_SKIP_JOURNAL_FLUSH = 1 << 0,
   COGL_DRAW_SKIP_PIPELINE_VALIDATION = 1 << 1,
   COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH = 1 << 2,
-  COGL_DRAW_SKIP_LEGACY_STATE = 1 << 3,
   /* By default the vertex attribute drawing code will assume that if
      there is a color attribute array enabled then we can't determine
      if the colors will be opaque so we need to enabling
      blending. However when drawing from the journal we know what the
      contents of the color array is so we can override this by passing
      this flag. */
-  COGL_DRAW_COLOR_ATTRIBUTE_IS_OPAQUE = 1 << 4
+  COGL_DRAW_COLOR_ATTRIBUTE_IS_OPAQUE = 1 << 3
 } CoglDrawFlags;
 
 /* During CoglContext initialization we register the "cogl_color_in"
diff --git a/cogl/cogl-attribute.c b/cogl/cogl-attribute.c
index 2b1a986..3a6244f 100644
--- a/cogl/cogl-attribute.c
+++ b/cogl/cogl-attribute.c
@@ -661,19 +661,6 @@ _cogl_flush_attributes_state (CoglFramebuffer *framebuffer,
        */
     }
 
-  if (G_UNLIKELY (!(flags & COGL_DRAW_SKIP_LEGACY_STATE)) &&
-      G_UNLIKELY (ctx->legacy_state_set) &&
-      _cogl_get_enable_legacy_state ())
-    {
-      /* If we haven't already created a derived pipeline... */
-      if (!copy)
-        {
-          copy = cogl_pipeline_copy (pipeline);
-          pipeline = copy;
-        }
-      _cogl_pipeline_apply_legacy_state (pipeline);
-    }
-
   _cogl_pipeline_flush_gl_state (pipeline, skip_gl_color, n_tex_coord_attribs);
 
   _cogl_bitmask_clear_all (&ctx->enable_builtin_attributes_tmp);
diff --git a/cogl/cogl-blit.c b/cogl/cogl-blit.c
index 247317f..8eaf8a5 100644
--- a/cogl/cogl-blit.c
+++ b/cogl/cogl-blit.c
@@ -97,7 +97,7 @@ _cogl_blit_texture_render_begin (CoglBlitData *data)
 
   cogl_pipeline_set_layer_texture (pipeline, 0, data->src_tex);
 
-  _cogl_push_source (pipeline, FALSE);
+  cogl_push_source (pipeline);
 
   return TRUE;
 }
diff --git a/cogl/cogl-clip-stack.c b/cogl/cogl-clip-stack.c
index 1bab67d..6bdd023 100644
--- a/cogl/cogl-clip-stack.c
+++ b/cogl/cogl-clip-stack.c
@@ -418,8 +418,7 @@ paint_primitive_silhouette (void *user_data)
                                     user_data,
                                     COGL_DRAW_SKIP_JOURNAL_FLUSH |
                                     COGL_DRAW_SKIP_PIPELINE_VALIDATION |
-                                    COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH |
-                                    COGL_DRAW_SKIP_LEGACY_STATE);
+                                    COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH);
 }
 
 static void
diff --git a/cogl/cogl-context-private.h b/cogl/cogl-context-private.h
index 57d8b74..b94eabf 100644
--- a/cogl/cogl-context-private.h
+++ b/cogl/cogl-context-private.h
@@ -100,8 +100,6 @@ struct _CoglContext
   CoglBitmask       enable_custom_attributes_tmp;
   CoglBitmask       changed_bits_tmp;
 
-  CoglBool          legacy_backface_culling_enabled;
-
   /* A few handy matrix constants */
   CoglMatrix        identity_matrix;
   CoglMatrix        y_flip_matrix;
@@ -122,8 +120,6 @@ struct _CoglContext
   GArray           *texture_units;
   int               active_texture_unit;
 
-  CoglPipelineFogState legacy_fog_state;
-
   /* Pipelines */
   CoglPipeline     *opaque_color_pipeline; /* used for set_source_color */
   CoglPipeline     *blended_color_pipeline; /* used for set_source_color */
@@ -132,8 +128,6 @@ struct _CoglContext
   GString          *codegen_source_buffer;
   GList            *source_stack;
 
-  int               legacy_state_set;
-
   CoglPipelineCache *pipeline_cache;
 
   /* Textures */
@@ -165,8 +159,6 @@ struct _CoglContext
   float                 depth_range_near_cache;
   float                 depth_range_far_cache;
 
-  CoglBool              legacy_depth_test_enabled;
-
   CoglBuffer       *current_buffer[COGL_BUFFER_BIND_TARGET_COUNT];
 
   /* Framebuffers */
diff --git a/cogl/cogl-context.c b/cogl/cogl-context.c
index 65f35d4..45ed8e0 100644
--- a/cogl/cogl-context.c
+++ b/cogl/cogl-context.c
@@ -274,8 +274,6 @@ cogl_context_new (CoglDisplay *display,
   context->current_clip_stack_valid = FALSE;
   context->current_clip_stack = NULL;
 
-  context->legacy_backface_culling_enabled = FALSE;
-
   cogl_matrix_init_identity (&context->identity_matrix);
   cogl_matrix_init_identity (&context->y_flip_matrix);
   cogl_matrix_scale (&context->y_flip_matrix, 1, -1, 1);
@@ -290,8 +288,6 @@ cogl_context_new (CoglDisplay *display,
   context->active_texture_unit = 1;
   GE (context, glActiveTexture (GL_TEXTURE1));
 
-  context->legacy_fog_state.enabled = FALSE;
-
   context->opaque_color_pipeline = cogl_pipeline_new (context);
   context->blended_color_pipeline = cogl_pipeline_new (context);
   context->texture_pipeline = cogl_pipeline_new (context);
@@ -299,8 +295,6 @@ cogl_context_new (CoglDisplay *display,
   context->codegen_source_buffer = g_string_new ("");
   context->source_stack = NULL;
 
-  context->legacy_state_set = 0;
-
   context->default_gl_texture_2d_tex = NULL;
   context->default_gl_texture_3d_tex = NULL;
   context->default_gl_texture_rect_tex = NULL;
@@ -347,8 +341,6 @@ cogl_context_new (CoglDisplay *display,
   context->depth_range_near_cache = 0;
   context->depth_range_far_cache = 1;
 
-  context->legacy_depth_test_enabled = FALSE;
-
   context->pipeline_cache = cogl_pipeline_cache_new ();
 
   for (i = 0; i < COGL_BUFFER_BIND_TARGET_COUNT; i++)
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index 723e5b6..3918636 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -3106,8 +3106,7 @@ draw_wireframe (CoglContext *ctx,
                                            n_attributes,
                                            COGL_DRAW_SKIP_JOURNAL_FLUSH |
                                            COGL_DRAW_SKIP_PIPELINE_VALIDATION |
-                                           COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH |
-                                           COGL_DRAW_SKIP_LEGACY_STATE);
+                                           COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH);
   COGL_DEBUG_SET_FLAG (COGL_DEBUG_WIREFRAME);
 
   cogl_object_unref (wire_indices);
@@ -3159,7 +3158,7 @@ cogl_framebuffer_draw_attributes (CoglFramebuffer *framebuffer,
                                      first_vertex,
                                      n_vertices,
                                      attributes, n_attributes,
-                                     COGL_DRAW_SKIP_LEGACY_STATE);
+                                     0 /* flags */);
 }
 
 void
@@ -3192,7 +3191,7 @@ cogl_framebuffer_vdraw_attributes (CoglFramebuffer *framebuffer,
                                      pipeline,
                                      mode, first_vertex, n_vertices,
                                      attributes, n_attributes,
-                                     COGL_DRAW_SKIP_LEGACY_STATE);
+                                     0 /* flags */);
 }
 
 static size_t
@@ -3282,7 +3281,7 @@ cogl_framebuffer_draw_indexed_attributes (CoglFramebuffer *framebuffer,
                                              mode, first_vertex,
                                              n_vertices, indices,
                                              attributes, n_attributes,
-                                             COGL_DRAW_SKIP_LEGACY_STATE);
+                                             0 /* flags */);
 }
 
 void
@@ -3320,7 +3319,7 @@ cogl_framebuffer_vdraw_indexed_attributes (CoglFramebuffer *framebuffer,
                                              indices,
                                              attributes,
                                              n_attributes,
-                                             COGL_DRAW_SKIP_LEGACY_STATE);
+                                             0 /* flags */);
 }
 
 void
@@ -3356,7 +3355,7 @@ cogl_framebuffer_draw_primitive (CoglFramebuffer *framebuffer,
                                  CoglPrimitive *primitive)
 {
   _cogl_framebuffer_draw_primitive (framebuffer, pipeline, primitive,
-                                    COGL_DRAW_SKIP_LEGACY_STATE);
+                                    0 /* flags */);
 }
 
 void
@@ -3382,8 +3381,7 @@ cogl_framebuffer_draw_rectangle (CoglFramebuffer *framebuffer,
   _cogl_framebuffer_draw_multitextured_rectangles (framebuffer,
                                                    pipeline,
                                                    &rect,
-                                                   1,
-                                                   TRUE);
+                                                   1);
 }
 
 void
@@ -3414,8 +3412,7 @@ cogl_framebuffer_draw_textured_rectangle (CoglFramebuffer *framebuffer,
   _cogl_framebuffer_draw_multitextured_rectangles (framebuffer,
                                                    pipeline,
                                                    &rect,
-                                                   1,
-                                                   TRUE);
+                                                   1);
 }
 
 void
@@ -3443,8 +3440,7 @@ cogl_framebuffer_draw_multitextured_rectangle (CoglFramebuffer *framebuffer,
   _cogl_framebuffer_draw_multitextured_rectangles (framebuffer,
                                                    pipeline,
                                                    &rect,
-                                                   1,
-                                                   TRUE);
+                                                   1);
 }
 
 void
@@ -3473,8 +3469,7 @@ cogl_framebuffer_draw_rectangles (CoglFramebuffer *framebuffer,
   _cogl_framebuffer_draw_multitextured_rectangles (framebuffer,
                                                    pipeline,
                                                    rects,
-                                                   n_rectangles,
-                                                   TRUE);
+                                                   n_rectangles);
 }
 
 void
@@ -3503,6 +3498,5 @@ cogl_framebuffer_draw_textured_rectangles (CoglFramebuffer *framebuffer,
   _cogl_framebuffer_draw_multitextured_rectangles (framebuffer,
                                                    pipeline,
                                                    rects,
-                                                   n_rectangles,
-                                                   TRUE);
+                                                   n_rectangles);
 }
diff --git a/cogl/cogl-framebuffer.h b/cogl/cogl-framebuffer.h
index f081b84..bccde36 100644
--- a/cogl/cogl-framebuffer.h
+++ b/cogl/cogl-framebuffer.h
@@ -989,10 +989,6 @@ cogl_framebuffer_clear4f (CoglFramebuffer *framebuffer,
  * a GPU such as #CoglTexture2D, #CoglTextureRectangle or #CoglTexture3D
  * are associated with layers of the given @pipeline.
  *
- * <note>This api doesn't support any of the legacy global state options such
- * as cogl_set_depth_test_enabled(), cogl_set_backface_culling_enabled() or
- * cogl_program_use()</note>
- *
  * Stability: unstable
  * Since: 1.10
  */
@@ -1068,10 +1064,6 @@ cogl_framebuffer_vdraw_attributes (CoglFramebuffer *framebuffer,
  * a GPU such as #CoglTexture2D, #CoglTextureRectangle or #CoglTexture3D
  * are associated with layers of the given @pipeline.
  *
- * <note>This api doesn't support any of the legacy global state options such
- * as cogl_set_depth_test_enabled(), cogl_set_backface_culling_enabled() or
- * cogl_program_use()</note>
- *
  * Stability: unstable
  * Since: 1.10
  */
@@ -1131,10 +1123,6 @@ cogl_framebuffer_draw_attributes (CoglFramebuffer *framebuffer,
  * a GPU such as #CoglTexture2D, #CoglTextureRectangle or
  * #CoglTexture3D are associated with layers of the given @pipeline.
  *
- * <note>This api doesn't support any of the legacy global state
- * options such as cogl_set_depth_test_enabled(),
- * cogl_set_backface_culling_enabled() or cogl_program_use()</note>
- *
  * Stability: unstable
  * Since: 1.10
  */
@@ -1196,10 +1184,6 @@ cogl_framebuffer_vdraw_indexed_attributes (CoglFramebuffer *framebuffer,
  * a GPU such as #CoglTexture2D, #CoglTextureRectangle or
  * #CoglTexture3D are associated with layers of the given @pipeline.
  *
- * <note>This api doesn't support any of the legacy global state
- * options such as cogl_set_depth_test_enabled(),
- * cogl_set_backface_culling_enabled() or cogl_program_use()</note>
- *
  * Stability: unstable
  * Since: 1.10
  */
diff --git a/cogl/cogl-journal.c b/cogl/cogl-journal.c
index a17c6bc..8f42f6c 100644
--- a/cogl/cogl-journal.c
+++ b/cogl/cogl-journal.c
@@ -280,8 +280,7 @@ _cogl_journal_flush_modelview_and_entries (CoglJournalEntry *batch_start,
   CoglAttribute **attributes;
   CoglDrawFlags draw_flags = (COGL_DRAW_SKIP_JOURNAL_FLUSH |
                               COGL_DRAW_SKIP_PIPELINE_VALIDATION |
-                              COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH |
-                              COGL_DRAW_SKIP_LEGACY_STATE);
+                              COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH);
 
   COGL_STATIC_TIMER (time_flush_modelview_and_entries,
                      "flush: pipeline+entries", /* parent */
diff --git a/cogl/cogl-pipeline-private.h b/cogl/cogl-pipeline-private.h
index 4488541..0d2c9be 100644
--- a/cogl/cogl-pipeline-private.h
+++ b/cogl/cogl-pipeline-private.h
@@ -922,9 +922,6 @@ void
 _cogl_pipeline_texture_storage_change_notify (CoglTexture *texture);
 
 void
-_cogl_pipeline_apply_legacy_state (CoglPipeline *pipeline);
-
-void
 _cogl_pipeline_apply_overrides (CoglPipeline *pipeline,
                                 CoglPipelineFlushOptions *options);
 
diff --git a/cogl/cogl-pipeline.c b/cogl/cogl-pipeline.c
index 4c2f9b2..ef38df5 100644
--- a/cogl/cogl-pipeline.c
+++ b/cogl/cogl-pipeline.c
@@ -2479,34 +2479,6 @@ _cogl_pipeline_journal_unref (CoglPipeline *pipeline)
 }
 
 void
-_cogl_pipeline_apply_legacy_state (CoglPipeline *pipeline)
-{
-  _COGL_GET_CONTEXT (ctx, NO_RETVAL);
-
-  /* It was a mistake that we ever copied the OpenGL style API for
-   * associating these things directly with the context when we
-   * originally wrote Cogl. Until the corresponding deprecated APIs
-   * can be removed though we now shoehorn the state changes through
-   * the cogl_pipeline API instead.
-   */
-
-  if (ctx->legacy_depth_test_enabled)
-    {
-      CoglDepthState depth_state;
-      cogl_depth_state_init (&depth_state);
-      cogl_depth_state_set_test_enabled (&depth_state, TRUE);
-      cogl_pipeline_set_depth_state (pipeline, &depth_state, NULL);
-    }
-
-  if (ctx->legacy_fog_state.enabled)
-    _cogl_pipeline_set_fog_state (pipeline, &ctx->legacy_fog_state);
-
-  if (ctx->legacy_backface_culling_enabled)
-    cogl_pipeline_set_cull_face_mode (pipeline,
-                                      COGL_PIPELINE_CULL_FACE_MODE_BACK);
-}
-
-void
 _cogl_pipeline_set_static_breadcrumb (CoglPipeline *pipeline,
                                       const char *breadcrumb)
 {
diff --git a/cogl/cogl-primitives-private.h b/cogl/cogl-primitives-private.h
index 91b457f..f36213c 100644
--- a/cogl/cogl-primitives-private.h
+++ b/cogl/cogl-primitives-private.h
@@ -52,8 +52,7 @@ _cogl_framebuffer_draw_multitextured_rectangles (
                                         CoglFramebuffer *framebuffer,
                                         CoglPipeline *pipeline,
                                         CoglMultiTexturedRect *rects,
-                                        int n_rects,
-                                        CoglBool disable_legacy_state);
+                                        int n_rects);
 
 G_END_DECLS
 
diff --git a/cogl/cogl-primitives.c b/cogl/cogl-primitives.c
index 528f2c5..85c0ea3 100644
--- a/cogl/cogl-primitives.c
+++ b/cogl/cogl-primitives.c
@@ -630,8 +630,7 @@ _cogl_framebuffer_draw_multitextured_rectangles (
                                         CoglFramebuffer *framebuffer,
                                         CoglPipeline *pipeline,
                                         CoglMultiTexturedRect *rects,
-                                        int n_rects,
-                                        CoglBool disable_legacy_state)
+                                        int n_rects)
 {
   CoglContext *ctx = framebuffer->context;
   CoglPipeline *original_pipeline;
@@ -655,18 +654,6 @@ _cogl_framebuffer_draw_multitextured_rectangles (
   if (state.override_source)
     pipeline = state.override_source;
 
-  if (!disable_legacy_state)
-    {
-      if (G_UNLIKELY (ctx->legacy_state_set) &&
-          _cogl_get_enable_legacy_state ())
-        {
-          /* If we haven't already made a pipeline copy */
-          if (pipeline == original_pipeline)
-            pipeline = cogl_pipeline_copy (pipeline);
-          _cogl_pipeline_apply_legacy_state (pipeline);
-        }
-    }
-
   /*
    * Emit geometry for each of the rectangles...
    */
@@ -729,8 +716,7 @@ _cogl_rectangles_with_multitexture_coords (
   _cogl_framebuffer_draw_multitextured_rectangles (cogl_get_draw_framebuffer (),
                                                    cogl_get_source (),
                                                    rects,
-                                                   n_rects,
-                                                   FALSE);
+                                                   n_rects);
 }
 
 void
@@ -892,8 +878,7 @@ _cogl_rectangle_immediate (CoglFramebuffer *framebuffer,
                                      1,
                                      COGL_DRAW_SKIP_JOURNAL_FLUSH |
                                      COGL_DRAW_SKIP_PIPELINE_VALIDATION |
-                                     COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH |
-                                     COGL_DRAW_SKIP_LEGACY_STATE);
+                                     COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH);
 
 
   cogl_object_unref (attributes[0]);
@@ -1113,14 +1098,6 @@ cogl_polygon (const CoglTextureVertex *vertices,
                         v,
                         ctx->polygon_vertices->len * sizeof (float));
 
-  /* XXX: although this may seem redundant, we need to do this since
-   * cogl_polygon() can be used with legacy state and its the source stack
-   * which track whether legacy state is enabled.
-   *
-   * (We only have a CoglDrawFlag to disable legacy state not one
-   *  to enable it) */
-  cogl_push_source (pipeline);
-
   _cogl_framebuffer_draw_attributes (cogl_get_draw_framebuffer (),
                                      pipeline,
                                      COGL_VERTICES_MODE_TRIANGLE_FAN,
@@ -1129,8 +1106,6 @@ cogl_polygon (const CoglTextureVertex *vertices,
                                      n_attributes,
                                      0 /* no draw flags */);
 
-  cogl_pop_source ();
-
   if (pipeline != validate_state.original_pipeline)
     cogl_object_unref (pipeline);
 
diff --git a/cogl/cogl-private.h b/cogl/cogl-private.h
index d167cb3..9006892 100644
--- a/cogl/cogl-private.h
+++ b/cogl/cogl-private.h
@@ -39,12 +39,6 @@ _cogl_clear (const CoglColor *color, unsigned long buffers);
 void
 _cogl_init (void);
 
-void
-_cogl_push_source (CoglPipeline *pipeline, CoglBool enable_legacy);
-
-CoglBool
-_cogl_get_enable_legacy_state (void);
-
 /*
  * _cogl_pixel_format_get_bytes_per_pixel:
  * @format: a #CoglPixelFormat
diff --git a/cogl/cogl-texture.c b/cogl/cogl-texture.c
index d805604..5d591d5 100644
--- a/cogl/cogl-texture.c
+++ b/cogl/cogl-texture.c
@@ -885,7 +885,7 @@ _cogl_texture_draw_and_read (CoglTexture *texture,
                                NULL);
     }
 
-  _cogl_push_source (ctx->texture_download_pipeline, FALSE);
+  cogl_push_source (ctx->texture_download_pipeline);
 
   cogl_pipeline_set_layer_texture (ctx->texture_download_pipeline, 0, texture);
 
diff --git a/cogl/cogl.c b/cogl/cogl.c
index 7608f53..9ee4d55 100644
--- a/cogl/cogl.c
+++ b/cogl/cogl.c
@@ -137,54 +137,6 @@ cogl_clear (const CoglColor *color, unsigned long buffers)
   cogl_framebuffer_clear (cogl_get_draw_framebuffer (), buffers, color);
 }
 
-/* XXX: This API has been deprecated */
-void
-cogl_set_depth_test_enabled (CoglBool setting)
-{
-  _COGL_GET_CONTEXT (ctx, NO_RETVAL);
-
-  if (ctx->legacy_depth_test_enabled == setting)
-    return;
-
-  ctx->legacy_depth_test_enabled = setting;
-  if (ctx->legacy_depth_test_enabled)
-    ctx->legacy_state_set++;
-  else
-    ctx->legacy_state_set--;
-}
-
-/* XXX: This API has been deprecated */
-CoglBool
-cogl_get_depth_test_enabled (void)
-{
-  _COGL_GET_CONTEXT (ctx, FALSE);
-  return ctx->legacy_depth_test_enabled;
-}
-
-void
-cogl_set_backface_culling_enabled (CoglBool setting)
-{
-  _COGL_GET_CONTEXT (ctx, NO_RETVAL);
-
-  if (ctx->legacy_backface_culling_enabled == setting)
-    return;
-
-  ctx->legacy_backface_culling_enabled = setting;
-
-  if (ctx->legacy_backface_culling_enabled)
-    ctx->legacy_state_set++;
-  else
-    ctx->legacy_state_set--;
-}
-
-CoglBool
-cogl_get_backface_culling_enabled (void)
-{
-  _COGL_GET_CONTEXT (ctx, FALSE);
-
-  return ctx->legacy_backface_culling_enabled;
-}
-
 void
 cogl_set_source_color (const CoglColor *color)
 {
@@ -323,37 +275,6 @@ cogl_get_bitmasks (int *red,
 }
 
 void
-cogl_set_fog (const CoglColor *fog_color,
-              CoglFogMode      mode,
-              float            density,
-              float            z_near,
-              float            z_far)
-{
-  _COGL_GET_CONTEXT (ctx, NO_RETVAL);
-
-  if (ctx->legacy_fog_state.enabled == FALSE)
-    ctx->legacy_state_set++;
-
-  ctx->legacy_fog_state.enabled = TRUE;
-  ctx->legacy_fog_state.color = *fog_color;
-  ctx->legacy_fog_state.mode = mode;
-  ctx->legacy_fog_state.density = density;
-  ctx->legacy_fog_state.z_near = z_near;
-  ctx->legacy_fog_state.z_far = z_far;
-}
-
-void
-cogl_disable_fog (void)
-{
-  _COGL_GET_CONTEXT (ctx, NO_RETVAL);
-
-  if (ctx->legacy_fog_state.enabled == TRUE)
-    ctx->legacy_state_set--;
-
-  ctx->legacy_fog_state.enabled = FALSE;
-}
-
-void
 cogl_flush (void)
 {
   GList *l;
@@ -568,45 +489,13 @@ typedef struct _CoglSourceState
 {
   CoglPipeline *pipeline;
   int push_count;
-  /* If this is TRUE then the pipeline will be copied and the legacy
-     state will be applied whenever the pipeline is used. This is
-     necessary because some internal Cogl code expects to be able to
-     push a temporary pipeline to put GL into a known state. For that
-     to work it also needs to prevent applying the legacy state */
-  CoglBool enable_legacy;
 } CoglSourceState;
 
-static void
-_push_source_real (CoglPipeline *pipeline, CoglBool enable_legacy)
-{
-  CoglSourceState *top = g_slice_new (CoglSourceState);
-  _COGL_GET_CONTEXT (ctx, NO_RETVAL);
-
-  top->pipeline = cogl_object_ref (pipeline);
-  top->enable_legacy = enable_legacy;
-  top->push_count = 1;
-
-  ctx->source_stack = g_list_prepend (ctx->source_stack, top);
-}
-
 /* FIXME: This should take a context pointer for Cogl 2.0 Technically
  * we could make it so we can retrieve a context reference from the
  * pipeline, but this would not by symmetric with cogl_pop_source. */
 void
-cogl_push_source (void *material_or_pipeline)
-{
-  CoglPipeline *pipeline = COGL_PIPELINE (material_or_pipeline);
-
-  _COGL_RETURN_IF_FAIL (cogl_is_pipeline (pipeline));
-
-  _cogl_push_source (pipeline, TRUE);
-}
-
-/* This internal version of cogl_push_source is the same except it
-   never applies the legacy state. Some parts of Cogl use this
-   internally to set a temporary pipeline with a known state */
-void
-_cogl_push_source (CoglPipeline *pipeline, CoglBool enable_legacy)
+cogl_push_source (CoglPipeline *pipeline)
 {
   CoglSourceState *top;
 
@@ -614,19 +503,17 @@ _cogl_push_source (CoglPipeline *pipeline, CoglBool enable_legacy)
 
   _COGL_RETURN_IF_FAIL (cogl_is_pipeline (pipeline));
 
-  if (ctx->source_stack)
+  if (ctx->source_stack &&
+      (top = ctx->source_stack->data)->pipeline == pipeline)
+    top->push_count++;
+  else
     {
-      top = ctx->source_stack->data;
-      if (top->pipeline == pipeline && top->enable_legacy == enable_legacy)
-        {
-          top->push_count++;
-          return;
-        }
-      else
-        _push_source_real (pipeline, enable_legacy);
+      top = g_slice_new (CoglSourceState);
+      top->pipeline = cogl_object_ref (pipeline);
+      top->push_count = 1;
+
+      ctx->source_stack = g_list_prepend (ctx->source_stack, top);
     }
-  else
-    _push_source_real (pipeline, enable_legacy);
 }
 
 /* FIXME: This needs to take a context pointer for Cogl 2.0 */
@@ -664,19 +551,6 @@ cogl_get_source (void)
   return top->pipeline;
 }
 
-CoglBool
-_cogl_get_enable_legacy_state (void)
-{
-  CoglSourceState *top;
-
-  _COGL_GET_CONTEXT (ctx, FALSE);
-
-  _COGL_RETURN_VAL_IF_FAIL (ctx->source_stack, FALSE);
-
-  top = ctx->source_stack->data;
-  return top->enable_legacy;
-}
-
 void
 cogl_set_source (void *material_or_pipeline)
 {
@@ -689,7 +563,7 @@ cogl_set_source (void *material_or_pipeline)
   _COGL_RETURN_IF_FAIL (ctx->source_stack);
 
   top = ctx->source_stack->data;
-  if (top->pipeline == pipeline && top->enable_legacy)
+  if (top->pipeline == pipeline)
     return;
 
   if (top->push_count == 1)
@@ -699,7 +573,6 @@ cogl_set_source (void *material_or_pipeline)
       cogl_object_ref (pipeline);
       cogl_object_unref (top->pipeline);
       top->pipeline = pipeline;
-      top->enable_legacy = TRUE;
     }
   else
     {
diff --git a/cogl/cogl.symbols b/cogl/cogl.symbols
index 9a9d2f9..3d09258 100644
--- a/cogl/cogl.symbols
+++ b/cogl/cogl.symbols
@@ -168,8 +168,6 @@ cogl_depth_state_set_range
 cogl_depth_state_set_write_enabled
 cogl_depth_test_function_get_type
 
-cogl_disable_fog
-
 cogl_display_get_renderer
 cogl_display_new
 cogl_display_setup
@@ -266,9 +264,7 @@ cogl_gdl_display_set_plane
 
 cogl_frustum
 
-cogl_get_backface_culling_enabled
 cogl_get_bitmasks
-cogl_get_depth_test_enabled
 cogl_get_draw_framebuffer
 cogl_get_features
 cogl_get_modelview_matrix
@@ -576,12 +572,9 @@ cogl_rotate
 
 cogl_scale
 
-cogl_set_backface_culling_enabled
-cogl_set_depth_test_enabled
 #ifndef COGL_DISABLE_DEPRECATED
 cogl_set_draw_buffer
 #endif
-cogl_set_fog
 cogl_set_framebuffer
 cogl_set_modelview_matrix
 cogl_set_path	/* this is COGL 1.0 API */
diff --git a/cogl/cogl1-context.h b/cogl/cogl1-context.h
index 42ecbea..fc381bb 100644
--- a/cogl/cogl1-context.h
+++ b/cogl/cogl1-context.h
@@ -380,100 +380,6 @@ void
 cogl_get_viewport (float v[4]);
 
 /**
- * cogl_set_depth_test_enabled:
- * @setting: %TRUE to enable depth testing or %FALSE to disable.
- *
- * Sets whether depth testing is enabled. If it is disabled then the
- * order that actors are layered on the screen depends solely on the
- * order specified using clutter_actor_raise() and
- * clutter_actor_lower(), otherwise it will also take into account the
- * actor's depth. Depth testing is disabled by default.
- *
- * Deprecated: 1.4: Use cogl_material_set_depth_test_enabled()
- * instead.
- */
-void
-cogl_set_depth_test_enabled (CoglBool setting);
-
-/**
- * cogl_get_depth_test_enabled:
- *
- * Queries if depth testing has been enabled via cogl_set_depth_test_enable()
- *
- * Return value: %TRUE if depth testing is enabled, and %FALSE otherwise
- *
- * Deprecated: 1.4: Use cogl_material_get_depth_test_enabled()
- * instead.
- */
-CoglBool
-cogl_get_depth_test_enabled (void);
-
-/**
- * cogl_set_backface_culling_enabled:
- * @setting: %TRUE to enable backface culling or %FALSE to disable.
- *
- * Sets whether textures positioned so that their backface is showing
- * should be hidden. This can be used to efficiently draw two-sided
- * textures or fully closed cubes without enabling depth testing. This
- * only affects calls to the cogl_rectangle* family of functions and
- * cogl_vertex_buffer_draw*. Backface culling is disabled by default.
- */
-void
-cogl_set_backface_culling_enabled (CoglBool setting);
-
-/**
- * cogl_get_backface_culling_enabled:
- *
- * Queries if backface culling has been enabled via
- * cogl_set_backface_culling_enabled()
- *
- * Return value: %TRUE if backface culling is enabled, and %FALSE otherwise
- */
-CoglBool
-cogl_get_backface_culling_enabled (void);
-
-/**
- * cogl_set_fog:
- * @fog_color: The color of the fog
- * @mode: A #CoglFogMode that determines the equation used to calculate the
- *   fogging blend factor.
- * @density: Used by %COGL_FOG_MODE_EXPONENTIAL and by
- *   %COGL_FOG_MODE_EXPONENTIAL_SQUARED equations.
- * @z_near: Position along Z axis where no fogging should be applied
- * @z_far: Position along Z axis where full fogging should be applied
- *
- * Enables fogging. Fogging causes vertices that are further away from the eye
- * to be rendered with a different color. The color is determined according to
- * the chosen fog mode; at it's simplest the color is linearly interpolated so
- * that vertices at @z_near are drawn fully with their original color and
- * vertices at @z_far are drawn fully with @fog_color. Fogging will remain
- * enabled until you call cogl_disable_fog().
- *
- * <note>The fogging functions only work correctly when primitives use
- * unmultiplied alpha colors. By default Cogl will premultiply textures
- * and cogl_set_source_color() will premultiply colors, so unless you
- * explicitly load your textures requesting an unmultiplied internal format
- * and use cogl_material_set_color() you can only use fogging with fully
- * opaque primitives. This might improve in the future when we can depend
- * on fragment shaders.</note>
- */
-void
-cogl_set_fog (const CoglColor *fog_color,
-              CoglFogMode mode,
-              float density,
-              float z_near,
-              float z_far);
-
-/**
- * cogl_disable_fog:
- *
- * This function disables fogging, so primitives drawn afterwards will not be
- * blended with any previously set fog color.
- */
-void
-cogl_disable_fog (void);
-
-/**
  * cogl_clear:
  * @color: Background color to clear to
  * @buffers: A mask of #CoglBufferBit<!-- -->'s identifying which auxiliary
@@ -521,21 +427,21 @@ cogl_get_source (void);
 
 /**
  * cogl_push_source:
- * @material: A #CoglMaterial
+ * @material: A #CoglPipeline
  *
- * Pushes the given @material to the top of the source stack. The
- * material at the top of this stack defines the GPU state used to
+ * Pushes the given @pipeline to the top of the source stack. The
+ * pipeline at the top of this stack defines the GPU state used to
  * process later primitives as defined by cogl_set_source().
  *
  * Since: 1.6
  */
 void
-cogl_push_source (void *material);
+cogl_push_source (CoglPipeline *pipeline);
 
 /**
  * cogl_pop_source:
  *
- * Removes the material at the top of the source stack. The material
+ * Removes the pipeline at the top of the source stack. The pipeline
  * at the top of this stack defines the GPU state used to process
  * later primitives as defined by cogl_set_source().
  *
diff --git a/tests/conform/test-backface-culling.c b/tests/conform/test-backface-culling.c
index 55b7192..1ee13b3 100644
--- a/tests/conform/test-backface-culling.c
+++ b/tests/conform/test-backface-culling.c
@@ -39,8 +39,8 @@ validate_part (CoglFramebuffer *framebuffer,
    to test all of the combinations of both winding orders and all four
    culling modes */
 
-#define FRONT_WINDING(draw_num)    (((draw_num) & 0x01) >> 1)
-#define CULL_FACE_MODE(draw_num)   (((draw_num) & 0x06) >> 2)
+#define FRONT_WINDING(draw_num)    ((draw_num) & 0x01)
+#define CULL_FACE_MODE(draw_num)   (((draw_num) & 0x06) >> 1)
 
 static void
 paint_test_backface_culling (TestState *state,
@@ -66,9 +66,9 @@ paint_test_backface_culling (TestState *state,
                                    COGL_PIPELINE_FILTER_NEAREST,
                                    COGL_PIPELINE_FILTER_NEAREST);
 
-  /* Render the scene sixteen times to test all of the combinations of
-     cull face mode, legacy state and winding orders */
-  for (draw_num = 0; draw_num < 16; draw_num++)
+  /* Render the scene eight times to test all of the combinations of
+     cull face mode and winding orders */
+  for (draw_num = 0; draw_num < 8; draw_num++)
     {
       float x1 = 0, x2, y1 = 0, y2 = (float)(TEXTURE_RENDER_SIZE);
       CoglTextureVertex verts[4];
diff --git a/tests/conform/test-depth-test.c b/tests/conform/test-depth-test.c
index 8efff4d..8e9eb1f 100644
--- a/tests/conform/test-depth-test.c
+++ b/tests/conform/test-depth-test.c
@@ -218,41 +218,6 @@ paint (TestState *state)
                 FALSE, /* legacy mode */
                 0xff0000ff); /* expected */
   }
-
-  /* Test that the legacy cogl_set_depth_test_enabled() API still
-   * works... */
-
-  {
-    /* Nearest */
-    TestDepthState rect0_state = {
-      0xff0000ff, /* rgba color */
-      -10, /* depth */
-      FALSE, /* depth test enable */
-      COGL_DEPTH_TEST_FUNCTION_LESS,
-      TRUE, /* depth write enable */
-      0, 1 /* depth range */
-    };
-    /* Furthest */
-    TestDepthState rect1_state = {
-      0x00ff00ff, /* rgba color */
-      -70, /* depth */
-      FALSE, /* depth test enable */
-      COGL_DEPTH_TEST_FUNCTION_LESS,
-      TRUE, /* depth write enable */
-      0, 1 /* depth range */
-    };
-
-    cogl_set_depth_test_enabled (TRUE);
-    test_depth (state, 0, 2, /* position */
-                &rect0_state, &rect1_state, NULL,
-                TRUE, /* legacy mode */
-                0xff0000ff); /* expected */
-    cogl_set_depth_test_enabled (FALSE);
-    test_depth (state, 1, 2, /* position */
-                &rect0_state, &rect1_state, NULL,
-                TRUE, /* legacy mode */
-                0x00ff00ff); /* expected */
-  }
 }
 
 void
-- 
1.7.3.16.g9464b



More information about the Cogl mailing list