summaryrefslogtreecommitdiffstats
path: root/Graphics
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-11-07 04:25:14 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-11-07 04:25:14 +0000
commit44bf7cf539949a6f26862201729fce5000b493f0 (patch)
tree9e4f57e060ad1fcfd03130e59fc9d9d74be9f737 /Graphics
parentRemoved no longer used vulkan libraries on Linux (diff)
downloadDiligentCore-44bf7cf539949a6f26862201729fce5000b493f0.tar.gz
DiligentCore-44bf7cf539949a6f26862201729fce5000b493f0.zip
Few minor updates to TLAS and BLAS implementations
Diffstat (limited to 'Graphics')
-rw-r--r--Graphics/GraphicsEngine/include/BottomLevelASBase.hpp8
-rw-r--r--Graphics/GraphicsEngine/include/TopLevelASBase.hpp8
-rw-r--r--Graphics/GraphicsEngineD3D12/include/BottomLevelASD3D12Impl.hpp8
-rw-r--r--Graphics/GraphicsEngineD3D12/include/TopLevelASD3D12Impl.hpp7
-rw-r--r--Graphics/GraphicsEngineD3D12/src/BottomLevelASD3D12Impl.cpp20
-rw-r--r--Graphics/GraphicsEngineD3D12/src/TopLevelASD3D12Impl.cpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp6
-rw-r--r--Graphics/GraphicsEngineVulkan/src/BottomLevelASVkImpl.cpp10
9 files changed, 32 insertions, 43 deletions
diff --git a/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp b/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp
index 3ec0efd2..caee8620 100644
--- a/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp
+++ b/Graphics/GraphicsEngine/include/BottomLevelASBase.hpp
@@ -117,6 +117,12 @@ public:
return this->m_State;
}
+ /// Implementation of IBottomLevelAS::GetScratchBufferSizes()
+ virtual ScratchBufferSizes DILIGENT_CALL_TYPE GetScratchBufferSizes() const override
+ {
+ return this->m_ScratchSize;
+ }
+
bool IsInKnownState() const
{
return this->m_State != RESOURCE_STATE_UNKNOWN;
@@ -192,6 +198,8 @@ protected:
void* m_pRawPtr = nullptr;
+ ScratchBufferSizes m_ScratchSize;
+
#ifdef DILIGENT_DEVELOPMENT
std::atomic<Uint32> m_Version{0};
#endif
diff --git a/Graphics/GraphicsEngine/include/TopLevelASBase.hpp b/Graphics/GraphicsEngine/include/TopLevelASBase.hpp
index 83205cd2..efba30c7 100644
--- a/Graphics/GraphicsEngine/include/TopLevelASBase.hpp
+++ b/Graphics/GraphicsEngine/include/TopLevelASBase.hpp
@@ -185,6 +185,12 @@ public:
return this->m_State;
}
+ /// Implementation of ITopLevelAS::GetScratchBufferSizes().
+ virtual ScratchBufferSizes DILIGENT_CALL_TYPE GetScratchBufferSizes() const override
+ {
+ return m_ScratchSize;
+ }
+
bool IsInKnownState() const
{
return this->m_State != RESOURCE_STATE_UNKNOWN;
@@ -248,6 +254,8 @@ protected:
RESOURCE_STATE m_State = RESOURCE_STATE_UNKNOWN;
Uint32 m_HitShadersPerInstance = 0;
+ ScratchBufferSizes m_ScratchSize;
+
StringPool m_StringPool;
struct InstanceDesc
diff --git a/Graphics/GraphicsEngineD3D12/include/BottomLevelASD3D12Impl.hpp b/Graphics/GraphicsEngineD3D12/include/BottomLevelASD3D12Impl.hpp
index b631bdcc..c16d8473 100644
--- a/Graphics/GraphicsEngineD3D12/include/BottomLevelASD3D12Impl.hpp
+++ b/Graphics/GraphicsEngineD3D12/include/BottomLevelASD3D12Impl.hpp
@@ -51,10 +51,7 @@ public:
bool bIsDeviceInternal = false);
~BottomLevelASD3D12Impl();
- virtual void DILIGENT_CALL_TYPE QueryInterface(const INTERFACE_ID& IID, IObject** ppInterface) override final;
-
- /// Implementation of IBottomLevelAS::GetScratchBufferSizes() in DirectX 12 backend.
- virtual ScratchBufferSizes DILIGENT_CALL_TYPE GetScratchBufferSizes() const override { return m_ScratchSize; }
+ IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_BottomLevelASD3D12, TBottomLevelASBase);
/// Implementation of IBottomLevelASD3D12::GetD3D12BLAS().
virtual ID3D12Resource* DILIGENT_CALL_TYPE GetD3D12BLAS() override final { return GetD3D12Resource(); }
@@ -66,9 +63,6 @@ public:
{
return GetD3D12Resource()->GetGPUVirtualAddress();
}
-
-private:
- ScratchBufferSizes m_ScratchSize;
};
} // namespace Diligent
diff --git a/Graphics/GraphicsEngineD3D12/include/TopLevelASD3D12Impl.hpp b/Graphics/GraphicsEngineD3D12/include/TopLevelASD3D12Impl.hpp
index c61ab368..3fa15e5e 100644
--- a/Graphics/GraphicsEngineD3D12/include/TopLevelASD3D12Impl.hpp
+++ b/Graphics/GraphicsEngineD3D12/include/TopLevelASD3D12Impl.hpp
@@ -52,10 +52,7 @@ public:
bool bIsDeviceInternal = false);
~TopLevelASD3D12Impl();
- virtual void DILIGENT_CALL_TYPE QueryInterface(const INTERFACE_ID& IID, IObject** ppInterface) override final;
-
- /// Implementation of ITopLevelASD3D12::GetScratchBufferSizes() in DirectX 12 backend.
- virtual ScratchBufferSizes DILIGENT_CALL_TYPE GetScratchBufferSizes() const override { return m_ScratchSize; }
+ IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_TopLevelASD3D12, TTopLevelASBase);
/// Implementation of ITopLevelASD3D12D3D12::GetD3D12TLAS().
virtual ID3D12Resource* DILIGENT_CALL_TYPE GetD3D12TLAS() override final { return GetD3D12Resource(); }
@@ -75,8 +72,6 @@ public:
}
private:
- ScratchBufferSizes m_ScratchSize;
-
// Allocation in a CPU-only descriptor heap
DescriptorHeapAllocation m_DescriptorHandle;
};
diff --git a/Graphics/GraphicsEngineD3D12/src/BottomLevelASD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/BottomLevelASD3D12Impl.cpp
index 1fc9f876..02e45b0e 100644
--- a/Graphics/GraphicsEngineD3D12/src/BottomLevelASD3D12Impl.cpp
+++ b/Graphics/GraphicsEngineD3D12/src/BottomLevelASD3D12Impl.cpp
@@ -28,11 +28,9 @@
#include "pch.h"
#include "BottomLevelASD3D12Impl.hpp"
#include "RenderDeviceD3D12Impl.hpp"
-#include "DeviceContextD3D12Impl.hpp"
#include "D3D12TypeConversions.hpp"
#include "GraphicsAccessories.hpp"
#include "DXGITypeConversions.hpp"
-#include "EngineMemory.h"
#include "StringTools.hpp"
namespace Diligent
@@ -55,16 +53,16 @@ BottomLevelASD3D12Impl::BottomLevelASD3D12Impl(IReferenceCounters* pRef
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO d3d12BottomLevelPrebuildInfo = {};
D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS d3d12BottomLevelInputs = {};
- std::vector<D3D12_RAYTRACING_GEOMETRY_DESC> Geometries;
+ std::vector<D3D12_RAYTRACING_GEOMETRY_DESC> d3d12Geometries;
if (m_Desc.pTriangles != nullptr)
{
- Geometries.resize(m_Desc.TriangleCount);
+ d3d12Geometries.resize(m_Desc.TriangleCount);
Uint32 MaxPrimitiveCount = 0;
for (uint32_t i = 0; i < m_Desc.TriangleCount; ++i)
{
auto& src = m_Desc.pTriangles[i];
- auto& dst = Geometries[i];
+ auto& dst = d3d12Geometries[i];
dst.Type = D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES;
dst.Flags = D3D12_RAYTRACING_GEOMETRY_FLAG_NONE;
@@ -83,12 +81,12 @@ BottomLevelASD3D12Impl::BottomLevelASD3D12Impl(IReferenceCounters* pRef
}
else if (m_Desc.pBoxes != nullptr)
{
- Geometries.resize(m_Desc.BoxCount);
+ d3d12Geometries.resize(m_Desc.BoxCount);
Uint32 MaxBoxCount = 0;
for (uint32_t i = 0; i < m_Desc.BoxCount; ++i)
{
auto& src = m_Desc.pBoxes[i];
- auto& dst = Geometries[i];
+ auto& dst = d3d12Geometries[i];
dst.Type = D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS;
dst.Flags = D3D12_RAYTRACING_GEOMETRY_FLAG_NONE;
@@ -105,13 +103,13 @@ BottomLevelASD3D12Impl::BottomLevelASD3D12Impl(IReferenceCounters* pRef
UNEXPECTED("Either pTriangles or pBoxes must not be null");
}
- VERIFY_EXPR(Geometries.size() <= D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE);
+ VERIFY_EXPR(d3d12Geometries.size() <= D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE);
d3d12BottomLevelInputs.Type = D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL;
d3d12BottomLevelInputs.Flags = BuildASFlagsToD3D12ASBuildFlags(m_Desc.Flags);
d3d12BottomLevelInputs.DescsLayout = D3D12_ELEMENTS_LAYOUT_ARRAY;
- d3d12BottomLevelInputs.pGeometryDescs = Geometries.data();
- d3d12BottomLevelInputs.NumDescs = static_cast<UINT>(Geometries.size());
+ d3d12BottomLevelInputs.pGeometryDescs = d3d12Geometries.data();
+ d3d12BottomLevelInputs.NumDescs = static_cast<UINT>(d3d12Geometries.size());
pd3d12Device->GetRaytracingAccelerationStructurePrebuildInfo(&d3d12BottomLevelInputs, &d3d12BottomLevelPrebuildInfo);
if (d3d12BottomLevelPrebuildInfo.ResultDataMaxSizeInBytes == 0)
@@ -165,6 +163,4 @@ BottomLevelASD3D12Impl::~BottomLevelASD3D12Impl()
pDeviceD3D12Impl->SafeReleaseDeviceObject(std::move(m_pd3d12Resource), m_Desc.CommandQueueMask);
}
-IMPLEMENT_QUERY_INTERFACE(BottomLevelASD3D12Impl, IID_BottomLevelASD3D12, TBottomLevelASBase)
-
} // namespace Diligent
diff --git a/Graphics/GraphicsEngineD3D12/src/TopLevelASD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/TopLevelASD3D12Impl.cpp
index ad26155a..51dadde1 100644
--- a/Graphics/GraphicsEngineD3D12/src/TopLevelASD3D12Impl.cpp
+++ b/Graphics/GraphicsEngineD3D12/src/TopLevelASD3D12Impl.cpp
@@ -28,11 +28,9 @@
#include "pch.h"
#include "TopLevelASD3D12Impl.hpp"
#include "RenderDeviceD3D12Impl.hpp"
-#include "DeviceContextD3D12Impl.hpp"
#include "D3D12TypeConversions.hpp"
#include "GraphicsAccessories.hpp"
#include "DXGITypeConversions.hpp"
-#include "EngineMemory.h"
#include "StringTools.hpp"
namespace Diligent
@@ -124,6 +122,4 @@ TopLevelASD3D12Impl::~TopLevelASD3D12Impl()
pDeviceD3D12Impl->SafeReleaseDeviceObject(std::move(m_pd3d12Resource), m_Desc.CommandQueueMask);
}
-IMPLEMENT_QUERY_INTERFACE(TopLevelASD3D12Impl, IID_TopLevelASD3D12, TTopLevelASBase)
-
} // namespace Diligent
diff --git a/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp
index e907337d..1a4eb2c1 100644
--- a/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp
@@ -50,9 +50,6 @@ public:
bool bIsDeviceInternal = false);
~BottomLevelASVkImpl();
- /// Implementation of IBottomLevelAS::GetScratchBufferSizes() in Vulkan backend.
- virtual ScratchBufferSizes DILIGENT_CALL_TYPE GetScratchBufferSizes() const override { return m_ScratchSize; }
-
/// Implementation of IBottomLevelAS::GetNativeHandle() in Vulkan backend.
virtual void* DILIGENT_CALL_TYPE GetNativeHandle() override final
{
@@ -73,7 +70,6 @@ private:
VulkanUtilities::AccelStructWrapper m_VulkanBLAS;
VulkanUtilities::VulkanMemoryAllocation m_MemoryAllocation;
VkDeviceSize m_MemoryAlignedOffset = 0;
- ScratchBufferSizes m_ScratchSize;
};
} // namespace Diligent
diff --git a/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp
index 8f2b42ab..b55223df 100644
--- a/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp
@@ -51,8 +51,7 @@ public:
bool bIsDeviceInternal = false);
~TopLevelASVkImpl();
- /// Implementation of ITopLevelAS::GetScratchBufferSizes() in Vulkan backend.
- virtual ScratchBufferSizes DILIGENT_CALL_TYPE GetScratchBufferSizes() const override { return m_ScratchSize; }
+ IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_TopLevelASVk, TTopLevelASBase);
/// Implementation of ITopLevelAS::GetNativeHandle() in Vulkan backend.
virtual void* DILIGENT_CALL_TYPE GetNativeHandle() override final
@@ -64,15 +63,12 @@ public:
/// Implementation of ITopLevelASVk::GetVkTLAS().
virtual VkAccelerationStructureKHR DILIGENT_CALL_TYPE GetVkTLAS() const override { return m_VulkanTLAS; }
- IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_TopLevelASVk, TTopLevelASBase);
-
const VkAccelerationStructureKHR* GetVkTLASPtr() const { return &m_VulkanTLAS; }
private:
VulkanUtilities::AccelStructWrapper m_VulkanTLAS;
VulkanUtilities::VulkanMemoryAllocation m_MemoryAllocation;
VkDeviceSize m_MemoryAlignedOffset = 0;
- ScratchBufferSizes m_ScratchSize;
};
} // namespace Diligent
diff --git a/Graphics/GraphicsEngineVulkan/src/BottomLevelASVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/BottomLevelASVkImpl.cpp
index cc16c9e4..092da523 100644
--- a/Graphics/GraphicsEngineVulkan/src/BottomLevelASVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/BottomLevelASVkImpl.cpp
@@ -43,7 +43,7 @@ BottomLevelASVkImpl::BottomLevelASVkImpl(IReferenceCounters* pRefCounters,
const auto& Limits = PhysicalDevice.GetExtProperties().RayTracing;
VkAccelerationStructureCreateInfoKHR CreateInfo = {};
- std::vector<VkAccelerationStructureCreateGeometryTypeInfoKHR> Geometries;
+ std::vector<VkAccelerationStructureCreateGeometryTypeInfoKHR> vkGeometries;
CreateInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
CreateInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR;
@@ -56,8 +56,8 @@ BottomLevelASVkImpl::BottomLevelASVkImpl(IReferenceCounters* pRefCounters,
else
{
CreateInfo.maxGeometryCount = m_Desc.TriangleCount + m_Desc.BoxCount;
- Geometries.resize(CreateInfo.maxGeometryCount);
- CreateInfo.pGeometryInfos = Geometries.data();
+ vkGeometries.resize(CreateInfo.maxGeometryCount);
+ CreateInfo.pGeometryInfos = vkGeometries.data();
VERIFY_EXPR(CreateInfo.maxGeometryCount <= Limits.maxGeometryCount);
@@ -68,7 +68,7 @@ BottomLevelASVkImpl::BottomLevelASVkImpl(IReferenceCounters* pRefCounters,
for (uint32_t i = 0; i < m_Desc.TriangleCount; ++i)
{
auto& src = m_Desc.pTriangles[i];
- auto& dst = Geometries[i];
+ auto& dst = vkGeometries[i];
dst.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR;
dst.pNext = nullptr;
@@ -89,7 +89,7 @@ BottomLevelASVkImpl::BottomLevelASVkImpl(IReferenceCounters* pRefCounters,
for (uint32_t i = 0; i < m_Desc.BoxCount; ++i)
{
auto& src = m_Desc.pBoxes[i];
- auto& dst = Geometries[i];
+ auto& dst = vkGeometries[i];
dst.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR;
dst.pNext = nullptr;