- switch (hwtnl->cmd.vdecl[i].identity.type) {
- case SVGA3D_DECLTYPE_FLOAT1:
- width = 4;
- break;
- case SVGA3D_DECLTYPE_FLOAT2:
- width = 4*2;
- break;
- case SVGA3D_DECLTYPE_FLOAT3:
- width = 4*3;
- break;
- case SVGA3D_DECLTYPE_FLOAT4:
- width = 4*4;
- break;
- case SVGA3D_DECLTYPE_D3DCOLOR:
- width = 4;
- break;
- case SVGA3D_DECLTYPE_UBYTE4:
- width = 1*4;
- break;
- case SVGA3D_DECLTYPE_SHORT2:
- width = 2*2;
- break;
- case SVGA3D_DECLTYPE_SHORT4:
- width = 2*4;
- break;
- case SVGA3D_DECLTYPE_UBYTE4N:
- width = 1*4;
- break;
- case SVGA3D_DECLTYPE_SHORT2N:
- width = 2*2;
- break;
- case SVGA3D_DECLTYPE_SHORT4N:
- width = 2*4;
- break;
- case SVGA3D_DECLTYPE_USHORT2N:
- width = 2*2;
- break;
- case SVGA3D_DECLTYPE_USHORT4N:
- width = 2*4;
- break;
- case SVGA3D_DECLTYPE_UDEC3:
- width = 4;
- break;
- case SVGA3D_DECLTYPE_DEC3N:
- width = 4;
- break;
- case SVGA3D_DECLTYPE_FLOAT16_2:
- width = 2*2;
- break;
- case SVGA3D_DECLTYPE_FLOAT16_4:
- width = 2*4;
- break;
- default:
- assert(0);
- width = 0;
- break;
- }
+ for (i = 0; i < hwtnl->cmd.vdecl_count; i++) {
+ struct pipe_resource *vb = hwtnl->cmd.vdecl_vb[i];
+ unsigned size = vb ? vb->width0 : 0;
+ unsigned offset = hwtnl->cmd.vdecl[i].array.offset;
+ unsigned stride = hwtnl->cmd.vdecl[i].array.stride;
+ int index_bias = (int) range->indexBias + hwtnl->index_bias;
+ unsigned width;
+
+ assert(vb);
+ assert(size);
+ assert(offset < size);
+ assert(min_index <= max_index);
+
+ switch (hwtnl->cmd.vdecl[i].identity.type) {
+ case SVGA3D_DECLTYPE_FLOAT1:
+ width = 4;
+ break;
+ case SVGA3D_DECLTYPE_FLOAT2:
+ width = 4 * 2;
+ break;
+ case SVGA3D_DECLTYPE_FLOAT3:
+ width = 4 * 3;
+ break;
+ case SVGA3D_DECLTYPE_FLOAT4:
+ width = 4 * 4;
+ break;
+ case SVGA3D_DECLTYPE_D3DCOLOR:
+ width = 4;
+ break;
+ case SVGA3D_DECLTYPE_UBYTE4:
+ width = 1 * 4;
+ break;
+ case SVGA3D_DECLTYPE_SHORT2:
+ width = 2 * 2;
+ break;
+ case SVGA3D_DECLTYPE_SHORT4:
+ width = 2 * 4;
+ break;
+ case SVGA3D_DECLTYPE_UBYTE4N:
+ width = 1 * 4;
+ break;
+ case SVGA3D_DECLTYPE_SHORT2N:
+ width = 2 * 2;
+ break;
+ case SVGA3D_DECLTYPE_SHORT4N:
+ width = 2 * 4;
+ break;
+ case SVGA3D_DECLTYPE_USHORT2N:
+ width = 2 * 2;
+ break;
+ case SVGA3D_DECLTYPE_USHORT4N:
+ width = 2 * 4;
+ break;
+ case SVGA3D_DECLTYPE_UDEC3:
+ width = 4;
+ break;
+ case SVGA3D_DECLTYPE_DEC3N:
+ width = 4;
+ break;
+ case SVGA3D_DECLTYPE_FLOAT16_2:
+ width = 2 * 2;
+ break;
+ case SVGA3D_DECLTYPE_FLOAT16_4:
+ width = 2 * 4;
+ break;
+ default:
+ assert(0);
+ width = 0;
+ break;
+ }