From: Ian Romanick Date: Sat, 25 Jul 2009 01:14:47 +0000 (-0700) Subject: ARB prog: Layout parameters from parameter type, not src type X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=258f640edab9ca9e71ee255ebe5ddae4b9d0d871;p=mesa.git ARB prog: Layout parameters from parameter type, not src type Use the type stored in the Parameters array to determine the layout instead of the type in the instruction register field. Also, update the instruction register field based on the parameter type. This makes Google Earth work exactly like with Mesa master. --- diff --git a/src/mesa/shader/prog_parameter_layout.c b/src/mesa/shader/prog_parameter_layout.c index f374636f113..4d67eca902f 100644 --- a/src/mesa/shader/prog_parameter_layout.c +++ b/src/mesa/shader/prog_parameter_layout.c @@ -170,10 +170,15 @@ _mesa_layout_parameters(struct asm_parser_state *state) } + if ((inst->SrcReg[i].Base.File <= PROGRAM_VARYING ) + || (inst->SrcReg[i].Base.File >= PROGRAM_WRITE_ONLY)) { + continue; + } + inst->Base.SrcReg[i] = inst->SrcReg[i].Base; p = & state->prog->Parameters->Parameters[idx]; - switch (inst->SrcReg[i].Base.File) { + switch (p->Type) { case PROGRAM_CONSTANT: { const float *const v = state->prog->Parameters->ParameterValues[idx]; @@ -194,6 +199,9 @@ _mesa_layout_parameters(struct asm_parser_state *state) default: break; } + + inst->SrcReg[i].Base.File = p->Type; + inst->Base.SrcReg[i].File = p->Type; } }