summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/r500_fragprog.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-05-15 13:21:50 +1000
committerDave Airlie <airlied@redhat.com>2008-05-15 18:40:07 +1000
commit10e0a36a496a7032b15728343cf8ee2ca2df5cb3 (patch)
treee1ec4c881a7ca370d37ec1180831c548ab7415c6 /src/mesa/drivers/dri/r300/r500_fragprog.c
parent375656440bd03d229701a1c97ef3f2ac61ba6712 (diff)
r500: some trivial fixups to get tri working.
the counter was being used one instruction over the end
Diffstat (limited to 'src/mesa/drivers/dri/r300/r500_fragprog.c')
-rw-r--r--src/mesa/drivers/dri/r300/r500_fragprog.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/r300/r500_fragprog.c b/src/mesa/drivers/dri/r300/r500_fragprog.c
index f9ef582d0a..2ea77bcfad 100644
--- a/src/mesa/drivers/dri/r300/r500_fragprog.c
+++ b/src/mesa/drivers/dri/r300/r500_fragprog.c
@@ -601,12 +601,11 @@ static GLboolean parse_program(struct r500_fragment_program *fp)
}
/* Finish him! (If it's an ALU/OUT instruction...) */
- if ((fp->inst[counter].inst0 & 0x3) ^ 0x2) {
- fp->inst[counter].inst0 |= R500_INST_TYPE_OUT
+ if ((fp->inst[counter-1].inst0 & 0x3) <= 1) {
+ fp->inst[counter-1].inst0 |= R500_INST_TYPE_OUT
| R500_INST_TEX_SEM_WAIT | R500_INST_LAST;
} else {
/* We still need to put an output inst, right? */
- counter++;
fp->inst[counter].inst0 = R500_INST_TYPE_OUT
| R500_INST_TEX_SEM_WAIT | R500_INST_LAST
| R500_INST_RGB_OMASK_R | R500_INST_RGB_OMASK_G
@@ -625,6 +624,7 @@ static GLboolean parse_program(struct r500_fragment_program *fp)
| R500_ALU_RGBA_ADDRD(0)
| MAKE_SWIZ_RGBA_C(R500_SWIZ_RGB_ZERO)
| MAKE_SWIZ_ALPHA_C(R500_SWIZZLE_ZERO);
+ counter++;
}
fp->cs->nrslots = counter;