static unsigned
panfrost_vertex_instanced(
- struct panfrost_batch *batch,
- struct panfrost_resource *rsrc,
+ unsigned padded_count,
+ unsigned instance_shift, unsigned instance_odd,
unsigned divisor,
- union mali_attr *attrs,
- mali_ptr addr,
- unsigned vertex_count,
- unsigned instance_count)
+ union mali_attr *attrs)
{
- /* First, grab the padded vertex count */
-
- struct pan_shift_odd o = {
- .shift = batch->ctx->payloads[PIPE_SHADER_FRAGMENT].instance_shift,
- .odd = batch->ctx->payloads[PIPE_SHADER_FRAGMENT].instance_odd,
- };
-
- unsigned padded_count = batch->ctx->padded_count;
-
/* Depending if there is an instance divisor or not, packing varies.
* When there is a divisor, the hardware-level divisor is actually the
* product of the instance divisor and the padded count */
* the modulus */
attrs->elements |= MALI_ATTR_MODULO;
- attrs->shift = o.shift;
- attrs->extra_flags = o.odd;
+ attrs->shift = instance_shift;
+ attrs->extra_flags = instance_odd;
return 1;
} else if (util_is_power_of_two_or_zero(hw_divisor)) {
/* Normal, non-instanced attributes */
attrs[k++].elements |= MALI_ATTR_LINEAR;
} else {
- k += panfrost_vertex_instanced(
- batch, rsrc, divisor, &attrs[k], addr, vertex_count, instanced_count);
+ unsigned instance_shift = batch->ctx->payloads[PIPE_SHADER_FRAGMENT].instance_shift;
+ unsigned instance_odd = batch->ctx->payloads[PIPE_SHADER_FRAGMENT].instance_odd;
+
+ k += panfrost_vertex_instanced(batch->ctx->padded_count,
+ instance_shift, instance_odd, divisor, &attrs[k]);
}
}