iris: Fix scratch space allocation on Icelake.
Gen9-10 have fewer than 4 subslices per slice, so they need this to be rounded up. Gen11 isn't documented as needing this hack, and it can also have more than 4 subslices, so the hack actually can break things. Fixes tests/spec/arb_enhanced_layouts/execution/component-layout/ sso-vs-gs-fs-array-interleave
This commit is contained in:
parent
154e3e45bb
commit
73d525f188
|
@ -1497,14 +1497,18 @@ iris_get_scratch_space(struct iris_context *ice,
|
|||
|
||||
/* The documentation for 3DSTATE_PS "Scratch Space Base Pointer" says:
|
||||
*
|
||||
* "Scratch Space per slice is computed based on 4 sub-slices. SW must
|
||||
* allocate scratch space enough so that each slice has 4 slices
|
||||
* allowed."
|
||||
* "Scratch Space per slice is computed based on 4 sub-slices. SW
|
||||
* must allocate scratch space enough so that each slice has 4
|
||||
* slices allowed."
|
||||
*
|
||||
* According to the other driver team, this applies to compute shaders
|
||||
* as well. This is not currently documented at all.
|
||||
*
|
||||
* This hack is no longer necessary on Gen11+.
|
||||
*/
|
||||
unsigned subslice_total = 4 * devinfo->num_slices;
|
||||
unsigned subslice_total = screen->subslice_total;
|
||||
if (devinfo->gen < 11)
|
||||
subslice_total = 4 * devinfo->num_slices;
|
||||
assert(subslice_total >= screen->subslice_total);
|
||||
|
||||
if (!*bop) {
|
||||
|
|
Loading…
Reference in New Issue