Skip to content

Commit 340cb75

Browse files
author
devsh
committed
the implementation of IGPUCommandBuffer::empty() was completely and utterly broken
1 parent 5c519d0 commit 340cb75

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

include/nbl/video/IGPUCommandBuffer.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class NBL_API2 IGPUCommandBuffer : public IBackendObject
9393
case STATE::EXECUTABLE:
9494
[[fallthrough]];
9595
case STATE::PENDING:
96-
if (m_noCommands)
96+
if (!m_noCommands)
9797
return false;
9898
[[fallthrough]];
9999
default:
@@ -261,13 +261,21 @@ class NBL_API2 IGPUCommandBuffer : public IBackendObject
261261
inline bool buildAccelerationStructures(const std::span<const IGPUBottomLevelAccelerationStructure::DeviceBuildInfo> infos, const IGPUBottomLevelAccelerationStructure::DirectBuildRangeRangeInfos buildRangeInfos)
262262
{
263263
if (const auto totalGeometryCount=buildAccelerationStructures_common(infos,buildRangeInfos); totalGeometryCount)
264-
return buildAccelerationStructures_impl(infos,buildRangeInfos,totalGeometryCount);
264+
if (buildAccelerationStructures_impl(infos,buildRangeInfos,totalGeometryCount))
265+
{
266+
m_noCommands = false;
267+
return true;
268+
}
265269
return false;
266270
}
267271
inline bool buildAccelerationStructures(const std::span<const IGPUTopLevelAccelerationStructure::DeviceBuildInfo> infos, const IGPUTopLevelAccelerationStructure::DirectBuildRangeRangeInfos buildRangeInfos)
268272
{
269273
if (buildAccelerationStructures_common(infos,buildRangeInfos))
270-
return buildAccelerationStructures_impl(infos,buildRangeInfos);
274+
if (buildAccelerationStructures_impl(infos,buildRangeInfos))
275+
{
276+
m_noCommands = false;
277+
return true;
278+
}
271279
return false;
272280
}
273281
// We don't allow different indirect command addresses due to https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646
@@ -300,10 +308,14 @@ class NBL_API2 IGPUCommandBuffer : public IBackendObject
300308

301309
if (const auto totalGeometryCount=buildAccelerationStructures_common(infos,maxPrimitiveOrInstanceCounts,indirectRangeBuffer); totalGeometryCount)
302310
{
311+
bool success;
303312
if constexpr(std::is_same_v<AccelerationStructure,IGPUBottomLevelAccelerationStructure>)
304-
return buildAccelerationStructuresIndirect_impl(indirectRangeBuffer,infos,pIndirectOffsets,pIndirectStrides,maxPrimitiveOrInstanceCounts,totalGeometryCount);
313+
success = buildAccelerationStructuresIndirect_impl(indirectRangeBuffer,infos,pIndirectOffsets,pIndirectStrides,maxPrimitiveOrInstanceCounts,totalGeometryCount);
305314
else
306-
return buildAccelerationStructuresIndirect_impl(indirectRangeBuffer,infos,pIndirectOffsets,pIndirectStrides,maxPrimitiveOrInstanceCounts);
315+
success = buildAccelerationStructuresIndirect_impl(indirectRangeBuffer,infos,pIndirectOffsets,pIndirectStrides,maxPrimitiveOrInstanceCounts);
316+
if (success)
317+
m_noCommands = false;
318+
return success;
307319
}
308320
return false;
309321
}

0 commit comments

Comments
 (0)