Implement COGL_DEBUG=disable-texturing for ARBFp and GLSL fragends

The COGL_DEBUG=disable-texturing debug variable disables texturing in
the fixed function fragend by not bothering to enable the texture
targets. This wasn't working for the programmable fragends because the
texture targets don't need to be enabled to use them. This patch
modifies the two programmable backends to generate a constant value
for the texture lookups in the shader when the debug variable is
given.
This commit is contained in:
Neil Roberts 2011-06-08 18:03:58 +01:00
parent bbfe8b8ec4
commit c3c0804819
2 changed files with 25 additions and 9 deletions

View File

@ -381,15 +381,22 @@ setup_texture_source (ArbfpProgramState *arbfp_program_state,
{ {
if (!arbfp_program_state->unit_state[unit_index].sampled) if (!arbfp_program_state->unit_state[unit_index].sampled)
{ {
g_string_append_printf (arbfp_program_state->source, if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_DISABLE_TEXTURING)))
"TEMP texel%d;\n" g_string_append_printf (arbfp_program_state->source,
"TEX texel%d,fragment.texcoord[%d]," "TEMP texel%d;\n"
"texture[%d],%s;\n", "MOV texel%d, one;\n",
unit_index, unit_index,
unit_index, unit_index);
unit_index, else
unit_index, g_string_append_printf (arbfp_program_state->source,
gl_target_to_arbfp_string (gl_target)); "TEMP texel%d;\n"
"TEX texel%d,fragment.texcoord[%d],"
"texture[%d],%s;\n",
unit_index,
unit_index,
unit_index,
unit_index,
gl_target_to_arbfp_string (gl_target));
arbfp_program_state->unit_state[unit_index].sampled = TRUE; arbfp_program_state->unit_state[unit_index].sampled = TRUE;
} }
} }

View File

@ -350,6 +350,15 @@ add_texture_lookup (GlslShaderState *glsl_shader_state,
int unit_index = _cogl_pipeline_layer_get_unit_index (layer); int unit_index = _cogl_pipeline_layer_get_unit_index (layer);
const char *target_string, *tex_coord_swizzle; const char *target_string, *tex_coord_swizzle;
if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_DISABLE_TEXTURING)))
{
g_string_append (glsl_shader_state->source,
"vec4 (1.0, 1.0, 1.0, 1.0).");
g_string_append (glsl_shader_state->source, swizzle);
return;
}
texture = _cogl_pipeline_layer_get_texture (layer); texture = _cogl_pipeline_layer_get_texture (layer);
if (texture == COGL_INVALID_HANDLE) if (texture == COGL_INVALID_HANDLE)