diff options
author | Neil Roberts <neil@linux.intel.com> | 2011-09-14 15:25:58 +0100 |
---|---|---|
committer | Robert Bragg <robert@linux.intel.com> | 2011-09-19 16:40:06 +0100 |
commit | f6ec6e2d0ee576b136e49f5c8faf77fda50e89b8 (patch) | |
tree | 1b09c4f6b6f333a939e2c05659e95079d532cbf0 | |
parent | 2059ae3ac807e9078e9cb3f46a325fa13355bdb2 (diff) | |
download | cogl-f6ec6e2d0ee576b136e49f5c8faf77fda50e89b8.tar.gz |
pipeline-arbfp: Check for fog on the pipeline not the legacy state
The ARBfp backend can't handle fog so it tries to check for when it's
enabled and bails out. However it was checking using the global legacy
state value on the CoglContext but this doesn't necessarily reflect
the state that will actually be used by the pipeline because Cogl may
have internally pushed a different pipeline.
This patch adds an internal _cogl_pipeline_get_fog_enabled which the
ARBfp backend now uses.
Reviewed-by: Robert Bragg <robert@linux.intel.com>
-rw-r--r-- | cogl/cogl-pipeline-fragend-arbfp.c | 2 | ||||
-rw-r--r-- | cogl/cogl-pipeline-private.h | 3 | ||||
-rw-r--r-- | cogl/cogl-pipeline.c | 12 |
3 files changed, 16 insertions, 1 deletions
diff --git a/cogl/cogl-pipeline-fragend-arbfp.c b/cogl/cogl-pipeline-fragend-arbfp.c index 294daa96..8c25b363 100644 --- a/cogl/cogl-pipeline-fragend-arbfp.c +++ b/cogl/cogl-pipeline-fragend-arbfp.c @@ -165,7 +165,7 @@ _cogl_pipeline_fragend_arbfp_start (CoglPipeline *pipeline, return FALSE; /* TODO: support fog */ - if (ctx->legacy_fog_state.enabled) + if (_cogl_pipeline_get_fog_enabled (pipeline)) return FALSE; user_program = cogl_pipeline_get_user_program (pipeline); diff --git a/cogl/cogl-pipeline-private.h b/cogl/cogl-pipeline-private.h index 7e019c28..de96c6c7 100644 --- a/cogl/cogl-pipeline-private.h +++ b/cogl/cogl-pipeline-private.h @@ -1184,6 +1184,9 @@ void _cogl_pipeline_set_blend_enabled (CoglPipeline *pipeline, CoglPipelineBlendEnable enable); +gboolean +_cogl_pipeline_get_fog_enabled (CoglPipeline *pipeline); + void _cogl_pipeline_set_static_breadcrumb (CoglPipeline *pipeline, const char *breadcrumb); diff --git a/cogl/cogl-pipeline.c b/cogl/cogl-pipeline.c index 70bda8ff..d0e32d94 100644 --- a/cogl/cogl-pipeline.c +++ b/cogl/cogl-pipeline.c @@ -2855,6 +2855,18 @@ _cogl_pipeline_update_authority (CoglPipeline *pipeline, } } +gboolean +_cogl_pipeline_get_fog_enabled (CoglPipeline *pipeline) +{ + CoglPipeline *authority; + + g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + + authority = + _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_FOG); + return authority->big_state->fog_state.enabled; +} + unsigned long _cogl_pipeline_get_age (CoglPipeline *pipeline) { |