Module: Mesa Branch: main Commit: 15013958d0794205bab086645a0d8c619a8f9038 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=15013958d0794205bab086645a0d8c619a8f9038
Author: Vasily Khoruzhick <[email protected]> Date: Fri Oct 1 06:32:52 2021 -0700 lima: enable PIPE_CAP_PREFER_POT_ALIGNED_VARYINGS Mali4x0 PP doesn't have a swizzle for load_input, so use POT-aligned varyings to avoid unnecessary movs for vec3 and precision downgrade in case if this vec3 is coordinates for a sampler shader-db: total instructions in shared programs: 15707 -> 15623 (-0.53%) instructions in affected programs: 3906 -> 3822 (-2.15%) helped: 47 HURT: 18 helped stats (abs) min: 1 max: 9 x̄: 3.09 x̃: 2 helped stats (rel) min: 1.49% max: 23.53% x̄: 8.20% x̃: 6.45% HURT stats (abs) min: 1 max: 7 x̄: 3.39 x̃: 3 HURT stats (rel) min: 0.78% max: 20.59% x̄: 10.45% x̃: 10.97% 95% mean confidence interval for instructions value: -2.18 -0.41 95% mean confidence interval for instructions %-change: -5.70% -0.38% Instructions are helped. total spills in shared programs: 146 -> 136 (-6.85%) spills in affected programs: 39 -> 29 (-25.64%) helped: 6 HURT: 0 total fills in shared programs: 617 -> 598 (-3.08%) fills in affected programs: 125 -> 106 (-15.20%) helped: 6 HURT: 0 HURT shaders are vertex shaders where we may need more instructions for non-packed vec3s. It's acceptable trade-off since we don't get precision downgrade if this varying is coordinates for a sampler. Reviewed-by: Erico Nunes <[email protected]> Signed-off-by: Vasily Khoruzhick <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13151> --- src/gallium/drivers/lima/lima_screen.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index a68ef81876d..baa1d6be472 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -161,6 +161,13 @@ lima_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: return 1; + /* Mali4x0 PP doesn't have a swizzle for load_input, so use POT-aligned + * varyings to avoid unnecessary movs for vec3 and precision downgrade + * in case if this vec3 is coordinates for a sampler + */ + case PIPE_CAP_PREFER_POT_ALIGNED_VARYINGS: + return 1; + default: return u_pipe_screen_get_param_defaults(pscreen, param); }
