summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAapo Tahkola <aapo@aapo-desktop.(none)>2007-05-06 19:18:10 +0300
committerAapo Tahkola <aapo@aapo-desktop.(none)>2007-05-06 19:18:10 +0300
commit660bdc616b01fdca30ca5aebcb5e90b3488e7b49 (patch)
tree3182c018bf5a218f669fd6f9745abf310754f47b
parent88ae491bd224843be963f67db3531857bed68cd1 (diff)
rs480: fix textures and secondary color(?). clipping is still busted. tested on r480
-rw-r--r--src/mesa/drivers/dri/r300/r300_maos.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c
index b2ce6cb991c..8de464bcd81 100644
--- a/src/mesa/drivers/dri/r300/r300_maos.c
+++ b/src/mesa/drivers/dri/r300/r300_maos.c
@@ -400,6 +400,7 @@ int r300EmitArrays(GLcontext *ctx)
GLuint i;
GLuint InputsRead = 0, OutputsWritten = 0;
int *inputs = NULL;
+ int vir_inputs[VERT_ATTRIB_MAX];
GLint tab[VERT_ATTRIB_MAX];
int swizzle[VERT_ATTRIB_MAX][4];
@@ -442,9 +443,22 @@ int r300EmitArrays(GLcontext *ctx)
inputs[i] = -1;
if(!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) {
- for (i = 0; i < VERT_ATTRIB_MAX; i++)
- if (inputs[i] > 0)
- inputs[i]++;
+ /* Fixed, apply to vir0 only */
+ memcpy(vir_inputs, inputs, VERT_ATTRIB_MAX * sizeof(int));
+ inputs = vir_inputs;
+
+ if (InputsRead & VERT_ATTRIB_POS)
+ inputs[VERT_ATTRIB_POS] = 0;
+
+ if (InputsRead & (1 << VERT_ATTRIB_COLOR0))
+ inputs[VERT_ATTRIB_COLOR0] = 2;
+
+ if (InputsRead & (1 << VERT_ATTRIB_COLOR1))
+ inputs[VERT_ATTRIB_COLOR0] = 3;
+
+ for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++)
+ if (InputsRead & (1 << i))
+ inputs[i] = 6 + (i - VERT_ATTRIB_TEX0);
}
RENDERINPUTS_COPY( rmesa->state.render_inputs_bitset, inputs_bitset );