Mesa (master): v3d: Add and use a define for the number of channels in a QPU invocation.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 12 23:21:30 UTC 2019


Module: Mesa
Branch: master
Commit: 89b7df552badea9560765dff337232bca213781f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=89b7df552badea9560765dff337232bca213781f

Author: Eric Anholt <eric at anholt.net>
Date:   Thu Apr 11 13:27:22 2019 -0700

v3d: Add and use a define for the number of channels in a QPU invocation.

A shader invocation always executes 16 channels together, so we often end
up multiplying things by this magic 16 number.  Give it a name.

---

 src/broadcom/common/v3d_limits.h              | 5 +++++
 src/broadcom/compiler/vir.c                   | 2 +-
 src/broadcom/compiler/vir_register_allocate.c | 5 +++--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/broadcom/common/v3d_limits.h b/src/broadcom/common/v3d_limits.h
index e21ee246eff..77684762203 100644
--- a/src/broadcom/common/v3d_limits.h
+++ b/src/broadcom/common/v3d_limits.h
@@ -24,6 +24,11 @@
 #ifndef V3D_LIMITS_H
 #define V3D_LIMITS_H
 
+/* Number of channels a QPU thread executes in parallel.  Also known as
+ * gl_SubGroupSizeARB.
+ */
+#define V3D_CHANNELS 16
+
 #define V3D_MAX_FS_INPUTS 64
 #define V3D_MAX_VS_INPUTS 64
 
diff --git a/src/broadcom/compiler/vir.c b/src/broadcom/compiler/vir.c
index 4f83f03c7b2..551542f33bb 100644
--- a/src/broadcom/compiler/vir.c
+++ b/src/broadcom/compiler/vir.c
@@ -628,7 +628,7 @@ v3d_vs_set_prog_data(struct v3d_compile *c,
          * batches.
          */
         assert(c->devinfo->vpm_size);
-        int sector_size = 16 * sizeof(uint32_t) * 8;
+        int sector_size = V3D_CHANNELS * sizeof(uint32_t) * 8;
         int vpm_size_in_sectors = c->devinfo->vpm_size / sector_size;
         int half_vpm = vpm_size_in_sectors / 2;
         int vpm_output_sectors = half_vpm - prog_data->vpm_input_size;
diff --git a/src/broadcom/compiler/vir_register_allocate.c b/src/broadcom/compiler/vir_register_allocate.c
index a55b23f74ed..1ffb37f1a38 100644
--- a/src/broadcom/compiler/vir_register_allocate.c
+++ b/src/broadcom/compiler/vir_register_allocate.c
@@ -205,7 +205,7 @@ v3d_spill_reg(struct v3d_compile *c, int spill_temp)
 
         if (!is_uniform) {
                 uint32_t spill_offset = c->spill_size;
-                c->spill_size += 16 * sizeof(uint32_t);
+                c->spill_size += V3D_CHANNELS * sizeof(uint32_t);
 
                 if (spill_offset == 0)
                         v3d_setup_spill_base(c);
@@ -624,7 +624,8 @@ v3d_register_allocate(struct v3d_compile *c, bool *spilled)
          * conformance tests to make sure that spilling works.
          */
         int force_register_spills = 0;
-        if (c->spill_size < 16 * sizeof(uint32_t) * force_register_spills) {
+        if (c->spill_size <
+            V3D_CHANNELS * sizeof(uint32_t) * force_register_spills) {
                 int node = v3d_choose_spill_node(c, g, temp_to_node);
                 if (node != -1) {
                         v3d_spill_reg(c, map[node].temp);




More information about the mesa-commit mailing list