diff options
author | Aapo Tahkola <aet@rasterburn.org> | 2006-06-27 01:26:47 +0000 |
---|---|---|
committer | Aapo Tahkola <aet@rasterburn.org> | 2006-06-27 01:26:47 +0000 |
commit | caf0176472ea024e70b2401d622947281b316a24 (patch) | |
tree | e49e737def3fa6f356072bbaa1b09d0add6ad2a4 /src/mesa | |
parent | 4e0617849c5c6f459f534dc4b2be51909e0755a4 (diff) |
Fix generic vertex attribs (Rune Petersen)
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_context.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_maos.c | 14 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 7ff805fd5d..0f3683fc09 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -544,6 +544,7 @@ struct r300_vap_reg_state { int i_color[2]; int i_fog; int i_tex[R300_MAX_TEXTURE_UNITS]; + int i_attrib[_TNL_LAST_GENERIC-_TNL_FIRST_GENERIC]; int i_index; int i_pointsize; }; diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 259781389f..9cdcb414be 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -368,6 +368,12 @@ void r300EmitArrays(GLcontext * ctx, GLboolean immd) rmesa->state.aos[nr++].aos_reg = prog->inputs[VERT_ATTRIB_TEX0+i]; } } + for (i=0;i<(_TNL_LAST_GENERIC-_TNL_FIRST_GENERIC);i++) { + if (InputsRead & (1<<(VERT_ATTRIB_GENERIC0+i))) { + RENDERINPUTS_SET( inputs_bitset, _TNL_ATTRIB_GENERIC(i) ); + rmesa->state.aos[nr++].aos_reg = prog->inputs[VERT_ATTRIB_GENERIC0+i]; + } + } nr = 0; } else { RENDERINPUTS_COPY( inputs_bitset, TNL_CONTEXT(ctx)->render_inputs_bitset ); @@ -457,6 +463,14 @@ void r300EmitArrays(GLcontext * ctx, GLboolean immd) r300->state.texture.tc_count++; } } + for (i = 0; i < (_TNL_LAST_GENERIC-_TNL_FIRST_GENERIC); i++) { + if (RENDERINPUTS_TEST( inputs_bitset, _TNL_ATTRIB_GENERIC(i) )) { + CONFIGURE_AOS(i_attrib[i], AOS_FORMAT_FLOAT, + VB->AttribPtr[VERT_ATTRIB_GENERIC0+i], + immd ? 4 : VB->AttribPtr[VERT_ATTRIB_GENERIC0+i].size, + count); + } + } for(i=0; i < nr; i++) if(r300->state.aos[i].aos_format == 2){ assert(r300->state.aos[i].aos_size == 1); diff --git a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c index c65731d1d7..b46fee7e30 100644 --- a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c +++ b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c @@ -73,6 +73,9 @@ void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, st for (i=0; i < ctx->Const.MaxTextureCoordUnits; i++) CONV_VB(VERT_ATTRIB_TEX0 + i, TexCoordPtr[i]); + + for (i=0; i < 16; i++) + CONV_VB(VERT_ATTRIB_GENERIC0 + i, AttribPtr[VERT_ATTRIB_GENERIC0 + i]); rvb->Primitive = vb->Primitive; rvb->PrimitiveCount = vb->PrimitiveCount; |