panfrost: Default to 256 threads for TLS
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 25 Feb 2020 20:34:51 +0000 (15:34 -0500)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 27 Feb 2020 15:32:05 +0000 (16:32 +0100)
I'm not sure where I got the impression 1024 was the right number. From
kbase:

   #define THREAD_MT_DEFAULT 256

(where MT = "max threads" and the threads to allocate for TLS is <= max
threads). Let's cut out memory footprint for spilling by 75% :)

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3950>

src/panfrost/encoder/pan_props.c
src/panfrost/encoder/pan_scratch.c

index 9fd316295d019d3fb46674d485cdba9ce454c289..fe9e5ab3e0abae0eeffd1657cdb6dd29c1a03e0f 100644 (file)
@@ -75,11 +75,17 @@ panfrost_query_core_count(int fd)
 unsigned
 panfrost_query_thread_tls_alloc(int fd)
 {
-        /* On older kernels, we worst-case to 1024 threads, the architectural
-         * maximum for Midgard */
+        /* On older kernels, we worst-case to 256 threads, the architectural
+         * maximum for Midgard. On my current kernel/hardware, I'm seeing this
+         * readback as 0, so we'll worst-case there too */
 
-        return panfrost_query_raw(fd,
-                        DRM_PANFROST_PARAM_THREAD_TLS_ALLOC, false, 1024);
+        unsigned tls = panfrost_query_raw(fd,
+                        DRM_PANFROST_PARAM_THREAD_TLS_ALLOC, false, 256);
+
+        if (tls)
+                return tls;
+        else
+                return 256;
 }
 
 /* Given a GPU ID like 0x860, return a prettified model name */
index c75c1f330ef98c505f36f58cf459994d6c449ff9..ccb2fd7fac3d086802289c96d27036e3fc60fd41 100644 (file)
@@ -41,7 +41,7 @@
  * must allocate for, and DRM_PANFROST_PARAM_SHADER_PRESENT for a bitmask of
  * shader cores (so take a popcount of that mask for the number of shader
  * cores). On older kernels that do not support querying these values,
- * following kbase, we may use the worst-case value of 1024 threads for
+ * following kbase, we may use the worst-case value of 256 threads for
  * THREAD_TLS_ALLOC, and the worst-case value of 16 cores for Midgard per the
  * "shader core count" column of the implementations table in
  * https://en.wikipedia.org/wiki/Mali_%28GPU% [citation needed]