Ver código fonte

More RT fixes

Panagiotis Christopoulos Charitos 5 anos atrás
pai
commit
19d1219152

+ 3 - 1
src/anki/gr/vulkan/AccelerationStructureImpl.cpp

@@ -143,6 +143,8 @@ Error AccelerationStructureImpl::init(const AccelerationStructureInitInfo& inf)
 		ANKI_ASSERT(m_bottomLevelInfo.m_gpuAddress);
 	}
 
+	initBuildInfo();
+
 	return Error::NONE;
 }
 
@@ -172,7 +174,7 @@ void AccelerationStructureImpl::initBuildInfo()
 		{
 			BufferInitInfo buffInit("RT_instances");
 			buffInit.m_size = sizeof(VkAccelerationStructureInstanceKHR) * instanceCount;
-			buffInit.m_usage = BufferImpl::ACCELERATION_STRUCTURE_BUILD_SCRATCH_USAGE;
+			buffInit.m_usage = InternalBufferUsageBit::ACCELERATION_STRUCTURE_BUILD_SCRATCH;
 			buffInit.m_access = BufferMapAccessBit::WRITE;
 			m_topLevelInfo.m_instancesBuff = getManager().newBuffer(buffInit);
 		}

+ 0 - 2
src/anki/gr/vulkan/BufferImpl.h

@@ -19,8 +19,6 @@ namespace anki
 class BufferImpl final : public Buffer, public VulkanObject<Buffer, BufferImpl>
 {
 public:
-	static constexpr BufferUsageBit ACCELERATION_STRUCTURE_BUILD_SCRATCH_USAGE = BufferUsageBit(1ull << 63ull);
-
 	BufferImpl(GrManager* manager, CString name)
 		: Buffer(manager, name)
 	{

+ 1 - 1
src/anki/gr/vulkan/CommandBufferImpl.cpp

@@ -789,7 +789,7 @@ void CommandBufferImpl::buildAccelerationStructureInternal(AccelerationStructure
 
 	// Create the scrach buffer
 	BufferInitInfo bufferInit;
-	bufferInit.m_usage = BufferImpl::ACCELERATION_STRUCTURE_BUILD_SCRATCH_USAGE;
+	bufferInit.m_usage = InternalBufferUsageBit::ACCELERATION_STRUCTURE_BUILD_SCRATCH;
 	bufferInit.m_size = asImpl.getBuildScratchBufferSize();
 	BufferPtr scratchBuff = getManager().newBuffer(bufferInit);
 

+ 5 - 0
src/anki/gr/vulkan/Common.cpp

@@ -311,6 +311,11 @@ VkBufferUsageFlags convertBufferUsageBit(BufferUsageBit usageMask)
 		out |= VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR;
 	}
 
+	if(!!(usageMask & InternalBufferUsageBit::ACCELERATION_STRUCTURE_BUILD_SCRATCH))
+	{
+		out |= VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR;
+	}
+
 	ANKI_ASSERT(out);
 
 	return out;

+ 7 - 0
src/anki/gr/vulkan/Common.h

@@ -79,6 +79,13 @@ const F32 DESCRIPTOR_POOL_SIZE_SCALE = 2.0;
 const U DESCRIPTOR_FRAME_BUFFERING = 60 * 5; ///< How many frames worth of descriptors to buffer.
 /// @}
 
+/// Some internal buffer usage flags.
+class InternalBufferUsageBit
+{
+public:
+	static constexpr BufferUsageBit ACCELERATION_STRUCTURE_BUILD_SCRATCH = BufferUsageBit(1ull << 63ull);
+};
+
 /// Check if a vulkan function failed. It will abort on failure.
 #define ANKI_VK_CHECKF(x) \
 	do \