nvk: Spill DRAW_IDX pre-Turing

Spill draw_idx to shadow scratch once we've written it to the root
descriptor.  This saves us a bit of register pressure around a pretty
tight seciton.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Faith Ekstrand
2023-03-27 17:44:33 -05:00
committed by Marge Bot
parent 3d8ffa3dd4
commit 18c1977b65
2 changed files with 13 additions and 0 deletions
+12
View File
@@ -1611,6 +1611,9 @@ nvk_mme_build_draw(struct mme_builder *b,
mme_free_reg(b, first_instance);
if (b->devinfo->cls_eng3d < TURING_A)
nvk_mme_spill(b, DRAW_IDX, draw_idx);
struct mme_value begin = nvk_mme_load_scratch(b, DRAW_BEGIN);
mme_loop(b, instance_count) {
@@ -1635,6 +1638,9 @@ nvk_mme_build_draw(struct mme_builder *b,
mme_free_reg(b, begin);
mme_free_reg(b, first_vertex);
mme_free_reg(b, vertex_count);
if (b->devinfo->cls_eng3d < TURING_A)
nvk_mme_unspill(b, DRAW_IDX, draw_idx);
}
void
@@ -1697,6 +1703,9 @@ nvk_mme_build_draw_indexed(struct mme_builder *b,
mme_free_reg(b, vertex_offset);
mme_free_reg(b, first_instance);
if (b->devinfo->cls_eng3d < TURING_A)
nvk_mme_spill(b, DRAW_IDX, draw_idx);
struct mme_value begin = nvk_mme_load_scratch(b, DRAW_BEGIN);
mme_loop(b, instance_count) {
@@ -1721,6 +1730,9 @@ nvk_mme_build_draw_indexed(struct mme_builder *b,
mme_free_reg(b, begin);
mme_free_reg(b, first_index);
mme_free_reg(b, index_count);
if (b->devinfo->cls_eng3d < TURING_A)
nvk_mme_unspill(b, DRAW_IDX, draw_idx);
}
void
+1
View File
@@ -30,6 +30,7 @@ enum nvk_mme_scratch {
NVK_MME_SCRATCH_DRAW_BEGIN,
NVK_MME_SCRATCH_DRAW_COUNT,
NVK_MME_SCRATCH_DRAW_PAD_DW,
NVK_MME_SCRATCH_DRAW_IDX,
/* Must be at the end */
NVK_MME_NUM_SCRATCH,