From d467ff7b0e3f213325acdfa56daacc02eb82a16d Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 1 Nov 2022 09:11:17 +0100 Subject: [PATCH] radv: set the correct buffer size for NGG streamout If the size is passed through CmdBindTransformFeedback() uses that. This partially fixes dEQP-VK.transform_feedback.simple.multiquery_1 by reporting the correct number of primitives written (the computation is based on the buffer size). There is still a bug around GDS offsets that will be fixed later. Tested on GFX10.3 by forcing NGG streamout. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 52943114b11..ab72186155e 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -4118,12 +4118,11 @@ radv_flush_streamout_descriptors(struct radv_cmd_buffer *cmd_buffer) */ uint32_t size = 0xffffffff; - /* Compute the correct buffer size for NGG streamout - * because it's used to determine the max emit per - * buffer. + /* Set the correct buffer size for NGG streamout because it's used to determine the max + * emit per buffer. */ if (cmd_buffer->device->physical_device->use_ngg_streamout) - size = buffer->vk.size - sb[i].offset; + size = sb[i].size; uint32_t rsrc_word3 = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |