[Mesa-dev] [PATCH 5/5] intel/vulkan: Use devinfo cs_scratch_ids_per_subslice

Jordan Justen jordan.l.justen at intel.com
Wed Mar 7 08:16:30 UTC 2018


Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
---
 src/intel/vulkan/anv_allocator.c | 31 +++----------------------------
 1 file changed, 3 insertions(+), 28 deletions(-)

diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c
index 423e863a9e0..eb52812191b 100644
--- a/src/intel/vulkan/anv_allocator.c
+++ b/src/intel/vulkan/anv_allocator.c
@@ -1098,34 +1098,9 @@ anv_scratch_pool_alloc(struct anv_device *device, struct anv_scratch_pool *pool,
    const struct gen_device_info *devinfo = &physical_device->info;
 
    const unsigned subslices = MAX2(physical_device->subslice_total, 1);
-
-   unsigned scratch_ids_per_subslice;
-   if (devinfo->is_haswell) {
-      /* WaCSScratchSize:hsw
-       *
-       * Haswell's scratch space address calculation appears to be sparse
-       * rather than tightly packed. The Thread ID has bits indicating
-       * which subslice, EU within a subslice, and thread within an EU it
-       * is. There's a maximum of two slices and two subslices, so these
-       * can be stored with a single bit. Even though there are only 10 EUs
-       * per subslice, this is stored in 4 bits, so there's an effective
-       * maximum value of 16 EUs. Similarly, although there are only 7
-       * threads per EU, this is stored in a 3 bit number, giving an
-       * effective maximum value of 8 threads per EU.
-       *
-       * This means that we need to use 16 * 8 instead of 10 * 7 for the
-       * number of threads per subslice.
-       */
-      scratch_ids_per_subslice = 16 * 8;
-   } else if (devinfo->is_cherryview) {
-      /* For Cherryview, it appears that the scratch addresses for the 6 EU
-       * devices may still generate compute scratch addresses covering the
-       * same range as 8 EU.
-       */
-      scratch_ids_per_subslice = 8 * 7;
-   } else {
-      scratch_ids_per_subslice = devinfo->max_cs_threads;
-   }
+   const unsigned scratch_ids_per_subslice =
+      devinfo->cs_scratch_ids_per_subslice ?
+      devinfo->cs_scratch_ids_per_subslice : devinfo->max_cs_threads;
 
    uint32_t max_threads[] = {
       [MESA_SHADER_VERTEX]           = devinfo->max_vs_threads,
-- 
2.16.1



More information about the mesa-dev mailing list