iris: Disable GLSL lower_const_arrays_to_uniforms.
We want to use nir_opt_large_constants() instead (which is already enabled), since that doesn't involve uploading the large immediate data array again on each CB0 update. The downside is a bit of addressing math, since constant_data is accessed using 64-bit global addresses. The shader-db results are a bit all over: All Iris driver platforms had similar results. (Ice Lake shown) total instructions in shared programs: 19910185 -> 19913931 (0.02%) instructions in affected programs: 225374 -> 229120 (1.66%) helped: 3 / HURT: 348 total cycles in shared programs: 856004856 -> 855016808 (-0.12%) cycles in affected programs: 22832422 -> 21844374 (-4.33%) helped: 277 / HURT: 101 total spills in shared programs: 6580 -> 6609 (0.44%) spills in affected programs: 516 -> 545 (5.62%) helped: 1 / HURT: 4 total fills in shared programs: 8235 -> 8267 (0.39%) fills in affected programs: 1022 -> 1054 (3.13%) helped: 1 / HURT: 3 total sends in shared programs: 1039347 -> 1039095 (-0.02%) sends in affected programs: 16367 -> 16115 (-1.54%) helped: 251 / HURT: 0 LOST: 5 GAINED: 2 LOST: - 3 SIMD16 fragment shaders (Superposition) - 2 SIMD16 compute shaders (Aztec Ruins) GAINED: - fake news... 2 SIMD8 compute shaders that replace the lost SIMD16 compute shaders. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16539>
This commit is contained in:
committed by
Ian Romanick
parent
88756cee8d
commit
467ee94001
@@ -363,6 +363,11 @@ iris_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
|
||||
case PIPE_CAP_MAX_VARYINGS:
|
||||
return 32;
|
||||
case PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF:
|
||||
/* We want immediate arrays to go get uploaded as nir->constant_data by
|
||||
* nir_opt_large_constants() instead.
|
||||
*/
|
||||
return 0;
|
||||
case PIPE_CAP_RESOURCE_FROM_USER_MEMORY:
|
||||
/* AMD_pinned_memory assumes the flexibility of using client memory
|
||||
* for any buffer (incl. vertex buffers) which rules out the prospect
|
||||
|
||||
Reference in New Issue
Block a user