Skip to content

Commit 1432066

Browse files
author
devsh
committed
fix passing QueryOnly for the triangle version of getVkASGeometryFrom
start some light validation code in `ILogicalDevice::getAccelerationStructureBuildSizes` for BLASes
1 parent d3ff417 commit 1432066

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

include/nbl/video/ILogicalDevice.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,14 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
455455
uint32_t primsFree = limits.maxAccelerationStructurePrimitiveCount;
456456
for (auto i=0u; i<geometries.size(); i++)
457457
{
458+
if constexpr (std::is_same_v<IGPUBottomLevelAccelerationStructure::Triangles<const Geometry::buffer_t>,Geometry>)
459+
{
460+
// TODO: do we check `maxVertex`, `vertexStride` and `indexType` for validity?
461+
}
462+
if constexpr (std::is_same_v<IGPUBottomLevelAccelerationStructure::AABBs<const Geometry::buffer_t>,Geometry>)
463+
{
464+
// TODO: check stride and geometry flags for validity?
465+
}
458466
if (pMaxPrimitiveCounts[i] > primsFree)
459467
{
460468
NBL_LOG_ERROR("Primitive count exceeds device limit");

src/nbl/video/CVulkanAccelerationStructure.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void getVkASGeometryFrom(const IGPUBottomLevelAccelerationStructure::Triangles<c
134134
if (!triangles.hasTransform())
135135
outBase.geometry.triangles.transformData = NullAddress;
136136
else if (QueryOnly)
137-
outBase.geometry.triangles.transformData = DummyNonNullAddress;
137+
outBase.geometry.triangles.transformData = QueryOnly ? DummyNonNullAddress:getVkDeviceOrHostAddress<const BufferType>(triangles.transform);
138138
else
139139
{
140140
if constexpr (triangles.Host)
@@ -147,7 +147,7 @@ void getVkASGeometryFrom(const IGPUBottomLevelAccelerationStructure::Triangles<c
147147
template<Buffer BufferType, bool QueryOnly=false>
148148
void getVkASGeometryFrom(const IGPUBottomLevelAccelerationStructure::Triangles<const BufferType>& triangles, VkAccelerationStructureGeometryKHR& outBase, VkAccelerationStructureGeometryMotionTrianglesDataNV* &p_vertexMotion)
149149
{
150-
getVkASGeometryFrom<const BufferType>(triangles,outBase);
150+
getVkASGeometryFrom<const BufferType,QueryOnly>(triangles,outBase);
151151
if (triangles.vertexData[1].buffer)
152152
{
153153
p_vertexMotion->sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV;

0 commit comments

Comments
 (0)