summaryrefslogtreecommitdiff
path: root/src/mesa/shader/program.c
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2009-12-11 09:22:00 -0700
committerBrian Paul <brianp@vmware.com>2009-12-11 09:22:00 -0700
commitb605f4ff11c894500f2d0273c5d4653ff413448d (patch)
tree144a2202677b29020bfb0477d145a985cae3c29f /src/mesa/shader/program.c
parentda3bc492d2438ac915e720c17b54d0d12ffd8a97 (diff)
parent5076a4f53a2f34cc9116b45951037f639885c7a1 (diff)
Merge branch 'mesa_7_6_branch' into mesa_7_7_branch
Diffstat (limited to 'src/mesa/shader/program.c')
-rw-r--r--src/mesa/shader/program.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
index 532adf4d36..6b8d94e661 100644
--- a/src/mesa/shader/program.c
+++ b/src/mesa/shader/program.c
@@ -806,9 +806,17 @@ _mesa_find_free_register(const struct gl_program *prog, GLuint regFile)
const struct prog_instruction *inst = prog->Instructions + i;
const GLuint n = _mesa_num_inst_src_regs(inst->Opcode);
- for (k = 0; k < n; k++) {
- if (inst->SrcReg[k].File == regFile) {
- used[inst->SrcReg[k].Index] = GL_TRUE;
+ /* check dst reg first */
+ if (inst->DstReg.File == regFile) {
+ used[inst->DstReg.Index] = GL_TRUE;
+ }
+ else {
+ /* check src regs otherwise */
+ for (k = 0; k < n; k++) {
+ if (inst->SrcReg[k].File == regFile) {
+ used[inst->SrcReg[k].Index] = GL_TRUE;
+ break;
+ }
}
}
}