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:
committed by
Marge Bot
parent
3d8ffa3dd4
commit
18c1977b65
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user