On 11/18/2011 12:44 PM, Ian Romanick wrote: > On 11/18/2011 11:27 AM, Marek Olšák wrote: >> --- >> src/glsl/linker.cpp | 45 >> ++++++++++++++++++++++++++++ >> src/mesa/main/mtypes.h | 3 ++ >> src/mesa/program/ir_to_mesa.cpp | 29 ++++-------------- >> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 23 -------------- >> 4 files changed, 54 insertions(+), 46 deletions(-) >> >> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp >> index 0ec773d..226aa6f 100644 >> --- a/src/glsl/linker.cpp >> +++ b/src/glsl/linker.cpp >> @@ -1876,6 +1876,50 @@ store_tfeedback_info(struct gl_context *ctx, >> struct gl_shader_program *prog, >> } >> >> /** >> + * Store the gl_FragDepth layout in the gl_shader_program struct. >> + */ >> +static void >> +store_fragdepth_layout(struct gl_shader_program *prog) >> +{ >> + if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) { >> + return; >> + } >> + >> + struct exec_list *ir = >> prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->ir; >> + >> + foreach_list(node, ir) { >> + ir_variable *const var = ((ir_instruction *) node)->as_variable(); >> + >> + if (var == NULL || var->mode != ir_var_out) { >> + continue; >> + } >> + >> + if (strcmp(var->name, "gl_FragDepth") == 0) { > > It's probably worth explaining why you can't just look up gl_FragDepth > in the symbol table here. I was going to suggest changing to that, but > I managed to convince myself that looping over the IR is correct. > > With that small change, this patch is > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Agreed. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev