Module: Mesa
Branch: staging/23.3
Commit: 18397e51adc40a814e945181196c4b5d94f5bb51
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=18397e51adc40a814e945181196c4b5d94f5bb51

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Mon Oct 30 12:50:56 2023 +0100

radv: fix compute shader invocations query on compute queue on GFX6

Looks like GFX6 always writes the number of compute shader invocations
at offset 0 when used on compute queue.

This fixes dEQP-VK.query_pool.statistics_query.*_cq on GFX6.

Fixes: a9945216ba2 ("radv: fix COMPUTE_SHADER_INVOCATIONS query on compute 
queue")
Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25957>
(cherry picked from commit 9a0a77cb53d0d31c7a090d06ac905d69e9c1131c)

---

 .pick_status.json           | 2 +-
 src/amd/vulkan/radv_query.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index a81f38714e5..757fb016ad9 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -74,7 +74,7 @@
         "description": "radv: fix compute shader invocations query on compute 
queue on GFX6",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "a9945216ba223d57ade453d5f855edd93dd3b200",
         "notes": null
diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c
index 7e43604c8bc..02339b508be 100644
--- a/src/amd/vulkan/radv_query.c
+++ b/src/amd/vulkan/radv_query.c
@@ -1755,7 +1755,7 @@ emit_begin_query(struct radv_cmd_buffer *cmd_buffer, 
struct radv_query_pool *poo
 
       radv_update_hw_pipelinestat(cmd_buffer);
 
-      if (cmd_buffer->qf == RADV_QUEUE_COMPUTE) {
+      if (radv_cmd_buffer_uses_mec(cmd_buffer)) {
          uint32_t cs_invoc_offset =
             
radv_get_pipelinestat_query_offset(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT);
          va += cs_invoc_offset;
@@ -1916,7 +1916,7 @@ emit_end_query(struct radv_cmd_buffer *cmd_buffer, struct 
radv_query_pool *pool,
 
       va += pipelinestat_block_size;
 
-      if (cmd_buffer->qf == RADV_QUEUE_COMPUTE) {
+      if (radv_cmd_buffer_uses_mec(cmd_buffer)) {
          uint32_t cs_invoc_offset =
             
radv_get_pipelinestat_query_offset(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT);
          va += cs_invoc_offset;

Reply via email to