summaryrefslogtreecommitdiff
path: root/tools/gfx/debug-layer.h
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-06-30 14:59:18 -0700
committerGitHub <noreply@github.com>2021-06-30 14:59:18 -0700
commita03d21a5f54cba913c3f52e2822a433de8f39fdd (patch)
tree84d24d4355cc4b3e941da9eab57147cd9d297ee4 /tools/gfx/debug-layer.h
parent5395ef82535c283109b1ea6b89b737c5a39bf147 (diff)
[gfx] Add inline ray tracing support. (#1899)
Diffstat (limited to 'tools/gfx/debug-layer.h')
-rw-r--r--tools/gfx/debug-layer.h95
1 files changed, 71 insertions, 24 deletions
diff --git a/tools/gfx/debug-layer.h b/tools/gfx/debug-layer.h
index 6225260dd..8ab1146d0 100644
--- a/tools/gfx/debug-layer.h
+++ b/tools/gfx/debug-layer.h
@@ -23,6 +23,15 @@ public:
Slang::ComPtr<TInterface> baseObject;
};
+template <typename TInterface>
+class UnownedDebugObject
+ : public TInterface
+ , public DebugObjectBase
+{
+public:
+ TInterface* baseObject = nullptr;
+};
+
class DebugDevice : public DebugObject<IDevice>
{
public:
@@ -57,6 +66,12 @@ public:
IBufferResource* buffer,
IResourceView::Desc const& desc,
IResourceView** outView) override;
+ virtual SLANG_NO_THROW Result SLANG_MCALL getAccelerationStructurePrebuildInfo(
+ const IAccelerationStructure::BuildInputs& buildInputs,
+ IAccelerationStructure::PrebuildInfo* outPrebuildInfo) override;
+ virtual SLANG_NO_THROW Result SLANG_MCALL createAccelerationStructure(
+ const IAccelerationStructure::CreateDesc& desc,
+ IAccelerationStructure** outView) override;
virtual SLANG_NO_THROW Result SLANG_MCALL createFramebufferLayout(
IFramebufferLayout::Desc const& desc,
IFramebufferLayout** outFrameBuffer) override;
@@ -147,6 +162,16 @@ public:
IResourceView* getInterface(const Slang::Guid& guid);
};
+class DebugAccelerationStructure : public DebugObject<IAccelerationStructure>
+{
+public:
+ SLANG_COM_OBJECT_IUNKNOWN_ALL;
+
+public:
+ IAccelerationStructure* getInterface(const Slang::Guid& guid);
+ virtual SLANG_NO_THROW DeviceAddress SLANG_MCALL getDeviceAddress() override;
+};
+
class DebugSamplerState : public DebugObject<ISamplerState>
{
public:
@@ -228,16 +253,9 @@ public:
class DebugCommandBuffer;
-class DebugComputeCommandEncoder : public DebugObject<IComputeCommandEncoder>
+class DebugComputeCommandEncoder : public UnownedDebugObject<IComputeCommandEncoder>
{
public:
- SLANG_COM_OBJECT_IUNKNOWN_QUERY_INTERFACE;
-
-public:
- IComputeCommandEncoder* getInterface(const Slang::Guid& guid);
- virtual SLANG_NO_THROW uint32_t SLANG_MCALL addRef() override { return 1; }
- virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() override { return 1; }
-
virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override;
virtual SLANG_NO_THROW Result SLANG_MCALL
bindPipeline(IPipelineState* state, IShaderObject** outRootShaderObject) override;
@@ -249,16 +267,9 @@ public:
bool isOpen = false;
};
-class DebugRenderCommandEncoder : public DebugObject<IRenderCommandEncoder>
+class DebugRenderCommandEncoder : public UnownedDebugObject<IRenderCommandEncoder>
{
public:
- SLANG_COM_OBJECT_IUNKNOWN_QUERY_INTERFACE;
-
-public:
- IRenderCommandEncoder* getInterface(const Slang::Guid& guid);
- virtual SLANG_NO_THROW uint32_t SLANG_MCALL addRef() override { return 1; }
- virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() override { return 1; }
-
virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override;
virtual SLANG_NO_THROW Result SLANG_MCALL
bindPipeline(IPipelineState* state, IShaderObject** outRootShaderObject) override;
@@ -287,16 +298,9 @@ public:
bool isOpen = false;
};
-class DebugResourceCommandEncoder : public DebugObject<IResourceCommandEncoder>
+class DebugResourceCommandEncoder : public UnownedDebugObject<IResourceCommandEncoder>
{
public:
- SLANG_COM_OBJECT_IUNKNOWN_QUERY_INTERFACE;
-
-public:
- IResourceCommandEncoder* getInterface(const Slang::Guid& guid);
- virtual SLANG_NO_THROW uint32_t SLANG_MCALL addRef() override { return 1; }
- virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() override { return 1; }
-
virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override;
virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer(
IBufferResource* dst,
@@ -313,15 +317,56 @@ public:
bool isOpen = false;
};
+class DebugRayTracingCommandEncoder : public UnownedDebugObject<IRayTracingCommandEncoder>
+{
+public:
+ virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override;
+ virtual SLANG_NO_THROW void SLANG_MCALL
+ writeTimestamp(IQueryPool* pool, SlangInt index) override;
+ virtual SLANG_NO_THROW void SLANG_MCALL buildAccelerationStructure(
+ const IAccelerationStructure::BuildDesc& desc,
+ int propertyQueryCount,
+ AccelerationStructureQueryDesc* queryDescs) override;
+ virtual SLANG_NO_THROW void SLANG_MCALL copyAccelerationStructure(
+ IAccelerationStructure* dest,
+ IAccelerationStructure* src,
+ AccelerationStructureCopyMode mode) override;
+ virtual SLANG_NO_THROW void SLANG_MCALL queryAccelerationStructureProperties(
+ int accelerationStructureCount,
+ IAccelerationStructure* const* accelerationStructures,
+ int queryCount,
+ AccelerationStructureQueryDesc* queryDescs) override;
+ virtual SLANG_NO_THROW void SLANG_MCALL
+ serializeAccelerationStructure(DeviceAddress dest, IAccelerationStructure* source) override;
+ virtual SLANG_NO_THROW void SLANG_MCALL deserializeAccelerationStructure(
+ IAccelerationStructure* dest,
+ DeviceAddress source) override;
+ virtual SLANG_NO_THROW void memoryBarrier(
+ int count,
+ IAccelerationStructure* const* structures,
+ AccessFlag::Enum sourceAccess,
+ AccessFlag::Enum destAccess) override;
+
+public:
+ DebugCommandBuffer* commandBuffer;
+ bool isOpen = false;
+};
+
+class DebugTransientResourceHeap;
+
class DebugCommandBuffer : public DebugObject<ICommandBuffer>
{
public:
SLANG_COM_OBJECT_IUNKNOWN_ALL;
+public:
+ DebugTransientResourceHeap* m_transientHeap;
+
private:
DebugRenderCommandEncoder m_renderCommandEncoder;
DebugComputeCommandEncoder m_computeCommandEncoder;
DebugResourceCommandEncoder m_resourceCommandEncoder;
+ DebugRayTracingCommandEncoder m_rayTracingCommandEncoder;
public:
DebugCommandBuffer();
@@ -334,6 +379,8 @@ public:
encodeComputeCommands(IComputeCommandEncoder** outEncoder) override;
virtual SLANG_NO_THROW void SLANG_MCALL
encodeResourceCommands(IResourceCommandEncoder** outEncoder) override;
+ virtual SLANG_NO_THROW void SLANG_MCALL
+ encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override;
virtual SLANG_NO_THROW void SLANG_MCALL close() override;
private: