summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/r300_vertexprog.c
diff options
context:
space:
mode:
authorAapo Tahkola <aet@rasterburn.org>2005-03-16 22:32:48 +0000
committerAapo Tahkola <aet@rasterburn.org>2005-03-16 22:32:48 +0000
commitc1aa3d1e6f6fd3971df93b11d4db139bec824c91 (patch)
treecf83cdfe2f95bd8f9f78a34185d05dc74313ce0d /src/mesa/drivers/dri/r300/r300_vertexprog.c
parentdd9da8cdb58873daf51dd60839aa2b514a737c47 (diff)
Proper VAP output configuration as R300_RS_ROUTE_0_COLOR became optional and broke arbvptorus(takes no input color but produces output color). Also removing some useless code.
Diffstat (limited to 'src/mesa/drivers/dri/r300/r300_vertexprog.c')
-rw-r--r--src/mesa/drivers/dri/r300/r300_vertexprog.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_vertexprog.c b/src/mesa/drivers/dri/r300/r300_vertexprog.c
index 811f9ccb55..428fe41258 100644
--- a/src/mesa/drivers/dri/r300/r300_vertexprog.c
+++ b/src/mesa/drivers/dri/r300/r300_vertexprog.c
@@ -373,16 +373,6 @@ static unsigned long t_src_index(struct r300_vertex_program *vp, struct vp_src_r
int max_reg=-1;
if(src->File == PROGRAM_INPUT){
- /*
- switch(src->Index){
- case 0: return 0;
- case 3: return 1;
-
- case 2: return 2;
- case 8: return 8;
-
- default: printf("unknown input index %d\n", src->Index); exit(0); break;
- }*/
if(vp->inputs[src->Index] != -1)
return vp->inputs[src->Index];
@@ -487,6 +477,23 @@ static void translate_program(struct r300_vertex_program *vp)
for(i=0; i < VERT_ATTRIB_MAX; i++)
vp->inputs[i]=-1;
+ vp->outputs = 0;
+ /* FIXME: hardcoded values in arbprogparse.c:parse_result_binding ()
+ We might want to use these constants for VAP output in general as well once they have been added to
+ mesa headers.
+ */
+ if(mesa_vp->OutputsWritten & (1<<0))
+ vp->outputs |= _TNL_BIT_POS;
+ if(mesa_vp->OutputsWritten & (1<<1))
+ vp->outputs |= _TNL_BIT_COLOR0;
+ if(mesa_vp->OutputsWritten & (1<<2))
+ vp->outputs |= _TNL_BIT_COLOR1;
+ for(i=0; i < 8/*ctx->Const.MaxTextureUnits*/; i++)
+ if(mesa_vp->OutputsWritten & (1<<(7+i)))
+ vp->outputs |= _TNL_BIT_TEX(i);
+ if(mesa_vp->OutputsWritten & ~(0x7 | 0x3f80))
+ fprintf(stderr, "%s:Odd bits(0x%08x)\n", __FUNCTION__, mesa_vp->OutputsWritten);
+
o_inst=vp->program.body.i;
for(vpi=mesa_vp->Instructions; vpi->Opcode != VP_OPCODE_END; vpi++, o_inst++){