Mesa (main): radv: Ignore transformOffset if transformData is 0
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon May 30 00:21:01 UTC 2022
Module: Mesa
Branch: main
Commit: 8aecb3ed58ce50484e7e4d0e40c46c481eeec0f8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8aecb3ed58ce50484e7e4d0e40c46c481eeec0f8
Author: Konstantin Seurer <konstantin.seurer at gmail.com>
Date: Thu May 26 16:38:56 2022 +0200
radv: Ignore transformOffset if transformData is 0
There is also a hypothetical scenario where
transformData is 0 and transformOffset is not 0
and we end up reading from transformOffset because
transform_addr is not 0.
VkAccelerationStructureBuildRangeInfoKHR spec:
If VkAccelerationStructureGeometryTrianglesDataKHR::transformData is not NULL, a single VkTransformMatrixKHR structure is consumed from VkAccelerationStructureGeometryTrianglesDataKHR::transformData, at an offset of transformOffset. This matrix describes a transformation from the space in which the vertices for all triangles in this geometry are described to the space in which the acceleration structure is defined.
Which I think means, that we should ignore
transformOffset if transformData is NULL.
Signed-off-by: Konstantin Seurer <konstantin.seurer at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16719>
---
src/amd/vulkan/radv_acceleration_structure.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/amd/vulkan/radv_acceleration_structure.c b/src/amd/vulkan/radv_acceleration_structure.c
index 49e004fd995..d69f1e529d3 100644
--- a/src/amd/vulkan/radv_acceleration_structure.c
+++ b/src/amd/vulkan/radv_acceleration_structure.c
@@ -2102,8 +2102,10 @@ radv_CmdBuildAccelerationStructuresKHR(
else
prim_consts.index_addr += ppBuildRangeInfos[i][j].primitiveOffset;
- prim_consts.transform_addr = geom->geometry.triangles.transformData.deviceAddress +
- ppBuildRangeInfos[i][j].transformOffset;
+ prim_consts.transform_addr = geom->geometry.triangles.transformData.deviceAddress;
+ if (prim_consts.transform_addr)
+ prim_consts.transform_addr += ppBuildRangeInfos[i][j].transformOffset;
+
prim_consts.vertex_stride = geom->geometry.triangles.vertexStride;
prim_consts.vertex_format = geom->geometry.triangles.vertexFormat;
prim_consts.index_format = geom->geometry.triangles.indexType;
More information about the mesa-commit
mailing list