From a1af7ae96a447c05754af8317c935c4588cb8580 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Wed, 5 Oct 2022 15:14:50 +0200 Subject: [PATCH] etnaviv: slim down etna_shader_key The max number of exposed fragment samplers and views on any hardware is 16, so there is no point in having arrays of 128 entries to track information for the shadow sampler lowering in the shader key. Most of them will never be used. Reduce the size of the arrays to what is actually necessary and add a assert to make sure the sampler (view) limit isn't bumped without a matching change in the shader key. Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_shader.c | 2 ++ src/gallium/drivers/etnaviv/etnaviv_shader.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_shader.c b/src/gallium/drivers/etnaviv/etnaviv_shader.c index 804b7c48253..a1e4a0fe3d5 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_shader.c +++ b/src/gallium/drivers/etnaviv/etnaviv_shader.c @@ -435,6 +435,8 @@ etna_shader_variant(struct etna_shader *shader, struct etna_shader_key key, { struct etna_shader_variant *v; + assert(shader->specs->fragment_sampler_count <= ARRAY_SIZE(key.tex_swizzle)); + for (v = shader->variants; v; v = v->next) if (etna_shader_key_equal(&key, &v->key)) return v; diff --git a/src/gallium/drivers/etnaviv/etnaviv_shader.h b/src/gallium/drivers/etnaviv/etnaviv_shader.h index 58a56b184d7..eaf0c37e0d0 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_shader.h +++ b/src/gallium/drivers/etnaviv/etnaviv_shader.h @@ -59,8 +59,8 @@ struct etna_shader_key }; int num_texture_states; - nir_lower_tex_shadow_swizzle tex_swizzle[PIPE_MAX_SHADER_SAMPLER_VIEWS]; - enum compare_func tex_compare_func[PIPE_MAX_SHADER_SAMPLER_VIEWS]; + nir_lower_tex_shadow_swizzle tex_swizzle[16]; + enum compare_func tex_compare_func[16]; }; static inline bool