From bb2f97eb272a68fce582cebf78c53987024356af Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Fri, 6 May 2022 11:44:31 +1000 Subject: [PATCH] lima: switch to NIR loop unrolling Reviewed-by: Emma Anholt Part-of: --- src/gallium/drivers/lima/ci/lima-fails.txt | 2 -- src/gallium/drivers/lima/lima_program.c | 2 ++ src/gallium/drivers/lima/lima_screen.c | 6 ++---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/lima/ci/lima-fails.txt b/src/gallium/drivers/lima/ci/lima-fails.txt index 8cc9dffab87..d61d5e9c6df 100644 --- a/src/gallium/drivers/lima/ci/lima-fails.txt +++ b/src/gallium/drivers/lima/ci/lima-fails.txt @@ -455,8 +455,6 @@ spec@glsl-1.10@execution@variable-indexing@vs-varying-mat4-row-wr,Fail spec@glsl-1.10@execution@variable-indexing@vs-varying-mat4-wr,Fail spec@glsl-1.10@glsl-fs-discard-only,Fail spec@glsl-1.10@linker@glsl-link-varyings-3,Fail -spec@glsl-1.20@execution@array_bounds@glsl-array-bounds-03,Fail -spec@glsl-1.20@execution@array_bounds@glsl-array-bounds-07,Fail spec@glsl-1.20@execution@built-in-functions@fs-op-assign-div-mat2x4-mat2x4,Fail spec@glsl-1.20@execution@built-in-functions@fs-op-assign-div-mat3x2-mat3x2,Fail spec@glsl-1.20@execution@built-in-functions@fs-op-assign-div-mat3x4-mat3x4,Fail diff --git a/src/gallium/drivers/lima/lima_program.c b/src/gallium/drivers/lima/lima_program.c index d971f01b35f..4a975f726fb 100644 --- a/src/gallium/drivers/lima/lima_program.c +++ b/src/gallium/drivers/lima/lima_program.c @@ -64,6 +64,7 @@ static const nir_shader_compiler_options vs_nir_options = { .force_indirect_unrolling = nir_var_all, .force_indirect_unrolling_sampler = true, .lower_varying_from_uniform = true, + .max_unroll_iterations = 32, }; static const nir_shader_compiler_options fs_nir_options = { @@ -86,6 +87,7 @@ static const nir_shader_compiler_options fs_nir_options = { .force_indirect_unrolling = (nir_var_shader_out | nir_var_function_temp), .force_indirect_unrolling_sampler = true, .lower_varying_from_uniform = true, + .max_unroll_iterations = 32, }; const void * diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index 46db45bb74e..0ac69411c36 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -239,7 +239,7 @@ get_vertex_shader_param(struct lima_screen *screen, return 256; /* need investigate */ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: - return 32; + return 0; default: return 0; @@ -289,10 +289,8 @@ get_fragment_shader_param(struct lima_screen *screen, case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: - return 0; - case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: - return 32; + return 0; default: return 0;