From 5badd0d1018bcde41aefafafeefdfdb235e375ad Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Tue, 11 Mar 2025 04:54:27 +0000 Subject: [PATCH] venus: sync protocol for accel struct indirect build encoding fix ppMaxPrimitiveCounts also requires the same nested dynamic array special treatment. Fixes: 6bac77b75c5 ("venus: sync protocol for ray tracing support") Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/venus-protocol/vn_protocol_driver.h | 2 +- .../venus-protocol/vn_protocol_driver_command_buffer.h | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/virtio/venus-protocol/vn_protocol_driver.h b/src/virtio/venus-protocol/vn_protocol_driver.h index de3e1cbc22f..060dd9d8a47 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver.h +++ b/src/virtio/venus-protocol/vn_protocol_driver.h @@ -1,4 +1,4 @@ -/* This file is generated by venus-protocol git-93f2cb1d. */ +/* This file is generated by venus-protocol git-3800cbae. */ /* * Copyright 2020 Google LLC diff --git a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h index baf143af80d..40e55ecf47b 100644 --- a/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h +++ b/src/virtio/venus-protocol/vn_protocol_driver_command_buffer.h @@ -8237,7 +8237,10 @@ static inline size_t vn_sizeof_vkCmdBuildAccelerationStructuresIndirectKHR(VkCom } if (ppMaxPrimitiveCounts) { cmd_size += vn_sizeof_array_size(infoCount); - cmd_size += vn_sizeof_uint32_t_array(*ppMaxPrimitiveCounts, infoCount); + for (uint32_t i = 0; i < infoCount; i++) { + cmd_size += vn_sizeof_array_size((pInfos ? pInfos[i].geometryCount : 0)); + cmd_size += vn_sizeof_uint32_t_array(ppMaxPrimitiveCounts[i], (pInfos ? pInfos[i].geometryCount : 0)); + } } else { cmd_size += vn_sizeof_array_size(0); } @@ -8275,7 +8278,10 @@ static inline void vn_encode_vkCmdBuildAccelerationStructuresIndirectKHR(struct } if (ppMaxPrimitiveCounts) { vn_encode_array_size(enc, infoCount); - vn_encode_uint32_t_array(enc, *ppMaxPrimitiveCounts, infoCount); + for (uint32_t i = 0; i < infoCount; i++) { + vn_encode_array_size(enc, (pInfos ? pInfos[i].geometryCount : 0)); + vn_encode_uint32_t_array(enc, ppMaxPrimitiveCounts[i], (pInfos ? pInfos[i].geometryCount : 0)); + } } else { vn_encode_array_size(enc, 0); }