panfrost: Align instance size for IDVS

Hardware requirement. Failing to do this raises a DATA_INVALID_FAULT.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14154>
This commit is contained in:
Alyssa Rosenzweig 2021-12-10 14:31:25 -05:00 committed by Marge Bot
parent 79356b2e5f
commit 2ff3c4a636

View file

@ -2850,9 +2850,19 @@ panfrost_direct_draw(struct panfrost_batch *batch,
ctx->offset_start = draw->start;
}
if (info->instance_count > 1)
ctx->padded_count = panfrost_padded_vertex_count(vertex_count);
else
if (info->instance_count > 1) {
unsigned count = vertex_count;
/* Index-Driven Vertex Shading requires different instances to
* have different cache lines for position results. Each vertex
* position is 16 bytes and the Mali cache line is 64 bytes, so
* the instance count must be aligned to 4 vertices.
*/
if (idvs)
count = ALIGN_POT(count, 4);
ctx->padded_count = panfrost_padded_vertex_count(count);
} else
ctx->padded_count = vertex_count;
panfrost_statistics_record(ctx, info, draw);