diff options
author | Aapo Tahkola <aapo@aapo-desktop.(none)> | 2007-05-06 19:18:10 +0300 |
---|---|---|
committer | Aapo Tahkola <aapo@aapo-desktop.(none)> | 2007-05-06 19:18:10 +0300 |
commit | 660bdc616b01fdca30ca5aebcb5e90b3488e7b49 (patch) | |
tree | 3182c018bf5a218f669fd6f9745abf310754f47b /src | |
parent | 88ae491bd224843be963f67db3531857bed68cd1 (diff) |
rs480: fix textures and secondary color(?). clipping is still busted. tested on r480
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_maos.c | 20 |
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 b2ce6cb991..8de464bcd8 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 ); |