On 01/07/2016 05:29 PM, Marek Olšák wrote: > From: Marek Olšák <[email protected]> > > --- > src/mesa/program/programopt.c | 27 +++++++++++++++++++++++++++ > src/mesa/program/programopt.h | 2 ++ > 2 files changed, 29 insertions(+) > > diff --git a/src/mesa/program/programopt.c b/src/mesa/program/programopt.c > index af78150..24dde57 100644 > --- a/src/mesa/program/programopt.c > +++ b/src/mesa/program/programopt.c > @@ -589,3 +589,30 @@ _mesa_remove_output_reads(struct gl_program *prog, > gl_register_file type) > } > } > } > + > +void > +_mesa_program_fragment_position_to_sysval(struct gl_program *prog) > +{ > + GLuint i; > + > + if (prog->Target != GL_FRAGMENT_PROGRAM_ARB || > + !(prog->InputsRead & BITFIELD64_BIT(VARYING_SLOT_POS))) > + return; > + > + prog->InputsRead &= ~BITFIELD64_BIT(VARYING_SLOT_POS); > + prog->SystemValuesRead |= 1 << SYSTEM_VALUE_FRAG_COORD; > + > + for (i = 0; i < prog->NumInstructions; i++) { > + struct prog_instruction *inst = prog->Instructions + i; > + const GLuint numSrc = _mesa_num_inst_src_regs(inst->Opcode); > + GLuint j;
I'd make numSrc and j just be unsigned. With that, this patch is Reviewed-by: Ian Romanick <[email protected]> > + > + for (j = 0; j < numSrc; j++) { > + if (inst->SrcReg[j].File == PROGRAM_INPUT && > + inst->SrcReg[j].Index == VARYING_SLOT_POS) { > + inst->SrcReg[j].File = PROGRAM_SYSTEM_VALUE; > + inst->SrcReg[j].Index = SYSTEM_VALUE_FRAG_COORD; > + } > + } > + } > +} > diff --git a/src/mesa/program/programopt.h b/src/mesa/program/programopt.h > index 757421e..1520d16 100644 > --- a/src/mesa/program/programopt.h > +++ b/src/mesa/program/programopt.h > @@ -51,6 +51,8 @@ _mesa_count_texture_instructions(struct gl_program *prog); > extern void > _mesa_remove_output_reads(struct gl_program *prog, gl_register_file type); > > +extern void > +_mesa_program_fragment_position_to_sysval(struct gl_program *prog); > > #ifdef __cplusplus > } > _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
