diff --git a/src/amd/vulkan/radv_perfcounter.c b/src/amd/vulkan/radv_perfcounter.c index 5d8ad60dc32..d3a84d91c40 100644 --- a/src/amd/vulkan/radv_perfcounter.c +++ b/src/amd/vulkan/radv_perfcounter.c @@ -574,10 +574,10 @@ radv_pc_stop_and_sample(struct radv_cmd_buffer *cmd_buffer, struct radv_pc_query radeon_emit(cs, pred_va); radeon_emit(cs, pred_va >> 32); radeon_emit(cs, 0); /* Cache policy */ - - uint32_t *skip_dwords = cs->buf + cs->cdw; radeon_emit(cs, 0); + uint32_t *skip_dwords = cs->buf + (cs->cdw - 1); + for (unsigned i = 0; i < pool->num_pc_regs;) { enum ac_pc_gpu_block block = G_REG_BLOCK(pool->pc_regs[i]); struct ac_pc_block *ac_block = ac_pc_get_block(&pdev->ac_perfcounters, block); @@ -654,10 +654,10 @@ radv_pc_begin_query(struct radv_cmd_buffer *cmd_buffer, struct radv_pc_query_poo radeon_emit(cs, pred_va); radeon_emit(cs, pred_va >> 32); radeon_emit(cs, 0); /* Cache policy */ - - uint32_t *skip_dwords = cs->buf + cs->cdw; radeon_emit(cs, 0); + uint32_t *skip_dwords = cs->buf + (cs->cdw - 1); + for (unsigned i = 0; i < pool->num_pc_regs;) { enum ac_pc_gpu_block block = G_REG_BLOCK(pool->pc_regs[i]); struct ac_pc_block *ac_block = ac_pc_get_block(&pdev->ac_perfcounters, block);