From 0376c1930b799d99caae5cd4b49ae26c1771a203 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 19 Sep 2024 13:17:24 -0400 Subject: [PATCH] hk: clean up before lowering bounds checks for next patch Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/vulkan/hk_shader.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/asahi/vulkan/hk_shader.c b/src/asahi/vulkan/hk_shader.c index e9f38d110c0..46a5482f7aa 100644 --- a/src/asahi/vulkan/hk_shader.c +++ b/src/asahi/vulkan/hk_shader.c @@ -616,6 +616,19 @@ hk_lower_nir(struct hk_device *dev, nir_shader *nir, NIR_PASS(_, nir, nir_lower_explicit_io, nir_var_mem_ubo, hk_buffer_addr_format(rs->uniform_buffers)); + /* Before inserting bounds checks, we want to do a fair bit of optimization. + * lower_load_global_constant_offset_instr has special optimizations for + * constant offsets, so we want as many offsets to be constant as possible. + */ + bool progress; + do { + progress = false; + NIR_PASS(progress, nir, nir_opt_constant_folding); + NIR_PASS(progress, nir, nir_opt_algebraic); + NIR_PASS(progress, nir, nir_copy_prop); + NIR_PASS(progress, nir, nir_opt_dce); + } while (progress); + bool soft_fault = agx_has_soft_fault(&dev->dev); NIR_PASS(_, nir, nir_shader_intrinsics_pass, lower_load_global_constant_offset_instr, nir_metadata_none,