Value *startOffset;
if(ied.InstanceEnable)
{
- Value* stepRate = C(ied.InstanceDataStepRate);
+ Value* stepRate = C(ied.InstanceAdvancementState);
// prevent a div by 0 for 0 step rate
Value* isNonZeroStep = ICMP_UGT(stepRate, C(0));
startOffset = startInstance;
}
+ else if (ied.InstanceStrideEnable)
+ {
+ SWR_ASSERT((0), "TODO: Fill out more once driver sends this down.");
+ }
else
{
// offset indices by baseVertex
Value *startOffset;
if(ied.InstanceEnable)
{
- Value* stepRate = C(ied.InstanceDataStepRate);
+ Value* stepRate = C(ied.InstanceAdvancementState);
// prevent a div by 0 for 0 step rate
Value* isNonZeroStep = ICMP_UGT(stepRate, C(0));
startOffset = startInstance;
}
+ else if (ied.InstanceStrideEnable)
+ {
+ SWR_ASSERT((0), "TODO: Fill out more once driver sends this down.");
+ }
else
{
// offset indices by baseVertex
uint32_t Format : 10;
uint32_t StreamIndex : 6;
uint32_t InstanceEnable : 1;
+ uint32_t InstanceStrideEnable : 1;
uint32_t ComponentControl0 : 3;
uint32_t ComponentControl1 : 3;
uint32_t ComponentControl2 : 3;
uint32_t ComponentControl3 : 3;
uint32_t ComponentPacking : 4;
- uint32_t _reserved : 19;
+ uint32_t _reserved : 18;
};
uint64_t bits;
};
- uint32_t InstanceDataStepRate;
+ uint32_t InstanceAdvancementState;
};
// used to set ComponentPacking
{
if((layout[i].bits != other.layout[i].bits) ||
((layout[i].InstanceEnable == 1) &&
- (layout[i].InstanceDataStepRate != other.layout[i].InstanceDataStepRate))){
+ (layout[i].InstanceAdvancementState != other.layout[i].InstanceAdvancementState))){
return false;
}
}
? ComponentControl::StoreSrc
: ComponentControl::Store1Fp;
velems->fsState.layout[i].ComponentPacking = ComponentEnable::XYZW;
- velems->fsState.layout[i].InstanceDataStepRate =
+ velems->fsState.layout[i].InstanceAdvancementState =
attribs[i].instance_divisor;
/* Calculate the pitch of each stream */