Module: Mesa
Branch: main
Commit: fab508da3809d09987764b39d8e4c0b988d1e1cb
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fab508da3809d09987764b39d8e4c0b988d1e1cb

Author: Dave Airlie <airl...@redhat.com>
Date:   Tue Dec  5 17:51:10 2023 +1000

nvk/xfb: set correct counter buffer for writing stream out counters.

nvc0 does nvc0_hw_query_get(push, q, 0x00, 0x0d005002 | (q->index << 5));
which corresponds to sub report.

Just noticed in code review, don't know of any tests that will notice yet.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26513>

---

 src/nouveau/vulkan/nvk_cmd_draw.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c 
b/src/nouveau/vulkan/nvk_cmd_draw.c
index dc81bd9bcd8..a5fa8109d33 100644
--- a/src/nouveau/vulkan/nvk_cmd_draw.c
+++ b/src/nouveau/vulkan/nvk_cmd_draw.c
@@ -2705,6 +2705,8 @@ nvk_CmdEndTransformFeedbackEXT(VkCommandBuffer 
commandBuffer,
          continue;
 
       VK_FROM_HANDLE(nvk_buffer, buffer, pCounterBuffers[i]);
+      // index of counter buffer corresponts to index of transform buffer
+      uint32_t cb_idx = firstCounterBuffer + i;
       uint64_t offset = pCounterBufferOffsets ? pCounterBufferOffsets[i] : 0;
       uint64_t cb_addr = nvk_buffer_address(buffer, offset);
 
@@ -2716,6 +2718,7 @@ nvk_CmdEndTransformFeedbackEXT(VkCommandBuffer 
commandBuffer,
          .operation = OPERATION_REPORT_ONLY,
          .pipeline_location = PIPELINE_LOCATION_STREAMING_OUTPUT,
          .report = REPORT_STREAMING_BYTE_COUNT,
+         .sub_report = cb_idx,
          .structure_size = STRUCTURE_SIZE_ONE_WORD,
       });
    }

Reply via email to