[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