diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index eb6068b317e..13413e89176 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -416,6 +416,8 @@ lower_baseinstance(nir_shader *shader) return nir_shader_instructions_pass(shader, lower_baseinstance_instr, nir_metadata_dominance, NULL); } +bool nir_lower_dynamic_bo_access(nir_shader *shader); + struct zink_shader * zink_shader_create(struct zink_screen *screen, struct nir_shader *nir, const struct pipe_stream_output_info *so_info) @@ -449,6 +451,8 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir, NIR_PASS_V(nir, lower_discard_if); NIR_PASS_V(nir, nir_lower_fragcolor); NIR_PASS_V(nir, lower_64bit_vertex_attribs); + if (nir->info.num_ubos || nir->info.num_ssbos) + NIR_PASS_V(nir, nir_lower_dynamic_bo_access); NIR_PASS_V(nir, nir_convert_from_ssa, true); if (zink_debug & ZINK_DEBUG_NIR) {