diff options
author | Aapo Tahkola <aet@rasterburn.org> | 2005-03-16 22:32:48 +0000 |
---|---|---|
committer | Aapo Tahkola <aet@rasterburn.org> | 2005-03-16 22:32:48 +0000 |
commit | c1aa3d1e6f6fd3971df93b11d4db139bec824c91 (patch) | |
tree | cf83cdfe2f95bd8f9f78a34185d05dc74313ce0d /src/mesa/drivers/dri/r300/r300_vertexprog.c | |
parent | dd9da8cdb58873daf51dd60839aa2b514a737c47 (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.c | 27 |
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++){ |