Mesa (main): broadcom/compiler: drop spill_count and add spilling boolean
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Feb 18 09:01:50 UTC 2022
Module: Mesa
Branch: main
Commit: 8883975209a664aceba7b35fbbcbe7cb067f6795
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8883975209a664aceba7b35fbbcbe7cb067f6795
Author: Iago Toral Quiroga <itoral at igalia.com>
Date: Thu Feb 17 08:53:54 2022 +0100
broadcom/compiler: drop spill_count and add spilling boolean
We added spill_count to handle uniform batch spills, which we no longer do.
What we want now is a way to know if we are spilling registers.
Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15041>
---
src/broadcom/compiler/nir_to_vir.c | 1 -
src/broadcom/compiler/v3d_compiler.h | 9 ++++++---
src/broadcom/compiler/vir_register_allocate.c | 6 +++---
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index dbcefbbc2d8..53d22f07441 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -4507,7 +4507,6 @@ v3d_nir_to_vir(struct v3d_compile *c)
return;
}
- c->spill_count = 0;
c->spills = 0;
c->fills = 0;
c->threads /= 2;
diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h
index 0443fe9c8db..ef59948dc23 100644
--- a/src/broadcom/compiler/v3d_compiler.h
+++ b/src/broadcom/compiler/v3d_compiler.h
@@ -789,6 +789,12 @@ struct v3d_compile {
uint32_t spill_size;
/* Shader-db stats */
uint32_t spills, fills, loops;
+
+ /* Whether we are in the process of spilling registers for
+ * register allocation
+ */
+ bool spilling;
+
/**
* Register spilling's per-thread base address, shared between each
* spill/fill's addressing calculations.
@@ -881,9 +887,6 @@ struct v3d_compile {
bool emitted_tlb_load;
bool lock_scoreboard_on_first_thrsw;
- /* Total number of spilled registers in the program */
- uint32_t spill_count;
-
enum v3d_compilation_result compilation_result;
bool tmu_dirty_rcl;
diff --git a/src/broadcom/compiler/vir_register_allocate.c b/src/broadcom/compiler/vir_register_allocate.c
index ab8a261c3b0..a970c634ace 100644
--- a/src/broadcom/compiler/vir_register_allocate.c
+++ b/src/broadcom/compiler/vir_register_allocate.c
@@ -278,7 +278,7 @@ v3d_setup_spill_base(struct v3d_compile *c)
* accumulator because it is used for TMU spill/fill and thus
* needs to persist across thread switches.
*/
- if (c->spill_count > 0) {
+ if (c->spilling) {
int temp_class = CLASS_BITS_PHYS;
if (i != c->spill_base.index)
temp_class |= CLASS_BITS_ACC;
@@ -415,8 +415,7 @@ static void
v3d_spill_reg(struct v3d_compile *c, int *acc_nodes, int spill_temp)
{
int start_num_temps = c->num_temps;
-
- c->spill_count++;
+ c->spilling = true;
bool is_uniform = vir_is_mov_uniform(c, spill_temp);
@@ -615,6 +614,7 @@ v3d_spill_reg(struct v3d_compile *c, int *acc_nodes, int spill_temp)
}
c->disable_ldunif_opt = had_disable_ldunif_opt;
+ c->spilling = false;
}
struct v3d_ra_select_callback_data {
More information about the mesa-commit
mailing list