From 4b28ed0d7b24ca3e4e123dfbd575e0918da2fcaf Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 4 May 2021 11:56:24 -0400 Subject: [PATCH] lavapipe: handle buffer sizes better in CmdBindTransformFeedbackBuffersEXT according to spec, the pSizes array member is only used if the array is non-null and the value is not VK_WHOLE_SIZE, otherwise this value is calculated based on the buffer size - the offset Reviewed-by: Dave Airlie Part-of: --- src/gallium/frontends/lavapipe/lvp_cmd_buffer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c b/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c index 1b2744a381c..aac580fc443 100644 --- a/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c +++ b/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c @@ -1681,7 +1681,10 @@ VKAPI_ATTR void VKAPI_CALL lvp_CmdBindTransformFeedbackBuffersEXT( for (unsigned i = 0; i < bindingCount; i++) { cmd->u.bind_transform_feedback_buffers.buffers[i] = lvp_buffer_from_handle(pBuffers[i]); cmd->u.bind_transform_feedback_buffers.offsets[i] = pOffsets[i]; - cmd->u.bind_transform_feedback_buffers.sizes[i] = pSizes[i]; + if (pSizes && pSizes[i] != VK_WHOLE_SIZE) + cmd->u.bind_transform_feedback_buffers.sizes[i] = pSizes[i]; + else + cmd->u.bind_transform_feedback_buffers.sizes[i] = cmd->u.bind_transform_feedback_buffers.buffers[i]->size - pOffsets[i]; } cmd_buf_queue(cmd_buffer, cmd); }