diff --git a/src/amd/vulkan/radv_meta.c b/src/amd/vulkan/radv_meta.c index 557535f1262..d45e812b75c 100644 --- a/src/amd/vulkan/radv_meta.c +++ b/src/amd/vulkan/radv_meta.c @@ -707,3 +707,16 @@ get_global_ids(nir_builder *b, unsigned num_components) return nir_iadd(b, nir_imul(b, block_ids, block_size), local_ids); } + +void +radv_break_on_count(nir_builder *b, nir_variable *var, nir_ssa_def *count) +{ + nir_ssa_def *counter = nir_load_var(b, var); + + nir_push_if(b, nir_uge(b, counter, count)); + nir_jump(b, nir_jump_break); + nir_pop_if(b, NULL); + + counter = nir_iadd(b, counter, nir_imm_int(b, 1)); + nir_store_var(b, var, counter, 0x1); +} diff --git a/src/amd/vulkan/radv_meta.h b/src/amd/vulkan/radv_meta.h index cfc5a5faff1..efba51a4ecd 100644 --- a/src/amd/vulkan/radv_meta.h +++ b/src/amd/vulkan/radv_meta.h @@ -293,6 +293,8 @@ nir_ssa_def *radv_meta_load_descriptor(nir_builder *b, unsigned desc_set, unsign nir_ssa_def *get_global_ids(nir_builder *b, unsigned num_components); +void radv_break_on_count(nir_builder *b, nir_variable *var, nir_ssa_def *count); + #ifdef __cplusplus } #endif diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index aee8089b691..420a821476f 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -55,19 +55,6 @@ nir_test_flag(nir_builder *b, nir_ssa_def *flags, uint32_t flag) return nir_i2b(b, nir_iand(b, flags, nir_imm_int(b, flag))); } -static void -radv_break_on_count(nir_builder *b, nir_variable *var, nir_ssa_def *count) -{ - nir_ssa_def *counter = nir_load_var(b, var); - - nir_push_if(b, nir_uge(b, counter, count)); - nir_jump(b, nir_jump_break); - nir_pop_if(b, NULL); - - counter = nir_iadd(b, counter, nir_imm_int(b, 1)); - nir_store_var(b, var, counter, 0x1); -} - static void radv_store_availability(nir_builder *b, nir_ssa_def *flags, nir_ssa_def *dst_buf, nir_ssa_def *offset, nir_ssa_def *value32)