From 8fe3f9cd7d664fc98e33cf276427390b42b9b468 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 4 Nov 2021 09:40:56 -0700 Subject: Add interface for new gfx features. (#2003) * Add interface for new gfx features. * Add cuda implementation. * Code review fixes. * Fix. Co-authored-by: Yong He --- tools/gfx/debug-layer.h | 63 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) (limited to 'tools/gfx/debug-layer.h') diff --git a/tools/gfx/debug-layer.h b/tools/gfx/debug-layer.h index aa56e5530..9be3aca20 100644 --- a/tools/gfx/debug-layer.h +++ b/tools/gfx/debug-layer.h @@ -44,6 +44,9 @@ public: virtual SLANG_NO_THROW bool SLANG_MCALL hasFeature(const char* feature) override; virtual SLANG_NO_THROW Result SLANG_MCALL getFeatures(const char** outFeatures, UInt bufferSize, UInt* outFeatureCount) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + getFormatSupportedResourceStates(Format format, ResourceStateSet* outStates) override; + virtual SLANG_NO_THROW Result SLANG_MCALL getSlangSession(slang::ISession** outSlangSession) override; virtual SLANG_NO_THROW Result SLANG_MCALL createTransientResourceHeap( @@ -99,6 +102,8 @@ public: slang::TypeReflection* type, ShaderObjectContainerType container, IShaderObject** outObject) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + createMutableRootShaderObject(IShaderProgram* program, IShaderObject** outObject) override; virtual SLANG_NO_THROW Result SLANG_MCALL createProgram(const IShaderProgram::Desc& desc, IShaderProgram** outProgram) override; virtual SLANG_NO_THROW Result SLANG_MCALL createGraphicsPipelineState( @@ -125,6 +130,10 @@ public: virtual SLANG_NO_THROW Result SLANG_MCALL createQueryPool( const IQueryPool::Desc& desc, IQueryPool** outPool) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + createFence(const IFence::Desc& desc, IFence** outFence) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + waitForFences(IFence** fences, uint32_t fenceCount, bool waitForAll, uint64_t timeout) override; }; class DebugQueryPool : public DebugObject @@ -149,6 +158,8 @@ public: virtual SLANG_NO_THROW Desc* SLANG_MCALL getDesc() override; virtual SLANG_NO_THROW DeviceAddress SLANG_MCALL getDeviceAddress() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; + virtual SLANG_NO_THROW Result SLANG_MCALL setDebugName(const char* name) override; + virtual SLANG_NO_THROW const char* SLANG_MCALL getDebugName() override; }; class DebugTextureResource : public DebugObject @@ -161,6 +172,8 @@ public: virtual SLANG_NO_THROW Type SLANG_MCALL getType() override; virtual SLANG_NO_THROW Desc* SLANG_MCALL getDesc() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; + virtual SLANG_NO_THROW Result SLANG_MCALL setDebugName(const char* name) override; + virtual SLANG_NO_THROW const char* SLANG_MCALL getDebugName() override; }; class DebugResourceView : public DebugObject @@ -276,7 +289,11 @@ public: virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipelineState* state, IShaderObject** outRootShaderObject) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + bindPipelineAndRootObject(IPipelineState* state, IShaderObject* rootObject) override; virtual SLANG_NO_THROW void SLANG_MCALL dispatchCompute(int x, int y, int z) override; + virtual SLANG_NO_THROW void SLANG_MCALL + dispatchComputeIndirect(IBufferResource* cmdBuffer, uint64_t offset) override; virtual SLANG_NO_THROW void SLANG_MCALL writeTimestamp(IQueryPool* pool, SlangInt index) override; public: @@ -290,6 +307,8 @@ public: virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipelineState* state, IShaderObject** outRootShaderObject) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + bindPipelineAndRootObject(IPipelineState* state, IShaderObject* rootObject) override; virtual SLANG_NO_THROW void SLANG_MCALL setViewports(uint32_t count, const Viewport* viewports) override; virtual SLANG_NO_THROW void SLANG_MCALL @@ -307,6 +326,18 @@ public: virtual SLANG_NO_THROW void SLANG_MCALL draw(UInt vertexCount, UInt startVertex = 0) override; virtual SLANG_NO_THROW void SLANG_MCALL drawIndexed(UInt indexCount, UInt startIndex = 0, UInt baseVertex = 0) override; + virtual SLANG_NO_THROW void SLANG_MCALL drawIndirect( + uint32_t maxDrawCount, + IBufferResource* argBuffer, + uint64_t argOffset, + IBufferResource* countBuffer, + uint64_t countOffset) override; + virtual SLANG_NO_THROW void SLANG_MCALL drawIndexedIndirect( + uint32_t maxDrawCount, + IBufferResource* argBuffer, + uint64_t argOffset, + IBufferResource* countBuffer, + uint64_t countOffset) override; virtual SLANG_NO_THROW void SLANG_MCALL setStencilReference(uint32_t referenceValue) override; virtual SLANG_NO_THROW void SLANG_MCALL writeTimestamp(IQueryPool* pool, SlangInt index) override; @@ -338,6 +369,23 @@ public: IBufferResource* const* buffers, ResourceState src, ResourceState dst) override; + virtual SLANG_NO_THROW void SLANG_MCALL copyTexture( + ITextureResource* dst, + ITextureResource::SubresourceRange dstSubresource, + ITextureResource::Offset3D dstOffset, + ITextureResource* src, + ITextureResource::SubresourceRange srcSubresource, + ITextureResource::Offset3D srcOffset, + ITextureResource::Size extent) override; + + virtual SLANG_NO_THROW void SLANG_MCALL uploadTextureData( + ITextureResource* dst, + ITextureResource::SubresourceRange subResourceRange, + ITextureResource::Offset3D offset, + ITextureResource::Offset3D extent, + ITextureResource::SubresourceData* subResourceData, + size_t subResourceDataCount) override; + public: DebugCommandBuffer* commandBuffer; bool isOpen = false; @@ -374,6 +422,8 @@ public: AccessFlag::Enum destAccess) override; virtual SLANG_NO_THROW void SLANG_MCALL bindPipeline(IPipelineState* state, IShaderObject** outRootObject) override; + virtual SLANG_NO_THROW void SLANG_MCALL + bindPipelineAndRootObject(IPipelineState* state, IShaderObject* rootObject) override; virtual SLANG_NO_THROW void SLANG_MCALL dispatchRays( const char* rayGenShaderName, int32_t width, @@ -385,6 +435,17 @@ public: bool isOpen = false; }; +class DebugFence : public DebugObject +{ +public: + SLANG_COM_OBJECT_IUNKNOWN_ALL; + IFence* getInterface(const Slang::Guid& guid); + virtual SLANG_NO_THROW FenceStatus SLANG_MCALL getStatus() override; + virtual SLANG_NO_THROW Result SLANG_MCALL reset() override; + virtual SLANG_NO_THROW Result SLANG_MCALL getSharedHandle(uint64_t* outHandle) override; + virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(void** outNativeHandle) override; +}; + class DebugTransientResourceHeap; class DebugCommandBuffer : public DebugObject @@ -434,7 +495,7 @@ public: ICommandQueue* getInterface(const Slang::Guid& guid); virtual SLANG_NO_THROW const Desc& SLANG_MCALL getDesc() override; virtual SLANG_NO_THROW void SLANG_MCALL - executeCommandBuffers(uint32_t count, ICommandBuffer* const* commandBuffers) override; + executeCommandBuffers(uint32_t count, ICommandBuffer* const* commandBuffers, IFence* fence) override; virtual SLANG_NO_THROW void SLANG_MCALL wait() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; }; -- cgit v1.2.3