summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-06-06 21:37:34 -0700
committerKenneth Graunke <[email protected]>2016-06-12 00:38:50 -0700
commit2213ffdb4bb79856f0556bdf2bfd4bdf57720232 (patch)
tree1b975a49f37f6ae4bddc9e84689634ab99cecd0a /src/mesa
parent9cd8f95809c21330e4ccbfbe80ee2eea0f7906ae (diff)
i965: Allocate scratch space for the maximum number of compute threads.
We were allocating enough space for the number of threads per subslice, when we should have been allocating space for the number of threads in the entire GPU. Even though we currently run with a reduced thread count (due to a bug), we might still overflow the scratch buffer because the address calculation is based on the FFTID, which can depend on exactly which threads, EUs, and threads are executing. We need to allocate enough for every possible thread that could run. Fixes rendering corruption in Synmark's Gl43CSDof on Gen8+. Earlier platforms need additional bug fixes. Cc: "12.0" <[email protected]> Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Francisco Jerez <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_cs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_cs.c b/src/mesa/drivers/dri/i965/brw_cs.c
index 2a255847c65..c8598d61891 100644
--- a/src/mesa/drivers/dri/i965/brw_cs.c
+++ b/src/mesa/drivers/dri/i965/brw_cs.c
@@ -149,8 +149,10 @@ brw_codegen_cs_prog(struct brw_context *brw,
}
if (prog_data.base.total_scratch) {
+ const unsigned subslices = MAX2(brw->intelScreen->subslice_total, 1);
brw_get_scratch_bo(brw, &brw->cs.base.scratch_bo,
- prog_data.base.total_scratch * brw->max_cs_threads);
+ prog_data.base.total_scratch *
+ brw->max_cs_threads * subslices);
}
if (unlikely(INTEL_DEBUG & DEBUG_CS))