summaryrefslogtreecommitdiffstats
path: root/tools/gfx/debug-layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gfx/debug-layer.cpp')
-rw-r--r--tools/gfx/debug-layer.cpp1981
1 files changed, 0 insertions, 1981 deletions
diff --git a/tools/gfx/debug-layer.cpp b/tools/gfx/debug-layer.cpp
deleted file mode 100644
index 36624245b..000000000
--- a/tools/gfx/debug-layer.cpp
+++ /dev/null
@@ -1,1981 +0,0 @@
-#include "debug-layer.h"
-#include "renderer-shared.h"
-#include "slang-gfx.h"
-
-using namespace Slang;
-
-namespace gfx
-{
-#ifdef __FUNCSIG__
-# define SLANG_FUNC_SIG __FUNCSIG__
-#elif defined(__PRETTY_FUNCTION__)
-# define SLANG_FUNC_SIG __FUNCSIG__
-#elif defined(__FUNCTION__)
-# define SLANG_FUNC_SIG __FUNCTION__
-#else
-# define SLANG_FUNC_SIG "UnknownFunction"
-#endif
-
-thread_local const char* _currentFunctionName = nullptr;
-struct SetCurrentFuncRAII
-{
- SetCurrentFuncRAII(const char* funcName) { _currentFunctionName = funcName; }
- ~SetCurrentFuncRAII() { _currentFunctionName = nullptr; }
-};
-#define SLANG_GFX_API_FUNC SetCurrentFuncRAII setFuncNameRAII(SLANG_FUNC_SIG)
-#define SLANG_GFX_API_FUNC_NAME(x) SetCurrentFuncRAII setFuncNameRAII(x)
-
-/// Returns the public API function name from a `SLANG_FUNC_SIG` string.
-String _gfxGetFuncName(const char* input)
-{
- UnownedStringSlice str(input);
- auto prefixIndex = str.indexOf(UnownedStringSlice("Debug"));
- if (prefixIndex == -1)
- return input;
- auto endIndex = str.lastIndexOf('(');
- if (endIndex == -1)
- endIndex = str.getLength();
- auto startIndex = prefixIndex + 5;
- StringBuilder sb;
- sb.appendChar('I');
- sb.append(str.subString(startIndex, endIndex - startIndex));
- return sb.ProduceString();
-}
-
-template <typename... TArgs>
-static char* _gfxDiagnoseFormat(
- char* buffer, // Initial buffer to output formatted string.
- size_t shortBufferSize, // Size of the initial buffer.
- List<char>& bufferArray, // A list for allocating a large buffer if needed.
- const char* format, // The format string.
- TArgs... args)
-{
- int length = sprintf_s(buffer, shortBufferSize, format, args...);
- if (length < 0)
- return buffer;
- if (length > 255)
- {
- bufferArray.setCount(length + 1);
- buffer = bufferArray.getBuffer();
- sprintf_s(buffer, bufferArray.getCount(), format, args...);
- }
- return buffer;
-}
-
-template <typename... TArgs>
-static void _gfxDiagnoseImpl(DebugMessageType type, const char* format, TArgs... args)
-{
- char shortBuffer[256];
- List<char> bufferArray;
- auto buffer =
- _gfxDiagnoseFormat(shortBuffer, sizeof(shortBuffer), bufferArray, format, args...);
- getDebugCallback()->handleMessage(type, DebugMessageSource::Layer, buffer);
-}
-
-#define GFX_DIAGNOSE_ERROR(message) \
- _gfxDiagnoseImpl( \
- DebugMessageType::Error, \
- "%s: %s", \
- _gfxGetFuncName(_currentFunctionName ? _currentFunctionName : SLANG_FUNC_SIG).getBuffer(), \
- message)
-#define GFX_DIAGNOSE_WARNING(message) \
- _gfxDiagnoseImpl( \
- DebugMessageType::Warning, \
- "%s: %s", \
- _gfxGetFuncName(_currentFunctionName ? _currentFunctionName : SLANG_FUNC_SIG).getBuffer(), \
- message)
-#define GFX_DIAGNOSE_INFO(message) \
- _gfxDiagnoseImpl( \
- DebugMessageType::Info, \
- "%s: %s", \
- _gfxGetFuncName(_currentFunctionName ? _currentFunctionName : SLANG_FUNC_SIG).getBuffer(), \
- message)
-#define GFX_DIAGNOSE_FORMAT(type, format, ...) \
- { \
- char shortBuffer[256]; \
- List<char> bufferArray; \
- auto message = _gfxDiagnoseFormat( \
- shortBuffer, sizeof(shortBuffer), bufferArray, format, __VA_ARGS__); \
- _gfxDiagnoseImpl( \
- type, \
- "%s: %s", \
- _gfxGetFuncName(_currentFunctionName ? _currentFunctionName : SLANG_FUNC_SIG) \
- .getBuffer(), \
- message); \
- }
-#define GFX_DIAGNOSE_ERROR_FORMAT(...) GFX_DIAGNOSE_FORMAT(DebugMessageType::Error, __VA_ARGS__)
-
-#define SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(typeName) \
- I##typeName* Debug##typeName::getInterface(const Slang::Guid& guid) \
- { \
- return (guid == GfxGUID::IID_ISlangUnknown || guid == GfxGUID::IID_I##typeName) \
- ? static_cast<I##typeName*>(this) \
- : nullptr; \
- }
-#define SLANG_GFX_DEBUG_GET_INTERFACE_IMPL_PARENT(typeName, parentType) \
- I##typeName* Debug##typeName::getInterface(const Slang::Guid& guid) \
- { \
- return (guid == GfxGUID::IID_ISlangUnknown || guid == GfxGUID::IID_I##typeName || \
- guid == GfxGUID::IID_I##parentType) \
- ? static_cast<I##typeName*>(this) \
- : nullptr; \
- }
-
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(Device)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL_PARENT(BufferResource, Resource)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL_PARENT(TextureResource, Resource)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(CommandBuffer)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(CommandQueue)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(Framebuffer)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(FramebufferLayout)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(InputLayout)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(RenderPassLayout)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(PipelineState)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(ResourceView)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(SamplerState)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(ShaderObject)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(ShaderProgram)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(Swapchain)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(TransientResourceHeap)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(QueryPool)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL_PARENT(AccelerationStructure, ResourceView)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(Fence)
-SLANG_GFX_DEBUG_GET_INTERFACE_IMPL(ShaderTable)
-
-#undef SLANG_GFX_DEBUG_GET_INTERFACE_IMPL
-#undef SLANG_GFX_DEBUG_GET_INTERFACE_IMPL_PARENT
-
-// Utility conversion functions to get Debug* object or the inner object from a user provided
-// pointer.
-#define SLANG_GFX_DEBUG_GET_OBJ_IMPL(type) \
- static Debug##type* getDebugObj(I##type* ptr) { return static_cast<Debug##type*>(ptr); } \
- static I##type* getInnerObj(I##type* ptr) \
- { \
- if (!ptr) return nullptr; \
- auto debugObj = getDebugObj(ptr); \
- return debugObj->baseObject; \
- }
-
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(Device)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(BufferResource)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(TextureResource)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(CommandBuffer)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(CommandQueue)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(ComputeCommandEncoder)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(RenderCommandEncoder)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(ResourceCommandEncoder)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(RayTracingCommandEncoder)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(Framebuffer)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(FramebufferLayout)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(InputLayout)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(RenderPassLayout)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(PipelineState)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(ResourceView)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(SamplerState)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(ShaderObject)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(ShaderProgram)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(Swapchain)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(TransientResourceHeap)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(QueryPool)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(AccelerationStructure)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(Fence)
-SLANG_GFX_DEBUG_GET_OBJ_IMPL(ShaderTable)
-
-#undef SLANG_GFX_DEBUG_GET_OBJ_IMPL
-
-void validateAccelerationStructureBuildInputs(
- const IAccelerationStructure::BuildInputs& buildInputs)
-{
- switch (buildInputs.kind)
- {
- case IAccelerationStructure::Kind::TopLevel:
- if (!buildInputs.instanceDescs)
- {
- GFX_DIAGNOSE_ERROR("IAccelerationStructure::BuildInputs::instanceDescs cannot be null "
- "when creating a top-level acceleration structure.");
- }
- break;
- case IAccelerationStructure::Kind::BottomLevel:
- if (!buildInputs.geometryDescs)
- {
- GFX_DIAGNOSE_ERROR("IAccelerationStructure::BuildInputs::geometryDescs cannot be null "
- "when creating a bottom-level acceleration structure.");
- }
- for (int i = 0; i < buildInputs.descCount; i++)
- {
- switch (buildInputs.geometryDescs[i].type)
- {
- case IAccelerationStructure::GeometryType::Triangles:
- switch (buildInputs.geometryDescs[i].content.triangles.vertexFormat)
- {
- case Format::R32G32B32_FLOAT:
- case Format::R32G32_FLOAT:
- case Format::R16G16B16A16_FLOAT:
- case Format::R16G16_FLOAT:
- case Format::R16G16B16A16_SNORM:
- case Format::R16G16_SNORM:
- break;
- default:
- GFX_DIAGNOSE_ERROR(
- "Unsupported IAccelerationStructure::TriangleDesc::vertexFormat. Valid "
- "values are R32G32B32_FLOAT, R32G32_FLOAT, R16G16B16A16_FLOAT, R16G16_FLOAT, "
- "R16G16B16A16_SNORM or R16G16_SNORM.");
- }
- if (buildInputs.geometryDescs[i].content.triangles.indexCount)
- {
- switch (buildInputs.geometryDescs[i].content.triangles.indexFormat)
- {
- case Format::R32_UINT:
- case Format::R16_UINT:
- break;
- default:
- GFX_DIAGNOSE_ERROR(
- "Unsupported IAccelerationStructure::TriangleDesc::indexFormat. Valid "
- "values are Unknown, R32_UINT or R16_UINT.");
- }
- if (!buildInputs.geometryDescs[i].content.triangles.indexData)
- {
- GFX_DIAGNOSE_ERROR(
- "IAccelerationStructure::TriangleDesc::indexData cannot be null if "
- "IAccelerationStructure::TriangleDesc::indexCount is not 0");
- }
- }
- if (buildInputs.geometryDescs[i].content.triangles.indexFormat != Format::Unknown)
- {
- if (buildInputs.geometryDescs[i].content.triangles.indexCount == 0)
- {
- GFX_DIAGNOSE_ERROR(
- "IAccelerationStructure::TriangleDesc::indexCount cannot be 0 if "
- "IAccelerationStructure::TriangleDesc::indexFormat is not Format::Unknown");
- }
- if (buildInputs.geometryDescs[i].content.triangles.indexData == 0)
- {
- GFX_DIAGNOSE_ERROR(
- "IAccelerationStructure::TriangleDesc::indexData cannot be null if "
- "IAccelerationStructure::TriangleDesc::indexFormat is not "
- "Format::Unknown");
- }
- }
- else
- {
- if (buildInputs.geometryDescs[i].content.triangles.indexCount != 0)
- {
- GFX_DIAGNOSE_ERROR(
- "IAccelerationStructure::TriangleDesc::indexCount must be 0 if "
- "IAccelerationStructure::TriangleDesc::indexFormat is "
- "Format::Unknown");
- }
- if (buildInputs.geometryDescs[i].content.triangles.indexData != 0)
- {
- GFX_DIAGNOSE_ERROR(
- "IAccelerationStructure::TriangleDesc::indexData must be null if "
- "IAccelerationStructure::TriangleDesc::indexFormat is "
- "Format::Unknown");
- }
- }
- if (!buildInputs.geometryDescs[i].content.triangles.vertexData)
- {
- GFX_DIAGNOSE_ERROR(
- "IAccelerationStructure::TriangleDesc::vertexData cannot be null.");
- }
- break;
- }
- }
- break;
- default:
- GFX_DIAGNOSE_ERROR("Invalid value of IAccelerationStructure::Kind.");
- break;
- }
-}
-
-Result DebugDevice::getNativeDeviceHandles(InteropHandles* outHandles)
-{
- return baseObject->getNativeDeviceHandles(outHandles);
-}
-
-Result DebugDevice::getFeatures(const char** outFeatures, Size bufferSize, GfxCount* outFeatureCount)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getFeatures(outFeatures, bufferSize, outFeatureCount);
-}
-
-Result DebugDevice::getFormatSupportedResourceStates(Format format, ResourceStateSet* outStates)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getFormatSupportedResourceStates(format, outStates);
-}
-
-DebugDevice::DebugDevice()
-{
- SLANG_GFX_API_FUNC_NAME("CreateDevice");
- GFX_DIAGNOSE_INFO("Debug layer is enabled.");
-}
-
-SLANG_NO_THROW bool SLANG_MCALL DebugDevice::hasFeature(const char* feature)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->hasFeature(feature);
-}
-
-Result DebugDevice::getSlangSession(slang::ISession** outSlangSession)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getSlangSession(outSlangSession);
-}
-
-Result DebugDevice::createTransientResourceHeap(
- const ITransientResourceHeap::Desc& desc,
- ITransientResourceHeap** outHeap)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugTransientResourceHeap> outObject = new DebugTransientResourceHeap();
- auto result = baseObject->createTransientResourceHeap(desc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outHeap, outObject);
- return result;
-}
-
-Result DebugDevice::createTextureResource(
- const ITextureResource::Desc& desc,
- const ITextureResource::SubresourceData* initData,
- ITextureResource** outResource)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugTextureResource> outObject = new DebugTextureResource();
- auto result =
- baseObject->createTextureResource(desc, initData, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outResource, outObject);
- return result;
-}
-
-Result DebugDevice::createTextureFromNativeHandle(
- InteropHandle handle,
- const ITextureResource::Desc& srcDesc,
- ITextureResource** outResource)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugTextureResource> outObject = new DebugTextureResource();
- auto result = baseObject->createTextureFromNativeHandle(handle, srcDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outResource, outObject);
- return result;
-}
-
-Result DebugDevice::createTextureFromSharedHandle(
- InteropHandle handle,
- const ITextureResource::Desc& srcDesc,
- const size_t size,
- ITextureResource** outResource)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugTextureResource> outObject = new DebugTextureResource();
- auto result = baseObject->createTextureFromSharedHandle(handle, srcDesc, size, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outResource, outObject);
- return result;
-}
-
-Result DebugDevice::createBufferResource(
- const IBufferResource::Desc& desc,
- const void* initData,
- IBufferResource** outResource)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugBufferResource> outObject = new DebugBufferResource();
- auto result = baseObject->createBufferResource(desc, initData, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outResource, outObject);
- return result;
-}
-
-Result DebugDevice::createBufferFromNativeHandle(
- InteropHandle handle,
- const IBufferResource::Desc& srcDesc,
- IBufferResource** outResource)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugBufferResource> outObject = new DebugBufferResource();
- auto result = baseObject->createBufferFromNativeHandle(handle, srcDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outResource, outObject);
- return result;
-}
-
-Result DebugDevice::createBufferFromSharedHandle(
- InteropHandle handle,
- const IBufferResource::Desc& srcDesc,
- IBufferResource** outResource)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugBufferResource> outObject = new DebugBufferResource();
- auto result = baseObject->createBufferFromSharedHandle(handle, srcDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outResource, outObject);
- return result;
-}
-
-Result DebugDevice::createSamplerState(ISamplerState::Desc const& desc, ISamplerState** outSampler)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugSamplerState> outObject = new DebugSamplerState();
- auto result = baseObject->createSamplerState(desc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outSampler, outObject);
- return result;
-}
-
-Result DebugDevice::createTextureView(
- ITextureResource* texture,
- IResourceView::Desc const& desc,
- IResourceView** outView)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugResourceView> outObject = new DebugResourceView();
- auto result = baseObject->createTextureView(
- static_cast<DebugTextureResource*>(texture)->baseObject,
- desc,
- outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outView, outObject);
- return result;
-}
-
-Result DebugDevice::createBufferView(
- IBufferResource* buffer,
- IBufferResource* counterBuffer,
- IResourceView::Desc const& desc,
- IResourceView** outView)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugResourceView> outObject = new DebugResourceView();
- auto result = baseObject->createBufferView(
- static_cast<DebugBufferResource*>(buffer)->baseObject,
- counterBuffer ? static_cast<DebugBufferResource*>(counterBuffer)->baseObject : nullptr,
- desc,
- outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outView, outObject);
- return result;
-}
-
-Result DebugDevice::getAccelerationStructurePrebuildInfo(
- const IAccelerationStructure::BuildInputs& buildInputs,
- IAccelerationStructure::PrebuildInfo* outPrebuildInfo)
-{
- SLANG_GFX_API_FUNC;
- validateAccelerationStructureBuildInputs(buildInputs);
- return baseObject->getAccelerationStructurePrebuildInfo(buildInputs, outPrebuildInfo);
-}
-
-Result DebugDevice::createAccelerationStructure(
- const IAccelerationStructure::CreateDesc& desc,
- IAccelerationStructure** outAS)
-{
- SLANG_GFX_API_FUNC;
- auto innerDesc = desc;
- innerDesc.buffer = getInnerObj(innerDesc.buffer);
- RefPtr<DebugAccelerationStructure> outObject = new DebugAccelerationStructure();
- auto result = baseObject->createAccelerationStructure(innerDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outAS, outObject);
- return SLANG_OK;
-}
-
-Result DebugDevice::createFramebufferLayout(
- IFramebufferLayout::Desc const& desc,
- IFramebufferLayout** outFrameBuffer)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugFramebufferLayout> outObject = new DebugFramebufferLayout();
- auto result = baseObject->createFramebufferLayout(desc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outFrameBuffer, outObject);
- return result;
-}
-
-Result DebugDevice::createFramebuffer(IFramebuffer::Desc const& desc, IFramebuffer** outFrameBuffer)
-{
- SLANG_GFX_API_FUNC;
-
- auto innerDesc = desc;
- innerDesc.layout =
- desc.layout ? static_cast<DebugFramebufferLayout*>(desc.layout)->baseObject.get() : nullptr;
- innerDesc.depthStencilView =
- desc.depthStencilView
- ? static_cast<DebugResourceView*>(desc.depthStencilView)->baseObject.get()
- : nullptr;
- List<IResourceView*> innerRenderTargets;
- for (GfxIndex i = 0; i < desc.renderTargetCount; i++)
- {
- auto innerRenderTarget =
- desc.renderTargetViews[i]
- ? static_cast<DebugResourceView*>(desc.renderTargetViews[i])->baseObject.get()
- : nullptr;
- innerRenderTargets.add(innerRenderTarget);
- }
- innerDesc.renderTargetViews = innerRenderTargets.getBuffer();
-
- RefPtr<DebugFramebuffer> outObject = new DebugFramebuffer();
- auto result = baseObject->createFramebuffer(innerDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outFrameBuffer, outObject);
- return result;
-}
-
-Result DebugDevice::createRenderPassLayout(
- const IRenderPassLayout::Desc& desc,
- IRenderPassLayout** outRenderPassLayout)
-{
- SLANG_GFX_API_FUNC;
-
- auto innerDesc = desc;
- innerDesc.framebufferLayout =
- desc.framebufferLayout? static_cast<DebugFramebufferLayout*>(desc.framebufferLayout)->baseObject.get()
- : nullptr;
- RefPtr<DebugRenderPassLayout> outObject = new DebugRenderPassLayout();
- auto result = baseObject->createRenderPassLayout(innerDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outRenderPassLayout, outObject);
- return result;
-}
-
-Result DebugDevice::createSwapchain(
- ISwapchain::Desc const& desc,
- WindowHandle window,
- ISwapchain** outSwapchain)
-{
- SLANG_GFX_API_FUNC;
-
- auto innerDesc = desc;
- innerDesc.queue = static_cast<DebugCommandQueue*>(desc.queue)->baseObject.get();
- RefPtr<DebugSwapchain> outObject = new DebugSwapchain();
- outObject->queue = static_cast<DebugCommandQueue*>(desc.queue);
- auto result = baseObject->createSwapchain(innerDesc, window, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outSwapchain, outObject);
- return Result();
-}
-
-Result DebugDevice::createInputLayout(
- IInputLayout::Desc const& desc,
- IInputLayout** outLayout)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugInputLayout> outObject = new DebugInputLayout();
- auto result = baseObject->createInputLayout(
- desc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outLayout, outObject);
- return result;
-}
-
-Result DebugDevice::createCommandQueue(const ICommandQueue::Desc& desc, ICommandQueue** outQueue)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugCommandQueue> outObject = new DebugCommandQueue();
- auto result = baseObject->createCommandQueue(desc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outQueue, outObject);
- return result;
-}
-
-Result DebugDevice::createShaderObject(
- slang::TypeReflection* type,
- ShaderObjectContainerType containerType,
- IShaderObject** outShaderObject)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugShaderObject> outObject = new DebugShaderObject();
- auto typeName = type->getName();
- auto result =
- baseObject->createShaderObject(type, containerType, outObject->baseObject.writeRef());
- outObject->m_typeName = typeName;
- outObject->m_device = this;
- outObject->m_slangType = type;
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outShaderObject, outObject);
- return result;
-}
-
-Result DebugDevice::createMutableShaderObject(
- slang::TypeReflection* type,
- ShaderObjectContainerType containerType,
- IShaderObject** outShaderObject)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugShaderObject> outObject = new DebugShaderObject();
- auto typeName = type->getName();
- auto result =
- baseObject->createMutableShaderObject(type, containerType, outObject->baseObject.writeRef());
- outObject->m_typeName = typeName;
- outObject->m_device = this;
- outObject->m_slangType = type;
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outShaderObject, outObject);
- return result;
-}
-
-Result DebugDevice::createMutableRootShaderObject(
- IShaderProgram* program, IShaderObject** outRootObject)
-{
- SLANG_GFX_API_FUNC;
- RefPtr<DebugShaderObject> outObject = new DebugShaderObject();
- auto result = baseObject->createMutableRootShaderObject(
- getInnerObj(program), outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- outObject->m_device = this;
- outObject->m_slangType = nullptr;
- outObject->m_rootComponentType = getDebugObj(program)->m_slangProgram;
- returnComPtr(outRootObject, outObject);
- return result;
-}
-
-Result DebugDevice::createShaderObjectFromTypeLayout(
- slang::TypeLayoutReflection* typeLayout, IShaderObject** outShaderObject)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugShaderObject> outObject = new DebugShaderObject();
- auto result = baseObject->createShaderObjectFromTypeLayout(typeLayout, outObject->baseObject.writeRef());
- auto type = typeLayout->getType();
- auto typeName = type->getName();
- outObject->m_typeName = typeName;
- outObject->m_device = this;
- outObject->m_slangType = type;
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outShaderObject, outObject);
- return result;
-}
-
-Result DebugDevice::createMutableShaderObjectFromTypeLayout(
- slang::TypeLayoutReflection* typeLayout, IShaderObject** outShaderObject)
-{
- SLANG_GFX_API_FUNC;
- RefPtr<DebugShaderObject> outObject = new DebugShaderObject();
- auto result = baseObject->createMutableShaderObjectFromTypeLayout(
- typeLayout, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- auto type = typeLayout->getType();
- auto typeName = type->getName();
- outObject->m_typeName = typeName;
- outObject->m_device = this;
- outObject->m_slangType = type;
- returnComPtr(outShaderObject, outObject);
- return result;
-}
-
-Result DebugDevice::createProgram(
- const IShaderProgram::Desc& desc, IShaderProgram** outProgram, ISlangBlob** outDiagnostics)
-{
- SLANG_GFX_API_FUNC;
-
- RefPtr<DebugShaderProgram> outObject = new DebugShaderProgram(desc);
- auto result = baseObject->createProgram(desc, outObject->baseObject.writeRef(), outDiagnostics);
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outProgram, outObject);
- return result;
-}
-
-Result DebugDevice::createGraphicsPipelineState(
- const GraphicsPipelineStateDesc& desc,
- IPipelineState** outState)
-{
- SLANG_GFX_API_FUNC;
-
- GraphicsPipelineStateDesc innerDesc = desc;
- innerDesc.program =
- desc.program ? static_cast<DebugShaderProgram*>(desc.program)->baseObject : nullptr;
- innerDesc.inputLayout =
- desc.inputLayout ? static_cast<DebugInputLayout*>(desc.inputLayout)->baseObject : nullptr;
- innerDesc.framebufferLayout =
- desc.framebufferLayout
- ? static_cast<DebugFramebufferLayout*>(desc.framebufferLayout)->baseObject
- : nullptr;
- RefPtr<DebugPipelineState> outObject = new DebugPipelineState();
- auto result =
- baseObject->createGraphicsPipelineState(innerDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outState, outObject);
- return result;
-}
-
-Result DebugDevice::createComputePipelineState(
- const ComputePipelineStateDesc& desc,
- IPipelineState** outState)
-{
- SLANG_GFX_API_FUNC;
-
- ComputePipelineStateDesc innerDesc = desc;
- innerDesc.program = static_cast<DebugShaderProgram*>(desc.program)->baseObject;
-
- RefPtr<DebugPipelineState> outObject = new DebugPipelineState();
- auto result =
- baseObject->createComputePipelineState(innerDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outState, outObject);
- return result;
-}
-
-Result DebugDevice::createRayTracingPipelineState(
- const RayTracingPipelineStateDesc& desc,
- IPipelineState** outState)
-{
- SLANG_GFX_API_FUNC;
-
- RayTracingPipelineStateDesc innerDesc = desc;
- innerDesc.program = static_cast<DebugShaderProgram*>(desc.program)->baseObject;
-
- RefPtr<DebugPipelineState> outObject = new DebugPipelineState();
- auto result =
- baseObject->createRayTracingPipelineState(innerDesc, outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outState, outObject);
- return result;
-}
-
-SlangResult DebugDevice::readTextureResource(
- ITextureResource* resource,
- ResourceState state,
- ISlangBlob** outBlob,
- size_t* outRowPitch,
- size_t* outPixelSize)
-{
- SLANG_GFX_API_FUNC;
- auto resourceImpl = static_cast<DebugTextureResource*>(resource);
- return baseObject->readTextureResource(
- resourceImpl->baseObject, state, outBlob, outRowPitch, outPixelSize);
-}
-
-SlangResult DebugDevice::readBufferResource(
- IBufferResource* buffer,
- size_t offset,
- size_t size,
- ISlangBlob** outBlob)
-{
- SLANG_GFX_API_FUNC;
- auto bufferImpl = static_cast<DebugBufferResource*>(buffer);
- return baseObject->readBufferResource(bufferImpl->baseObject, offset, size, outBlob);
-}
-
-const DeviceInfo& DebugDevice::getDeviceInfo() const
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getDeviceInfo();
-}
-
-Result DebugDevice::createQueryPool(const IQueryPool::Desc& desc, IQueryPool** outPool)
-{
- SLANG_GFX_API_FUNC;
- RefPtr<DebugQueryPool> result = new DebugQueryPool();
- result->desc = desc;
- SLANG_RETURN_ON_FAIL(baseObject->createQueryPool(desc, result->baseObject.writeRef()));
- returnComPtr(outPool, result);
- return SLANG_OK;
-}
-
-Result DebugDevice::createFence(const IFence::Desc& desc, IFence** outFence)
-{
- SLANG_GFX_API_FUNC;
- RefPtr<DebugFence> result = new DebugFence();
- SLANG_RETURN_ON_FAIL(baseObject->createFence(desc, result->baseObject.writeRef()));
- returnComPtr(outFence, result);
- return SLANG_OK;
-}
-
-Result DebugDevice::waitForFences(
- GfxCount fenceCount, IFence** fences, uint64_t* values , bool waitForAll, uint64_t timeout)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->waitForFences(fenceCount, fences, values, waitForAll, timeout);
-}
-
-Result DebugDevice::getTextureAllocationInfo(
- const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getTextureAllocationInfo(desc, outSize, outAlignment);
-}
-
-Result DebugDevice::getTextureRowAlignment(size_t* outAlignment)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getTextureRowAlignment(outAlignment);
-}
-
-Result DebugDevice::createShaderTable(const IShaderTable::Desc& desc, IShaderTable** outTable)
-{
- SLANG_GFX_API_FUNC;
- RefPtr<DebugShaderTable> result = new DebugShaderTable();
- SLANG_RETURN_ON_FAIL(baseObject->createShaderTable(desc, result->baseObject.writeRef()));
- returnComPtr(outTable, result);
- return SLANG_OK;
-}
-
-IResource::Type DebugBufferResource::getType()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getType();
-}
-
-IBufferResource::Desc* DebugBufferResource::getDesc()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getDesc();
-}
-
-DeviceAddress DebugBufferResource::getDeviceAddress()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getDeviceAddress();
-}
-
-Result DebugBufferResource::getNativeResourceHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getNativeResourceHandle(outHandle);
-}
-
-Result DebugBufferResource::getSharedHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getSharedHandle(outHandle);
-}
-
-Result DebugBufferResource::setDebugName(const char* name)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setDebugName(name);
-}
-
-const char* DebugBufferResource::getDebugName()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getDebugName();
-}
-
-Result DebugBufferResource::map(MemoryRange* rangeToRead, void** outPointer)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->map(rangeToRead, outPointer);
-}
-
-Result DebugBufferResource::unmap(MemoryRange* writtenRange)
-{
- return baseObject->unmap(writtenRange);
-}
-
-IResource::Type DebugTextureResource::getType()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getType();
-}
-
-ITextureResource::Desc* DebugTextureResource::getDesc()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getDesc();
-}
-
-Result DebugTextureResource::getNativeResourceHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getNativeResourceHandle(outHandle);
-}
-
-Result DebugTextureResource::getSharedHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getSharedHandle(outHandle);
-}
-
-Result DebugTextureResource::setDebugName(const char* name)
-{
- return baseObject->setDebugName(name);
-}
-
-const char* DebugTextureResource::getDebugName() { return baseObject->getDebugName(); }
-
-
-DebugCommandBuffer::DebugCommandBuffer()
-{
- SLANG_GFX_API_FUNC;
- m_renderCommandEncoder.commandBuffer = this;
- m_computeCommandEncoder.commandBuffer = this;
- m_resourceCommandEncoder.commandBuffer = this;
- m_rayTracingCommandEncoder.commandBuffer = this;
-}
-
-void DebugCommandBuffer::encodeRenderCommands(
- IRenderPassLayout* renderPass,
- IFramebuffer* framebuffer,
- IRenderCommandEncoder** outEncoder)
-{
- SLANG_GFX_API_FUNC;
- checkCommandBufferOpenWhenCreatingEncoder();
- checkEncodersClosedBeforeNewEncoder();
- auto innerRenderPass =
- renderPass ? static_cast<DebugRenderPassLayout*>(renderPass)->baseObject : nullptr;
- auto innerFramebuffer =
- framebuffer ? static_cast<DebugFramebuffer*>(framebuffer)->baseObject : nullptr;
- m_renderCommandEncoder.isOpen = true;
- baseObject->encodeRenderCommands(
- innerRenderPass, innerFramebuffer, &m_renderCommandEncoder.baseObject);
- if (m_renderCommandEncoder.baseObject)
- *outEncoder = &m_renderCommandEncoder;
- else
- *outEncoder = nullptr;
-}
-
-void DebugCommandBuffer::encodeComputeCommands(IComputeCommandEncoder** outEncoder)
-{
- SLANG_GFX_API_FUNC;
- checkCommandBufferOpenWhenCreatingEncoder();
- checkEncodersClosedBeforeNewEncoder();
- m_computeCommandEncoder.isOpen = true;
- baseObject->encodeComputeCommands(&m_computeCommandEncoder.baseObject);
- if (m_computeCommandEncoder.baseObject)
- {
- *outEncoder = &m_computeCommandEncoder;
- }
- else
- {
- *outEncoder = nullptr;
- }
-}
-
-void DebugCommandBuffer::encodeResourceCommands(IResourceCommandEncoder** outEncoder)
-{
- SLANG_GFX_API_FUNC;
- checkCommandBufferOpenWhenCreatingEncoder();
- checkEncodersClosedBeforeNewEncoder();
- m_resourceCommandEncoder.isOpen = true;
- baseObject->encodeResourceCommands(&m_resourceCommandEncoder.baseObject);
- if (m_resourceCommandEncoder.baseObject)
- {
- *outEncoder = &m_resourceCommandEncoder;
- }
- else
- {
- *outEncoder = nullptr;
- }
-}
-
-void DebugCommandBuffer::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder)
-{
- SLANG_GFX_API_FUNC;
- checkCommandBufferOpenWhenCreatingEncoder();
- checkEncodersClosedBeforeNewEncoder();
- m_rayTracingCommandEncoder.isOpen = true;
- baseObject->encodeRayTracingCommands(&m_rayTracingCommandEncoder.baseObject);
- if (m_rayTracingCommandEncoder.baseObject)
- {
- *outEncoder = &m_rayTracingCommandEncoder;
- }
- else
- {
- *outEncoder = nullptr;
- }
-}
-
-void DebugCommandBuffer::close()
-{
- SLANG_GFX_API_FUNC;
- if (!isOpen)
- {
- GFX_DIAGNOSE_ERROR("command buffer is already closed.");
- }
- if (m_renderCommandEncoder.isOpen)
- {
- GFX_DIAGNOSE_ERROR(
- "A render command encoder on this command buffer is still open. "
- "IRenderCommandEncoder::endEncoding() must be called before closing a command buffer.");
- }
- if (m_computeCommandEncoder.isOpen)
- {
- GFX_DIAGNOSE_ERROR(
- "A compute command encoder on this command buffer is still open. "
- "IComputeCommandEncoder::endEncoding() must be called before closing a command buffer.");
- }
- if (m_resourceCommandEncoder.isOpen)
- {
- GFX_DIAGNOSE_ERROR(
- "A resource command encoder on this command buffer is still open. "
- "IResourceCommandEncoder::endEncoding() must be called before closing a command buffer.");
- }
- isOpen = false;
- baseObject->close();
-}
-
-Result DebugCommandBuffer::getNativeHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getNativeHandle(outHandle);
-}
-
-void DebugCommandBuffer::checkEncodersClosedBeforeNewEncoder()
-{
- if (m_renderCommandEncoder.isOpen || m_resourceCommandEncoder.isOpen ||
- m_computeCommandEncoder.isOpen)
- {
- GFX_DIAGNOSE_ERROR(
- "A previouse command encoder created on this command buffer is still open. "
- "endEncoding() must be called on the encoder before creating an encoder.");
- }
-}
-
-void DebugCommandBuffer::checkCommandBufferOpenWhenCreatingEncoder()
-{
- if (!isOpen)
- {
- GFX_DIAGNOSE_ERROR("The command buffer is already closed. Encoders can only be retrieved "
- "while the command buffer is open.");
- }
-}
-
-void DebugComputeCommandEncoder::endEncoding()
-{
- SLANG_GFX_API_FUNC;
- isOpen = false;
- baseObject->endEncoding();
-}
-
-Result DebugComputeCommandEncoder::bindPipeline(
- IPipelineState* state,
- IShaderObject** outRootShaderObject)
-{
- SLANG_GFX_API_FUNC;
-
- auto innerState = static_cast<DebugPipelineState*>(state)->baseObject;
- IShaderObject* innerRootObject = nullptr;
- commandBuffer->rootObject.reset();
- auto result = baseObject->bindPipeline(innerState, &innerRootObject);
- commandBuffer->rootObject.baseObject.attach(innerRootObject);
- *outRootShaderObject = &commandBuffer->rootObject;
- return result;
-}
-
-Result DebugComputeCommandEncoder::bindPipelineWithRootObject(
- IPipelineState* state, IShaderObject* rootObject)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->bindPipelineWithRootObject(getInnerObj(state), getInnerObj(rootObject));
-}
-
-void DebugComputeCommandEncoder::dispatchCompute(int x, int y, int z)
-{
- SLANG_GFX_API_FUNC;
- baseObject->dispatchCompute(x, y, z);
-}
-
-void DebugComputeCommandEncoder::dispatchComputeIndirect(
- IBufferResource* cmdBuffer, Offset offset)
-{
- SLANG_GFX_API_FUNC;
- baseObject->dispatchComputeIndirect(getInnerObj(cmdBuffer), offset);
-}
-
-void DebugRenderCommandEncoder::endEncoding()
-{
- SLANG_GFX_API_FUNC;
- isOpen = false;
- baseObject->endEncoding();
-}
-
-Result DebugRenderCommandEncoder::bindPipeline(
- IPipelineState* state,
- IShaderObject** outRootShaderObject)
-{
- SLANG_GFX_API_FUNC;
-
- auto innerState = static_cast<DebugPipelineState*>(state)->baseObject;
- IShaderObject* innerRootObject = nullptr;
- commandBuffer->rootObject.reset();
- auto result = baseObject->bindPipeline(innerState, &innerRootObject);
- commandBuffer->rootObject.baseObject.attach(innerRootObject);
- *outRootShaderObject = &commandBuffer->rootObject;
- return result;
-}
-
-Result DebugRenderCommandEncoder::bindPipelineWithRootObject(
- IPipelineState* state, IShaderObject* rootObject)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->bindPipelineWithRootObject(getInnerObj(state), getInnerObj(rootObject));
-}
-
-void DebugRenderCommandEncoder::setViewports(GfxCount count, const Viewport* viewports)
-{
- SLANG_GFX_API_FUNC;
- baseObject->setViewports(count, viewports);
-}
-
-void DebugRenderCommandEncoder::setScissorRects(GfxCount count, const ScissorRect* scissors)
-{
- SLANG_GFX_API_FUNC;
- baseObject->setScissorRects(count, scissors);
-}
-
-void DebugRenderCommandEncoder::setPrimitiveTopology(PrimitiveTopology topology)
-{
- SLANG_GFX_API_FUNC;
- baseObject->setPrimitiveTopology(topology);
-}
-
-void DebugRenderCommandEncoder::setVertexBuffers(
- GfxIndex startSlot,
- GfxCount slotCount,
- IBufferResource* const* buffers,
- const Offset* offsets)
-{
- SLANG_GFX_API_FUNC;
-
- List<IBufferResource*> innerBuffers;
- for (GfxIndex i = 0; i < slotCount; i++)
- {
- innerBuffers.add(static_cast<DebugBufferResource*>(buffers[i])->baseObject.get());
- }
- baseObject->setVertexBuffers(startSlot, slotCount, innerBuffers.getBuffer(), offsets);
-}
-
-void DebugRenderCommandEncoder::setIndexBuffer(
- IBufferResource* buffer, Format indexFormat, Offset offset)
-{
- SLANG_GFX_API_FUNC;
- auto innerBuffer = static_cast<DebugBufferResource*>(buffer)->baseObject.get();
- baseObject->setIndexBuffer(innerBuffer, indexFormat, offset);
-}
-
-void DebugRenderCommandEncoder::draw(GfxCount vertexCount, GfxIndex startVertex)
-{
- SLANG_GFX_API_FUNC;
- baseObject->draw(vertexCount, startVertex);
-}
-
-void DebugRenderCommandEncoder::drawIndexed(
- GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex)
-{
- SLANG_GFX_API_FUNC;
- baseObject->drawIndexed(indexCount, startIndex, baseVertex);
-}
-
-void DebugRenderCommandEncoder::drawIndirect(
- GfxCount maxDrawCount,
- IBufferResource* argBuffer,
- Offset argOffset,
- IBufferResource* countBuffer,
- Offset countOffset)
-{
- SLANG_GFX_API_FUNC;
- baseObject->drawIndirect(
- maxDrawCount, getInnerObj(argBuffer), argOffset, getInnerObj(countBuffer), countOffset);
-}
-
-void DebugRenderCommandEncoder::drawIndexedIndirect(
- GfxCount maxDrawCount,
- IBufferResource* argBuffer,
- Offset argOffset,
- IBufferResource* countBuffer,
- Offset countOffset)
-{
- SLANG_GFX_API_FUNC;
- baseObject->drawIndexedIndirect(
- maxDrawCount, getInnerObj(argBuffer), argOffset, getInnerObj(countBuffer), countOffset);
-}
-
-void DebugRenderCommandEncoder::setStencilReference(uint32_t referenceValue)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setStencilReference(referenceValue);
-}
-
-Result DebugRenderCommandEncoder::setSamplePositions(
- GfxCount samplesPerPixel, GfxCount pixelCount, const SamplePosition* samplePositions)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setSamplePositions(samplesPerPixel, pixelCount, samplePositions);
-}
-
-void DebugRenderCommandEncoder::drawInstanced(
- GfxCount vertexCount,
- GfxCount instanceCount,
- GfxIndex startVertex,
- GfxIndex startInstanceLocation)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->drawInstanced(
- vertexCount, instanceCount, startVertex, startInstanceLocation);
-}
-
-void DebugRenderCommandEncoder::drawIndexedInstanced(
- GfxCount indexCount,
- GfxCount instanceCount,
- GfxIndex startIndexLocation,
- GfxIndex baseVertexLocation,
- GfxIndex startInstanceLocation)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->drawIndexedInstanced(
- indexCount, instanceCount, startIndexLocation, baseVertexLocation, startInstanceLocation);
-}
-
-void DebugResourceCommandEncoder::endEncoding()
-{
- SLANG_GFX_API_FUNC;
- isOpen = false;
- baseObject->endEncoding();
-}
-
-void DebugResourceCommandEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->writeTimestamp(static_cast<DebugQueryPool*>(pool)->baseObject, index);
-}
-
-void DebugResourceCommandEncoderImpl::copyBuffer(
- IBufferResource* dst,
- Offset dstOffset,
- IBufferResource* src,
- Offset srcOffset,
- Size size)
-{
- SLANG_GFX_API_FUNC;
- auto dstImpl = static_cast<DebugBufferResource*>(dst);
- auto srcImpl = static_cast<DebugBufferResource*>(src);
- getBaseResourceEncoder()->copyBuffer(
- dstImpl->baseObject, dstOffset, srcImpl->baseObject, srcOffset, size);
-}
-
-void DebugResourceCommandEncoderImpl::uploadBufferData(
- IBufferResource* dst,
- Offset offset,
- Size size,
- void* data)
-{
- SLANG_GFX_API_FUNC;
- auto dstImpl = static_cast<DebugBufferResource*>(dst);
- getBaseResourceEncoder()->uploadBufferData(dstImpl->baseObject, offset, size, data);
-}
-
-void DebugResourceCommandEncoderImpl::textureBarrier(
- GfxCount count,
- ITextureResource* const* textures,
- ResourceState src,
- ResourceState dst)
-{
- SLANG_GFX_API_FUNC;
-
- List<ITextureResource*> innerTextures;
- for (GfxIndex i = 0; i < count; i++)
- {
- innerTextures.add(static_cast<DebugTextureResource*>(textures[i])->baseObject.get());
- }
- getBaseResourceEncoder()->textureBarrier(count, innerTextures.getBuffer(), src, dst);
-}
-
-void DebugResourceCommandEncoderImpl::bufferBarrier(
- GfxCount count,
- IBufferResource* const* buffers,
- ResourceState src,
- ResourceState dst)
-{
- SLANG_GFX_API_FUNC;
-
- List<IBufferResource*> innerBuffers;
- for(GfxIndex i = 0; i < count; i++)
- {
- innerBuffers.add(static_cast<DebugBufferResource*>(buffers[i])->baseObject.get());
- }
- getBaseResourceEncoder()->bufferBarrier(count, innerBuffers.getBuffer(), src, dst);
-}
-
-void DebugResourceCommandEncoderImpl::copyTexture(
- ITextureResource* dst,
- ResourceState dstState,
- SubresourceRange dstSubresource,
- ITextureResource::Offset3D dstOffset,
- ITextureResource* src,
- ResourceState srcState,
- SubresourceRange srcSubresource,
- ITextureResource::Offset3D srcOffset,
- ITextureResource::Extents extent)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->copyTexture(
- getInnerObj(dst),
- dstState,
- dstSubresource,
- dstOffset,
- getInnerObj(src),
- srcState,
- srcSubresource,
- srcOffset,
- extent);
-}
-
-void DebugResourceCommandEncoderImpl::uploadTextureData(
- ITextureResource* dst,
- SubresourceRange subResourceRange,
- ITextureResource::Offset3D offset,
- ITextureResource::Extents extent,
- ITextureResource::SubresourceData* subResourceData,
- GfxCount subResourceDataCount)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->uploadTextureData(
- getInnerObj(dst), subResourceRange, offset, extent, subResourceData, subResourceDataCount);
-}
-
-void DebugResourceCommandEncoderImpl::clearResourceView(
- IResourceView* view, ClearValue* clearValue, ClearResourceViewFlags::Enum flags)
-{
- SLANG_GFX_API_FUNC;
- switch (view->getViewDesc()->type)
- {
- case IResourceView::Type::DepthStencil:
- case IResourceView::Type::RenderTarget:
- case IResourceView::Type::UnorderedAccess:
- break;
- default:
- GFX_DIAGNOSE_ERROR_FORMAT(
- "Resource view %lld cannot be cleared. Only DepthStencil, "
- "RenderTarget or UnorderedAccess views can be cleared.",
- getDebugObj(view)->uid);
- }
- getBaseResourceEncoder()->clearResourceView(getInnerObj(view), clearValue, flags);
-}
-
-void DebugResourceCommandEncoderImpl::resolveResource(
- ITextureResource* source,
- ResourceState sourceState,
- SubresourceRange sourceRange,
- ITextureResource* dest,
- ResourceState destState,
- SubresourceRange destRange)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->resolveResource(
- getInnerObj(source), sourceState, sourceRange, getInnerObj(dest), destState, destRange);
-}
-
-void DebugResourceCommandEncoderImpl::resolveQuery(
- IQueryPool* queryPool, GfxIndex index, GfxCount count, IBufferResource* buffer, Offset offset)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->resolveQuery(getInnerObj(queryPool), index, count, buffer, offset);
-}
-
-void DebugResourceCommandEncoderImpl::copyTextureToBuffer(
- IBufferResource* dst,
- Offset dstOffset,
- Size dstSize,
- Size dstRowStride,
- ITextureResource* src,
- ResourceState srcState,
- SubresourceRange srcSubresource,
- ITextureResource::Offset3D srcOffset,
- ITextureResource::Extents extent)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->copyTextureToBuffer(
- getInnerObj(dst), dstOffset, dstSize, dstRowStride, getInnerObj(src), srcState, srcSubresource, srcOffset, extent);
-}
-
-void DebugResourceCommandEncoderImpl::textureSubresourceBarrier(
- ITextureResource* texture,
- SubresourceRange subresourceRange,
- ResourceState src,
- ResourceState dst)
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->textureSubresourceBarrier(
- getInnerObj(texture), subresourceRange, src, dst);
-}
-
-void DebugResourceCommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3])
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->beginDebugEvent(name, rgbColor);
-}
-
-void DebugResourceCommandEncoderImpl::endDebugEvent()
-{
- SLANG_GFX_API_FUNC;
- getBaseResourceEncoder()->endDebugEvent();
-}
-
-void DebugRayTracingCommandEncoder::endEncoding()
-{
- SLANG_GFX_API_FUNC;
- isOpen = false;
- baseObject->endEncoding();
-}
-
-void DebugRayTracingCommandEncoder::buildAccelerationStructure(
- const IAccelerationStructure::BuildDesc& desc,
- GfxCount propertyQueryCount,
- AccelerationStructureQueryDesc* queryDescs)
-{
- SLANG_GFX_API_FUNC;
- IAccelerationStructure::BuildDesc innerDesc = desc;
- innerDesc.dest = getInnerObj(innerDesc.dest);
- innerDesc.source = getInnerObj(innerDesc.source);
- List<AccelerationStructureQueryDesc> innerQueryDescs;
- innerQueryDescs.addRange(queryDescs, propertyQueryCount);
- for (auto& innerQueryDesc : innerQueryDescs)
- {
- innerQueryDesc.queryPool = getInnerObj(innerQueryDesc.queryPool);
- }
- validateAccelerationStructureBuildInputs(desc.inputs);
- baseObject->buildAccelerationStructure(
- innerDesc, propertyQueryCount, innerQueryDescs.getBuffer());
-}
-
-void DebugRayTracingCommandEncoder::copyAccelerationStructure(
- IAccelerationStructure* dest,
- IAccelerationStructure* src,
- AccelerationStructureCopyMode mode)
-{
- SLANG_GFX_API_FUNC;
- auto innerDest = getInnerObj(dest);
- auto innerSrc = getInnerObj(src);
- baseObject->copyAccelerationStructure(innerDest, innerSrc, mode);
-}
-
-void DebugRayTracingCommandEncoder::queryAccelerationStructureProperties(
- GfxCount accelerationStructureCount,
- IAccelerationStructure* const* accelerationStructures,
- GfxCount queryCount,
- AccelerationStructureQueryDesc* queryDescs)
-{
- SLANG_GFX_API_FUNC;
- List<IAccelerationStructure*> innerAS;
- for (GfxIndex i = 0; i < accelerationStructureCount; i++)
- {
- innerAS.add(getInnerObj(accelerationStructures[i]));
- }
- List<AccelerationStructureQueryDesc> innerQueryDescs;
- innerQueryDescs.addRange(queryDescs, queryCount);
- for (auto& innerQueryDesc : innerQueryDescs)
- {
- innerQueryDesc.queryPool = getInnerObj(innerQueryDesc.queryPool);
- }
- baseObject->queryAccelerationStructureProperties(
- accelerationStructureCount, innerAS.getBuffer(), queryCount, innerQueryDescs.getBuffer());
-}
-
-void DebugRayTracingCommandEncoder::serializeAccelerationStructure(
- DeviceAddress dest,
- IAccelerationStructure* source)
-{
- SLANG_GFX_API_FUNC;
- baseObject->serializeAccelerationStructure(dest, getInnerObj(source));
-}
-
-void DebugRayTracingCommandEncoder::deserializeAccelerationStructure(
- IAccelerationStructure* dest,
- DeviceAddress source)
-{
- SLANG_GFX_API_FUNC;
- baseObject->deserializeAccelerationStructure(getInnerObj(dest), source);
-}
-
-void DebugRayTracingCommandEncoder::bindPipeline(
- IPipelineState* state, IShaderObject** outRootObject)
-{
- SLANG_GFX_API_FUNC;
- auto innerPipeline = getInnerObj(state);
- IShaderObject* innerRootObject = nullptr;
- commandBuffer->rootObject.reset();
- baseObject->bindPipeline(innerPipeline, &innerRootObject);
- commandBuffer->rootObject.baseObject.attach(innerRootObject);
- *outRootObject = &commandBuffer->rootObject;
-}
-
-Result DebugRayTracingCommandEncoder::bindPipelineWithRootObject(
- IPipelineState* state, IShaderObject* rootObject)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->bindPipelineWithRootObject(getInnerObj(state), getInnerObj(rootObject));
-}
-
-void DebugRayTracingCommandEncoder::dispatchRays(
- GfxIndex rayGenShaderIndex,
- IShaderTable* shaderTable,
- GfxCount width,
- GfxCount height,
- GfxCount depth)
-{
- SLANG_GFX_API_FUNC;
- baseObject->dispatchRays(rayGenShaderIndex, getInnerObj(shaderTable), width, height, depth);
-}
-
-const ICommandQueue::Desc& DebugCommandQueue::getDesc()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getDesc();
-}
-
-void DebugCommandQueue::executeCommandBuffers(GfxCount count, ICommandBuffer* const* commandBuffers, IFence* fence, uint64_t valueToSignal)
-{
- SLANG_GFX_API_FUNC;
- List<ICommandBuffer*> innerCommandBuffers;
- for (GfxIndex i = 0; i < count; i++)
- {
- auto cmdBufferIn = commandBuffers[i];
- auto cmdBufferImpl = static_cast<DebugCommandBuffer*>(cmdBufferIn);
- auto innerCmdBuffer = cmdBufferImpl->baseObject.get();
- innerCommandBuffers.add(innerCmdBuffer);
- if (cmdBufferImpl->isOpen)
- {
- GFX_DIAGNOSE_ERROR_FORMAT(
- "Command buffer %lld is still open. A command buffer must be closed "
- "before submitting to a command queue.",
- cmdBufferImpl->uid);
- }
- if (i > 0)
- {
- if (cmdBufferImpl->m_transientHeap != getDebugObj(commandBuffers[0])->m_transientHeap)
- {
- GFX_DIAGNOSE_ERROR("Command buffers passed to a single executeCommandBuffers "
- "call must be allocated from the same transient heap.");
- }
- }
- }
- baseObject->executeCommandBuffers(count, innerCommandBuffers.getBuffer(), getInnerObj(fence), valueToSignal);
-}
-
-void DebugCommandQueue::waitOnHost()
-{
- SLANG_GFX_API_FUNC;
- baseObject->waitOnHost();
-}
-
-Result DebugCommandQueue::waitForFenceValuesOnDevice(
- GfxCount fenceCount, IFence** fences, uint64_t* waitValues)
-{
- SLANG_GFX_API_FUNC;
- List<IFence*> innerFences;
- for (GfxIndex i = 0; i < fenceCount; ++i)
- {
- innerFences.add(getInnerObj(fences[i]));
- }
- return baseObject->waitForFenceValuesOnDevice(fenceCount, innerFences.getBuffer(), waitValues);
-}
-
-Result DebugCommandQueue::getNativeHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getNativeHandle(outHandle);
-}
-
-Result DebugTransientResourceHeap::synchronizeAndReset()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->synchronizeAndReset();
-}
-
-Result DebugTransientResourceHeap::finish()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->finish();
-}
-
-Result DebugTransientResourceHeap::createCommandBuffer(ICommandBuffer** outCommandBuffer)
-{
- SLANG_GFX_API_FUNC;
- RefPtr<DebugCommandBuffer> outObject = new DebugCommandBuffer();
- outObject->m_transientHeap = this;
- auto result = baseObject->createCommandBuffer(outObject->baseObject.writeRef());
- if (SLANG_FAILED(result))
- return result;
- returnComPtr(outCommandBuffer, outObject);
- return result;
-}
-
-const ISwapchain::Desc& DebugSwapchain::getDesc()
-{
- SLANG_GFX_API_FUNC;
- desc = baseObject->getDesc();
- desc.queue = queue.Ptr();
- return desc;
-}
-
-Result DebugSwapchain::getImage(GfxIndex index, ITextureResource** outResource)
-{
- SLANG_GFX_API_FUNC;
- maybeRebuildImageList();
- if (index > (GfxCount)m_images.getCount())
- {
- GFX_DIAGNOSE_ERROR_FORMAT(
- "`index`(%d) must not exceed total number of images (%d) in the swapchain.",
- index,
- (uint32_t)m_images.getCount());
- }
- returnComPtr(outResource, m_images[index]);
- return SLANG_OK;
-}
-
-Result DebugSwapchain::present()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->present();
-}
-
-int DebugSwapchain::acquireNextImage()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->acquireNextImage();
-}
-
-Result DebugSwapchain::resize(GfxCount width, GfxCount height)
-{
- SLANG_GFX_API_FUNC;
- for (auto& image : m_images)
- {
- if (image->debugGetReferenceCount() != 1)
- {
- GFX_DIAGNOSE_ERROR("all swapchain images must be released before calling resize().");
- return SLANG_FAIL;
- }
- }
- m_images.clearAndDeallocate();
- return baseObject->resize(width, height);
-}
-
-bool DebugSwapchain::isOccluded()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->isOccluded();
-}
-
-Result DebugSwapchain::setFullScreenMode(bool mode)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setFullScreenMode(mode);
-}
-
-void DebugSwapchain::maybeRebuildImageList()
-{
- SLANG_GFX_API_FUNC;
- if (m_images.getCount() != 0)
- return;
- m_images.clearAndDeallocate();
- for (GfxIndex i = 0; i < baseObject->getDesc().imageCount; i++)
- {
- RefPtr<DebugTextureResource> image = new DebugTextureResource();
- baseObject->getImage(i, image->baseObject.writeRef());
- m_images.add(image);
- }
-}
-
-ShaderObjectContainerType DebugShaderObject::getContainerType()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getContainerType();
-}
-
-slang::TypeLayoutReflection* DebugShaderObject::getElementTypeLayout()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getElementTypeLayout();
-}
-
-GfxCount DebugShaderObject::getEntryPointCount()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getEntryPointCount();
-}
-
-Result DebugShaderObject::getEntryPoint(GfxIndex index, IShaderObject** entryPoint)
-{
- SLANG_GFX_API_FUNC;
- if (m_entryPoints.getCount() == 0)
- {
- for (GfxIndex i = 0; i < getEntryPointCount(); i++)
- {
- RefPtr<DebugShaderObject> entryPointObj = new DebugShaderObject();
- SLANG_RETURN_ON_FAIL(
- baseObject->getEntryPoint(i, entryPointObj->baseObject.writeRef()));
- m_entryPoints.add(entryPointObj);
- }
- }
- if (index > (GfxCount)m_entryPoints.getCount())
- {
- GFX_DIAGNOSE_ERROR("`index` must not exceed `entryPointCount`.");
- return SLANG_FAIL;
- }
- returnComPtr(entryPoint, m_entryPoints[index]);
- return SLANG_OK;
-}
-
-Result DebugShaderObject::setData(ShaderOffset const& offset, void const* data, Size size)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setData(offset, data, size);
-}
-
-Result DebugShaderObject::getObject(ShaderOffset const& offset, IShaderObject** object)
-{
- SLANG_GFX_API_FUNC;
-
- ComPtr<IShaderObject> innerObject;
- auto resultCode = baseObject->getObject(offset, innerObject.writeRef());
- SLANG_RETURN_ON_FAIL(resultCode);
- RefPtr<DebugShaderObject> debugShaderObject;
- if (m_objects.TryGetValue(ShaderOffsetKey{offset}, debugShaderObject))
- {
- if (debugShaderObject->baseObject == innerObject)
- {
- returnComPtr(object, debugShaderObject);
- return resultCode;
- }
- }
- debugShaderObject = new DebugShaderObject();
- debugShaderObject->baseObject = innerObject;
- debugShaderObject->m_typeName = innerObject->getElementTypeLayout()->getName();
- m_objects[ShaderOffsetKey{offset}] = debugShaderObject;
- returnComPtr(object, debugShaderObject);
- return resultCode;
-}
-
-Result DebugShaderObject::setObject(ShaderOffset const& offset, IShaderObject* object)
-{
- SLANG_GFX_API_FUNC;
- auto objectImpl = static_cast<DebugShaderObject*>(object);
- m_objects[ShaderOffsetKey{offset}] = objectImpl;
- return baseObject->setObject(offset, objectImpl->baseObject.get());
-}
-
-Result DebugShaderObject::setResource(ShaderOffset const& offset, IResourceView* resourceView)
-{
- SLANG_GFX_API_FUNC;
- auto viewImpl = static_cast<DebugResourceView*>(resourceView);
- m_resources[ShaderOffsetKey{offset}] = viewImpl;
- return baseObject->setResource(offset, viewImpl->baseObject.get());
-}
-
-Result DebugShaderObject::setSampler(ShaderOffset const& offset, ISamplerState* sampler)
-{
- SLANG_GFX_API_FUNC;
- auto samplerImpl = static_cast<DebugSamplerState*>(sampler);
- m_samplers[ShaderOffsetKey{offset}] = samplerImpl;
- return baseObject->setSampler(offset, samplerImpl->baseObject.get());
-}
-
-Result DebugShaderObject::setCombinedTextureSampler(
- ShaderOffset const& offset,
- IResourceView* textureView,
- ISamplerState* sampler)
-{
- SLANG_GFX_API_FUNC;
- auto samplerImpl = static_cast<DebugSamplerState*>(sampler);
- m_samplers[ShaderOffsetKey{offset}] = samplerImpl;
- auto viewImpl = static_cast<DebugResourceView*>(textureView);
- m_resources[ShaderOffsetKey{offset}] = viewImpl;
- return baseObject->setCombinedTextureSampler(
- offset, viewImpl->baseObject.get(), samplerImpl->baseObject.get());
-}
-
-Result DebugShaderObject::setSpecializationArgs(
- ShaderOffset const& offset,
- const slang::SpecializationArg* args,
- GfxCount count)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setSpecializationArgs(offset, args, count);
-}
-
-Result DebugShaderObject::getCurrentVersion(
- ITransientResourceHeap* transientHeap, IShaderObject** outObject)
-{
- SLANG_GFX_API_FUNC;
- ComPtr<IShaderObject> innerObject;
- SLANG_RETURN_ON_FAIL(baseObject->getCurrentVersion(getInnerObj(transientHeap), innerObject.writeRef()));
- RefPtr<DebugShaderObject> debugShaderObject = new DebugShaderObject();
- debugShaderObject->baseObject = innerObject;
- debugShaderObject->m_typeName = innerObject->getElementTypeLayout()->getName();
- returnComPtr(outObject, debugShaderObject);
- return SLANG_OK;
-}
-
-const void* DebugShaderObject::getRawData()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getRawData();
-}
-
-size_t DebugShaderObject::getSize()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getSize();
-}
-
-Result DebugShaderObject::setConstantBufferOverride(IBufferResource* constantBuffer)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setConstantBufferOverride(getInnerObj(constantBuffer));
-}
-
-DebugObjectBase::DebugObjectBase()
-{
- static uint64_t uidCounter = 0;
- uid = ++uidCounter;
-}
-
-Result DebugRootShaderObject::setSpecializationArgs(
- ShaderOffset const& offset,
- const slang::SpecializationArg* args,
- GfxCount count)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->setSpecializationArgs(offset, args, count);
-}
-
-void DebugRootShaderObject::reset()
-{
- m_entryPoints.clear();
- m_objects.Clear();
- m_resources.Clear();
- m_samplers.Clear();
- baseObject.detach();
-}
-
-Result DebugQueryPool::getResult(GfxIndex index, GfxCount count, uint64_t* data)
-{
- SLANG_GFX_API_FUNC;
-
- if (index < 0 || index + count > desc.count)
- GFX_DIAGNOSE_ERROR("index is out of bounds.");
- return baseObject->getResult(index, count, data);
-}
-
-Result DebugQueryPool::reset()
-{
- SLANG_GFX_API_FUNC;
- return baseObject->reset();
-}
-
-DeviceAddress DebugAccelerationStructure::getDeviceAddress()
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getDeviceAddress();
-}
-
-Result DebugAccelerationStructure::getNativeHandle(InteropHandle* outNativeHandle)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getNativeHandle(outNativeHandle);
-}
-
-IResourceView::Desc* DebugResourceView::getViewDesc()
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getViewDesc();
-}
-
-Result DebugResourceView::getNativeHandle(InteropHandle* outNativeHandle)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getNativeHandle(outNativeHandle);
-}
-
-Result DebugSamplerState::getNativeHandle(InteropHandle* outNativeHandle)
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getNativeHandle(outNativeHandle);
-}
-
-IResourceView::Desc* DebugAccelerationStructure::getViewDesc()
-{
- SLANG_GFX_API_FUNC;
-
- return baseObject->getViewDesc();
-}
-
-Result DebugFence::getSharedHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getSharedHandle(outHandle);
-}
-
-Result DebugFence::getNativeHandle(InteropHandle* outNativeHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getNativeHandle(outNativeHandle);
-}
-
-Result DebugFence::getCurrentValue(uint64_t* outValue)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getCurrentValue(outValue);
-}
-
-Result DebugFence::setCurrentValue(uint64_t value)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->setCurrentValue(value);
-}
-
-DebugShaderProgram::DebugShaderProgram(const IShaderProgram::Desc& desc)
-{
- m_slangProgram = desc.slangGlobalScope;
-}
-
-Result DebugPipelineState::getNativeHandle(InteropHandle* outHandle)
-{
- SLANG_GFX_API_FUNC;
- return baseObject->getNativeHandle(outHandle);
-}
-
-} // namespace gfx