struct vertex_buffer *vb = &tnl->vb;
unsigned int unBit;
- unsigned int i;
+ unsigned int i, j = 0;
BEGIN_BATCH_NO_AUTOSTATE(6);
R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CTL_CONST, 1));
unBit = 1 << i;
if(vpc->mesa_program.Base.InputsRead & unBit)
{
- rcommon_emit_vector(ctx,
- &context->radeon.tcl.aos[i],
- vb->AttribPtr[i]->data,
- vb->AttribPtr[i]->size,
- vb->AttribPtr[i]->stride,
- vb->Count);
-
- /* currently aos are packed */
- r700SetupVTXConstants(ctx,
- i,
- (void*)(&context->radeon.tcl.aos[i]),
- (unsigned int)context->radeon.tcl.aos[i].components,
- (unsigned int)context->radeon.tcl.aos[i].stride * 4,
- (unsigned int)context->radeon.tcl.aos[i].count);
-
+ if (!context->radeon.tcl.aos[j].bo) {
+ rcommon_emit_vector(ctx,
+ &context->radeon.tcl.aos[j],
+ vb->AttribPtr[i]->data,
+ vb->AttribPtr[i]->size,
+ vb->AttribPtr[i]->stride,
+ vb->Count);
+
+ /* currently aos are packed */
+ r700SetupVTXConstants(ctx,
+ j,
+ (void*)(&context->radeon.tcl.aos[j]),
+ (unsigned int)context->radeon.tcl.aos[j].components,
+ (unsigned int)context->radeon.tcl.aos[j].stride * 4,
+ (unsigned int)context->radeon.tcl.aos[j].count);
+ j++;
+ }
context->radeon.tcl.aos_count++;
}
}
struct gl_vertex_program *mesa_vp,
unsigned int unStart)
{
- int i;
+ int i, j = 0;
unsigned int unBit;
unsigned int unTotal = unStart;
for(i=0; i<VERT_ATTRIB_MAX; i++)
unBit = 1 << i;
if(mesa_vp->Base.InputsRead & unBit)
{
- pAsm->ucVP_AttributeMap[i] = unTotal++;
+ pAsm->ucVP_AttributeMap[j] = unTotal++;
+ j++;
}
}
return (unTotal - unStart);
struct r700_vertex_program *vp,
struct gl_vertex_program *mesa_vp)
{
- int i;
+ int i, j = 0;
unsigned int unBit;
VTX_FETCH_METHOD vtxFetchMethod;
vtxFetchMethod.bEnableMini = GL_FALSE;
if(mesa_vp->Base.InputsRead & unBit)
{
assemble_vfetch_instruction(&vp->r700AsmCode,
- i,
- vp->r700AsmCode.ucVP_AttributeMap[i],
- vp->aos_desc[i].size,
- vp->aos_desc[i].type,
- &vtxFetchMethod);
+ j,
+ vp->r700AsmCode.ucVP_AttributeMap[j],
+ vp->aos_desc[j].size,
+ vp->aos_desc[j].type,
+ &vtxFetchMethod);
+ j++;
}
}
struct vertex_buffer *vb = &tnl->vb;
unsigned int unBit;
- unsigned int i;
+ unsigned int i, j = 0;
for(i=0; i<VERT_ATTRIB_MAX; i++)
{
unBit = 1 << i;
if(vpc->mesa_program.Base.InputsRead & unBit) /* ctx->Array.ArrayObj->xxxxxxx */
{
- vpc->aos_desc[i].size = vb->AttribPtr[i]->size;
- vpc->aos_desc[i].stride = vb->AttribPtr[i]->size * sizeof(GL_FLOAT);/* when emit array, data is packed. vb->AttribPtr[i]->stride;*/
- vpc->aos_desc[i].type = GL_FLOAT;
+ vpc->aos_desc[j].size = vb->AttribPtr[i]->size;
+ vpc->aos_desc[j].stride = vb->AttribPtr[i]->size * sizeof(GL_FLOAT);/* when emit array, data is packed. vb->AttribPtr[i]->stride;*/
+ vpc->aos_desc[j].type = GL_FLOAT;
+ j++;
}
}