diff --git a/CHANGELOG b/CHANGELOG index 7767351..1980589 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +- rename ICommandEncoder -> IPassEncoder, ICommandEncoder::endEncoding -> IPassEncoder::end +- rename IResourceCommandEncoder -> IResourcePassEncoder, ICommandBuffer::encodeResourceCommands -> ICommandBuffer::beginResourcePass +- rename IRenderCommandEncoder -> IRenderPassEncoder, ICommandBuffer::encodeRenderCommands -> ICommandBuffer::beginRenderPass +- rename IComputeCommandEncoder -> IComputePassEncoder, ICommandBuffer::encodeComputeCommands -> ICommandBuffer::beginComputePass +- rename IRayTracingCommandEncoder -> IRayTracingPassEncoder, ICommandBuffer::encodeRayTracingCommands -> ICommandBuffer::beginRayTracingPass - binding resources is now unified using the Binding struct that holds the type + resource of the binding - make all resources implement the IResource interface (buffers, textures, samplers, acceleration structures, etc.) - remove IResourceView and replace with ITextureView (for texture views) diff --git a/docs/api.md b/docs/api.md index a9e4620..ff9fdb4 100644 --- a/docs/api.md +++ b/docs/api.md @@ -90,11 +90,11 @@ | `getResult` | yes | yes | yes | yes | yes | :x: | :x: | | `reset` | yes | yes | yes | yes | yes | :x: | :x: | -## `ICommandEncoder` interface +## `IPassEncoder` interface | API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | |------------------------------|-----|------|-------|-------|--------|-------|------| -| `endEncoding` | yes | yes | yes | yes | yes | yes | yes | +| `end` | yes | yes | yes | yes | yes | yes | yes | | `setBufferState` | :x: | :x: | :x: | yes | yes | :x: | :x: | | `setTextureState` | :x: | :x: | :x: | yes | yes | :x: | :x: | | `setTextureSubresourceState` | :x: | :x: | :x: | yes | yes | :x: | :x: | @@ -102,7 +102,7 @@ | `endDebugEvent` | :x: | :x: | :x: | yes | yes | yes | :x: | | `writeTimestamp` | yes | yes | yes | yes | yes | yes | :x: | -## `IResourceCommandEncoder` interface +## `IResourcePassEncoder` interface | API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | |-----------------------|-----|------|-------|-------|--------|-------|------| @@ -115,7 +115,7 @@ | `clearTexture` | :x: | :x: | :x: | :x: | :x: | :x: | :x: | | `resolveQuery` | :x: | :x: | :x: | yes | yes | yes | :x: | -## `IRenderCommandEncoder` interface +## `IRenderPassEncoder` interface | API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | |------------------------------|-----|------|-------|-------|--------|-------|------| @@ -135,7 +135,7 @@ | `drawIndexedInstanced` | :x: | :x: | yes | yes | yes | yes | yes | | `drawMeshTasks` | :x: | :x: | :x: | yes | yes | :x: | :x: | -## `IComputeCommandEncoder` interface +## `IComputePassEncoder` interface | API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | |------------------------------|-----|------|-------|-------|--------|-------|------| @@ -144,7 +144,7 @@ | `dispatchCompute` | yes | yes | yes | yes | yes | yes | yes | | `dispatchComputeIndirect` | :x: | :x: | :x: | yes | :x: | :x: | yes | -## `IRayTracingCommandEncoder` interface +## `IRayTracingPassEncoder` interface | API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | |----------------------------------------|-----|------|-------|-------|--------|-------|------| @@ -159,14 +159,14 @@ ## `ICommandBuffer` interface -| API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | -|----------------------------|-----|------|-------|-------|--------|-------|------| -| `encodeResourceCommands` | yes | yes | yes | yes | yes | yes | yes | -| `encodeRenderCommands` | :x: | :x: | yes | yes | yes | yes | yes | -| `encodeComputeCommands` | yes | yes | yes | yes | yes | :x: | yes | -| `encodeRayTracingCommands` | :x: | :x: | :x: | yes | yes | :x: | :x: | -| `close` | yes | yes | yes | yes | yes | yes | yes | -| `getNativeHandle` | :x: | :x: | :x: | yes | yes | yes | yes | +| API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | +|-----------------------|-----|------|-------|-------|--------|-------|------| +| `beginResourcePass` | yes | yes | yes | yes | yes | yes | yes | +| `beginRenderPass` | :x: | :x: | yes | yes | yes | yes | yes | +| `beginComputePass` | yes | yes | yes | yes | yes | :x: | yes | +| `beginRayTracingPass` | :x: | :x: | :x: | yes | yes | :x: | :x: | +| `close` | yes | yes | yes | yes | yes | yes | yes | +| `getNativeHandle` | :x: | :x: | :x: | yes | yes | yes | yes | ## `ICommandQueue` interface @@ -189,10 +189,3 @@ | `resize` | :x: | :x: | yes | yes | yes | yes | :x: | | `isOccluded` | :x: | :x: | :x: | yes | :x: | :x: | :x: | | `setFullScreenMode` | :x: | :x: | :x: | yes | :x: | :x: | :x: | - - - - -| API | CPU | CUDA | D3D11 | D3D12 | Vulkan | Metal | WGPU | -|---------------|-----|------|-------|-------|--------|-------|------| -| `endEncoding` | :x: | :x: | :x: | :x: | :x: | :x: | :x: | diff --git a/include/slang-rhi.h b/include/slang-rhi.h index 194b7ea..be2c4f2 100644 --- a/include/slang-rhi.h +++ b/include/slang-rhi.h @@ -1535,12 +1535,12 @@ struct SamplePosition int8_t y; }; -class ICommandEncoder : public ISlangUnknown +class IPassEncoder : public ISlangUnknown { SLANG_COM_INTERFACE(0xb7483513, 0x8939, 0x4bdf, {0x81, 0x2c, 0xc3, 0xe5, 0xb0, 0xde, 0xdc, 0x8e}); public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() = 0; + virtual SLANG_NO_THROW void SLANG_MCALL end() = 0; virtual SLANG_NO_THROW void SLANG_MCALL setBufferState(IBuffer* buffer, ResourceState state) = 0; @@ -1558,7 +1558,7 @@ class ICommandEncoder : public ISlangUnknown virtual SLANG_NO_THROW void SLANG_MCALL writeTimestamp(IQueryPool* queryPool, GfxIndex queryIndex) = 0; }; -class IResourceCommandEncoder : public ICommandEncoder +class IResourcePassEncoder : public IPassEncoder { SLANG_COM_INTERFACE(0x9107510b, 0x75a7, 0x4e2f, {0x8d, 0x00, 0x58, 0xfd, 0x22, 0x48, 0xcd, 0x0d}); @@ -1622,7 +1622,7 @@ class IResourceCommandEncoder : public ICommandEncoder resolveQuery(IQueryPool* queryPool, GfxIndex index, GfxCount count, IBuffer* buffer, Offset offset) = 0; }; -class IRenderCommandEncoder : public ICommandEncoder +class IRenderPassEncoder : public IPassEncoder { SLANG_COM_INTERFACE(0xa2be110e, 0xaed7, 0x43b6, {0x90, 0x01, 0x77, 0x79, 0x1f, 0xea, 0x1d, 0x40}); @@ -1714,7 +1714,7 @@ class IRenderCommandEncoder : public ICommandEncoder virtual SLANG_NO_THROW Result SLANG_MCALL drawMeshTasks(int x, int y, int z) = 0; }; -class IComputeCommandEncoder : public ICommandEncoder +class IComputePassEncoder : public IPassEncoder { SLANG_COM_INTERFACE(0x46261132, 0xa7f6, 0x439b, {0x82, 0x6b, 0x1e, 0xaf, 0xf2, 0xae, 0xae, 0xa6}); @@ -1757,7 +1757,7 @@ struct AccelerationStructureQueryDesc GfxIndex firstQueryIndex; }; -class IRayTracingCommandEncoder : public ICommandEncoder +class IRayTracingPassEncoder : public IPassEncoder { SLANG_COM_INTERFACE(0xef4f6545, 0x1f5d, 0x4b9a, {0x9e, 0x72, 0x4d, 0x03, 0x3f, 0xf0, 0x09, 0x1d}); @@ -1811,46 +1811,46 @@ class ICommandBuffer : public ISlangUnknown SLANG_COM_INTERFACE(0x8ee39d55, 0x2b07, 0x4e61, {0x8f, 0x13, 0x1d, 0x6c, 0x01, 0xa9, 0x15, 0x43}); public: - // Only one encoder may be open at a time. User must call `ICommandEncoder::endEncoding` - // before calling other `encode*Commands` methods. - // Once `endEncoding` is called, the `ICommandEncoder` object becomes obsolete and is - // invalid for further use. To continue recording, the user must request a new encoder - // object by calling one of the `encode*Commands` methods again. + // Only one pass encoder may be open at a time. User must call `IPassEncoder::endEncoding` + // before calling other `begin*Pass` methods. + // Once `end` is called, the `IPassEncoder` object becomes obsolete and is + // invalid for further use. To continue recording, the user must request a new pass encoder + // object by calling one of the `begin*Pass` methods again. - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) = 0; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) = 0; - inline IResourceCommandEncoder* encodeResourceCommands() + inline IResourcePassEncoder* beginResourcePass() { - IResourceCommandEncoder* encoder; - SLANG_RETURN_NULL_ON_FAIL(encodeResourceCommands(&encoder)); + IResourcePassEncoder* encoder; + SLANG_RETURN_NULL_ON_FAIL(beginResourcePass(&encoder)); return encoder; } virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) = 0; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) = 0; - inline IRenderCommandEncoder* encodeRenderCommands(const RenderPassDesc& desc) + inline IRenderPassEncoder* beginRenderPass(const RenderPassDesc& desc) { - IRenderCommandEncoder* encoder; - SLANG_RETURN_NULL_ON_FAIL(encodeRenderCommands(desc, &encoder)); + IRenderPassEncoder* encoder; + SLANG_RETURN_NULL_ON_FAIL(beginRenderPass(desc, &encoder)); return encoder; } - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) = 0; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) = 0; - inline IComputeCommandEncoder* encodeComputeCommands() + inline IComputePassEncoder* beginComputePass() { - IComputeCommandEncoder* encoder; - SLANG_RETURN_NULL_ON_FAIL(encodeComputeCommands(&encoder)); + IComputePassEncoder* encoder; + SLANG_RETURN_NULL_ON_FAIL(beginComputePass(&encoder)); return encoder; } - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) = 0; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) = 0; - inline IRayTracingCommandEncoder* encodeRayTracingCommands() + inline IRayTracingPassEncoder* beginRayTracingPass() { - IRayTracingCommandEncoder* encoder; - SLANG_RETURN_NULL_ON_FAIL(encodeRayTracingCommands(&encoder)); + IRayTracingPassEncoder* encoder; + SLANG_RETURN_NULL_ON_FAIL(beginRayTracingPass(&encoder)); return encoder; } diff --git a/src/cuda/cuda-base.h b/src/cuda/cuda-base.h index a022080..17a0d32 100644 --- a/src/cuda/cuda-base.h +++ b/src/cuda/cuda-base.h @@ -2,7 +2,7 @@ #include "cuda-api.h" -#include "../command-encoder-com-forward.h" +#include "../pass-encoder-com-forward.h" #include "../command-writer.h" #include "../mutable-shader-object.h" #include "../rhi-shared.h" @@ -44,9 +44,9 @@ class PipelineImpl; class QueryPoolImpl; class DeviceImpl; class CommandBufferImpl; -class CommandEncoderImpl; -class ResourceCommandEncoderImpl; -class ComputeCommandEncoderImpl; +class PassEncoderImpl; +class ResourcePassEncoderImpl; +class ComputePassEncoderImpl; class CommandQueueImpl; } // namespace rhi::cuda diff --git a/src/cuda/cuda-command-buffer.cpp b/src/cuda/cuda-command-buffer.cpp index dca92c1..95ae1e9 100644 --- a/src/cuda/cuda-command-buffer.cpp +++ b/src/cuda/cuda-command-buffer.cpp @@ -15,28 +15,28 @@ void CommandBufferImpl::init(DeviceImpl* device, TransientResourceHeap* transien m_transientHeap = transientHeap; } -Result CommandBufferImpl::encodeResourceCommands(IResourceCommandEncoder** outEncoder) +Result CommandBufferImpl::beginResourcePass(IResourcePassEncoder** outEncoder) { - m_resourceCommandEncoder.init(this); - *outEncoder = &m_resourceCommandEncoder; + m_resourcePassEncoder.init(this); + *outEncoder = &m_resourcePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) { SLANG_UNUSED(desc); *outEncoder = nullptr; return SLANG_E_NOT_AVAILABLE; } -Result CommandBufferImpl::encodeComputeCommands(IComputeCommandEncoder** outEncoder) +Result CommandBufferImpl::beginComputePass(IComputePassEncoder** outEncoder) { - m_computeCommandEncoder.init(this); - *outEncoder = &m_computeCommandEncoder; + m_computePassEncoder.init(this); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRayTracingPass(IRayTracingPassEncoder** outEncoder) { *outEncoder = nullptr; return SLANG_E_NOT_AVAILABLE; diff --git a/src/cuda/cuda-command-buffer.h b/src/cuda/cuda-command-buffer.h index 3394af9..bd0fa23 100644 --- a/src/cuda/cuda-command-buffer.h +++ b/src/cuda/cuda-command-buffer.h @@ -14,16 +14,16 @@ class CommandBufferImpl : public ICommandBuffer, public CommandWriter, public Co public: DeviceImpl* m_device; TransientResourceHeap* m_transientHeap; - ResourceCommandEncoderImpl m_resourceCommandEncoder; - ComputeCommandEncoderImpl m_computeCommandEncoder; + ResourcePassEncoderImpl m_resourcePassEncoder; + ComputePassEncoderImpl m_computePassEncoder; void init(DeviceImpl* device, TransientResourceHeap* transientHeap); - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) override; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override; virtual SLANG_NO_THROW void SLANG_MCALL close() override {} diff --git a/src/cuda/cuda-command-encoder.cpp b/src/cuda/cuda-command-encoder.cpp index 97de034..a0e424e 100644 --- a/src/cuda/cuda-command-encoder.cpp +++ b/src/cuda/cuda-command-encoder.cpp @@ -4,52 +4,52 @@ namespace rhi::cuda { -// CommandEncoderImpl +// PassEncoderImpl -void CommandEncoderImpl::init(CommandBufferImpl* cmdBuffer) +void PassEncoderImpl::init(CommandBufferImpl* cmdBuffer) { m_writer = cmdBuffer; } -void CommandEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) +void PassEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) { SLANG_UNUSED(buffer); SLANG_UNUSED(state); } -void CommandEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) +void PassEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) { SLANG_UNUSED(texture); SLANG_UNUSED(subresourceRange); SLANG_UNUSED(state); } -void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) +void PassEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) { SLANG_UNUSED(name); SLANG_UNUSED(rgbColor); } -void CommandEncoderImpl::endDebugEvent() {} +void PassEncoderImpl::endDebugEvent() {} -void CommandEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index) +void PassEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index) { m_writer->writeTimestamp(pool, index); } -// ResourceCommandEncoderImpl +// ResourcePassEncoderImpl -void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) +void ResourcePassEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) { m_writer->copyBuffer(dst, dstOffset, src, srcOffset, size); } -void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) +void ResourcePassEncoderImpl::uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) { m_writer->uploadBufferData(dst, offset, size, data); } -void ResourceCommandEncoderImpl::copyTexture( +void ResourcePassEncoderImpl::copyTexture( ITexture* dst, SubresourceRange dstSubresource, Offset3D dstOffset, @@ -69,7 +69,7 @@ void ResourceCommandEncoderImpl::copyTexture( SLANG_RHI_UNIMPLEMENTED("copyTexture"); } -void ResourceCommandEncoderImpl::uploadTextureData( +void ResourcePassEncoderImpl::uploadTextureData( ITexture* dst, SubresourceRange subresourceRange, Offset3D offset, @@ -87,14 +87,14 @@ void ResourceCommandEncoderImpl::uploadTextureData( SLANG_RHI_UNIMPLEMENTED("uploadTextureData"); } -void ResourceCommandEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) +void ResourcePassEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) { SLANG_UNUSED(buffer); SLANG_UNUSED(range); SLANG_RHI_UNIMPLEMENTED("clearBuffer"); } -void ResourceCommandEncoderImpl::clearTexture( +void ResourcePassEncoderImpl::clearTexture( ITexture* texture, const ClearValue& clearValue, const SubresourceRange* subresourceRange, @@ -110,7 +110,7 @@ void ResourceCommandEncoderImpl::clearTexture( SLANG_RHI_UNIMPLEMENTED("clearBuffer"); } -void ResourceCommandEncoderImpl::resolveQuery( +void ResourcePassEncoderImpl::resolveQuery( IQueryPool* queryPool, GfxIndex index, GfxCount count, @@ -126,7 +126,7 @@ void ResourceCommandEncoderImpl::resolveQuery( SLANG_RHI_UNIMPLEMENTED("resolveQuery"); } -void ResourceCommandEncoderImpl::copyTextureToBuffer( +void ResourcePassEncoderImpl::copyTextureToBuffer( IBuffer* dst, Offset dstOffset, Size dstSize, @@ -148,15 +148,15 @@ void ResourceCommandEncoderImpl::copyTextureToBuffer( SLANG_RHI_UNIMPLEMENTED("copyTextureToBuffer"); } -// ComputeCommandEncoderImpl +// ComputePassEncoderImpl -void ComputeCommandEncoderImpl::init(CommandBufferImpl* cmdBuffer) +void ComputePassEncoderImpl::init(CommandBufferImpl* cmdBuffer) { m_writer = cmdBuffer; m_commandBuffer = cmdBuffer; } -Result ComputeCommandEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) +Result ComputePassEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) { m_writer->setPipeline(state); Pipeline* pipelineImpl = static_cast(state); @@ -167,7 +167,7 @@ Result ComputeCommandEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** return SLANG_OK; } -Result ComputeCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) +Result ComputePassEncoderImpl::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) { m_writer->setPipeline(state); Pipeline* pipelineImpl = static_cast(state); @@ -178,14 +178,14 @@ Result ComputeCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* state, I return SLANG_OK; } -Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) +Result ComputePassEncoderImpl::dispatchCompute(int x, int y, int z) { m_writer->bindRootShaderObject(m_rootObject); m_writer->dispatchCompute(x, y, z); return SLANG_OK; } -Result ComputeCommandEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) +Result ComputePassEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) { SLANG_RHI_UNIMPLEMENTED("dispatchComputeIndirect"); } diff --git a/src/cuda/cuda-command-encoder.h b/src/cuda/cuda-command-encoder.h index 0ac0b89..12dfb43 100644 --- a/src/cuda/cuda-command-encoder.h +++ b/src/cuda/cuda-command-encoder.h @@ -4,14 +4,14 @@ namespace rhi::cuda { -class CommandEncoderImpl : public ICommandEncoder +class PassEncoderImpl : public IPassEncoder { public: CommandWriter* m_writer; virtual void* getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_ICommandEncoder || uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } @@ -43,21 +43,21 @@ class CommandEncoderImpl : public ICommandEncoder virtual SLANG_NO_THROW void SLANG_MCALL writeTimestamp(IQueryPool* pool, GfxIndex index) override; }; -class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public CommandEncoderImpl +class ResourcePassEncoderImpl : public IResourcePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IResourceCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IResourcePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override {} + virtual SLANG_NO_THROW void SLANG_MCALL end() override {} virtual SLANG_NO_THROW void SLANG_MCALL uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) override; @@ -109,14 +109,14 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman ) override; }; -class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandEncoderImpl +class ComputePassEncoderImpl : public IComputePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IComputeCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IComputePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; @@ -129,7 +129,7 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandE void init(CommandBufferImpl* cmdBuffer); - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override {} + virtual SLANG_NO_THROW void SLANG_MCALL end() override {} virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* state, IShaderObject** outRootObject) override; diff --git a/src/d3d12/d3d12-base.h b/src/d3d12/d3d12-base.h index dfafba0..1ca3def 100644 --- a/src/d3d12/d3d12-base.h +++ b/src/d3d12/d3d12-base.h @@ -1,6 +1,6 @@ #pragma once -#include "../command-encoder-com-forward.h" +#include "../pass-encoder-com-forward.h" #include "../d3d/d3d-swapchain.h" #include "../mutable-shader-object.h" #include "../rhi-shared.h" @@ -41,10 +41,10 @@ class BufferImpl; class TextureImpl; class TextureViewImpl; class CommandBufferImpl; -class CommandEncoderImpl; -class ResourceCommandEncoderImpl; -class RenderCommandEncoderImpl; -class ComputeCommandEncoderImpl; +class PassEncoderImpl; +class ResourcePassEncoderImpl; +class RenderPassEncoderImpl; +class ComputePassEncoderImpl; class CommandQueueImpl; class FenceImpl; class QueryPoolImpl; @@ -64,7 +64,7 @@ class TransientResourceHeapImpl; class InputLayoutImpl; #if SLANG_RHI_DXR -class RayTracingCommandEncoderImpl; +class RayTracingPassEncoderImpl; class RayTracingPipelineImpl; #endif diff --git a/src/d3d12/d3d12-command-buffer.cpp b/src/d3d12/d3d12-command-buffer.cpp index 563c11e..2546a5f 100644 --- a/src/d3d12/d3d12-command-buffer.cpp +++ b/src/d3d12/d3d12-command-buffer.cpp @@ -168,32 +168,32 @@ void CommandBufferImpl::init( m_cmdList->QueryInterface(m_cmdList1.writeRef()); } -Result CommandBufferImpl::encodeResourceCommands(IResourceCommandEncoder** outEncoder) +Result CommandBufferImpl::beginResourcePass(IResourcePassEncoder** outEncoder) { - m_resourceCommandEncoder.init(this); - *outEncoder = &m_resourceCommandEncoder; + m_resourcePassEncoder.init(this); + *outEncoder = &m_resourcePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) { - m_renderCommandEncoder.init(m_device, m_transientHeap, this, desc); - *outEncoder = &m_renderCommandEncoder; + m_renderPassEncoder.init(m_device, m_transientHeap, this, desc); + *outEncoder = &m_renderPassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeComputeCommands(IComputeCommandEncoder** outEncoder) +Result CommandBufferImpl::beginComputePass(IComputePassEncoder** outEncoder) { - m_computeCommandEncoder.init(m_device, m_transientHeap, this); - *outEncoder = &m_computeCommandEncoder; + m_computePassEncoder.init(m_device, m_transientHeap, this); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRayTracingPass(IRayTracingPassEncoder** outEncoder) { #if SLANG_RHI_DXR - m_rayTracingCommandEncoder.init(this); - *outEncoder = &m_rayTracingCommandEncoder; + m_rayTracingPassEncoder.init(this); + *outEncoder = &m_rayTracingPassEncoder; return SLANG_OK; #else *outEncoder = nullptr; diff --git a/src/d3d12/d3d12-command-buffer.h b/src/d3d12/d3d12-command-buffer.h index be09bd1..00b973d 100644 --- a/src/d3d12/d3d12-command-buffer.h +++ b/src/d3d12/d3d12-command-buffer.h @@ -59,24 +59,24 @@ class CommandBufferImpl : public ICommandBufferD3D12, public ComObject void init(DeviceImpl* device, ID3D12GraphicsCommandList* d3dCommandList, TransientResourceHeapImpl* transientHeap); - ResourceCommandEncoderImpl m_resourceCommandEncoder; + ResourcePassEncoderImpl m_resourcePassEncoder; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) override; - RenderCommandEncoderImpl m_renderCommandEncoder; + RenderPassEncoderImpl m_renderPassEncoder; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override; - ComputeCommandEncoderImpl m_computeCommandEncoder; + ComputePassEncoderImpl m_computePassEncoder; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override; #if SLANG_RHI_DXR - RayTracingCommandEncoderImpl m_rayTracingCommandEncoder; + RayTracingPassEncoderImpl m_rayTracingPassEncoder; #endif - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override; virtual SLANG_NO_THROW void SLANG_MCALL close() override; }; diff --git a/src/d3d12/d3d12-command-encoder.cpp b/src/d3d12/d3d12-command-encoder.cpp index d1bf262..f387aba 100644 --- a/src/d3d12/d3d12-command-encoder.cpp +++ b/src/d3d12/d3d12-command-encoder.cpp @@ -17,19 +17,19 @@ namespace rhi::d3d12 { -// CommandEncoderImpl +// PassEncoderImpl -void CommandEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) +void PassEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) { m_commandBuffer->m_stateTracking.setBufferState(static_cast(buffer), state); } -void CommandEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) +void PassEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) { m_commandBuffer->m_stateTracking.setTextureState(static_cast(texture), subresourceRange, state); } -void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) +void PassEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) { auto beginEvent = m_commandBuffer->m_device->m_BeginEventOnCommandList; if (beginEvent) @@ -43,7 +43,7 @@ void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) } } -void CommandEncoderImpl::endDebugEvent() +void PassEncoderImpl::endDebugEvent() { auto endEvent = m_commandBuffer->m_device->m_EndEventOnCommandList; if (endEvent) @@ -52,13 +52,13 @@ void CommandEncoderImpl::endDebugEvent() } } -void CommandEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index) +void PassEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index) { static_cast(pool)->writeTimestamp(m_commandBuffer->m_cmdList, index); } -int CommandEncoderImpl::getBindPointIndex(PipelineType type) +int PassEncoderImpl::getBindPointIndex(PipelineType type) { switch (type) { @@ -74,7 +74,7 @@ int CommandEncoderImpl::getBindPointIndex(PipelineType type) } } -void CommandEncoderImpl::init(CommandBufferImpl* commandBuffer) +void PassEncoderImpl::init(CommandBufferImpl* commandBuffer) { m_commandBuffer = commandBuffer; m_d3dCmdList = m_commandBuffer->m_cmdList; @@ -84,7 +84,7 @@ void CommandEncoderImpl::init(CommandBufferImpl* commandBuffer) m_d3dDevice = commandBuffer->m_device->m_device; } -Result CommandEncoderImpl::bindPipelineImpl(IPipeline* pipeline, IShaderObject** outRootObject) +Result PassEncoderImpl::bindPipelineImpl(IPipeline* pipeline, IShaderObject** outRootObject) { m_currentPipeline = static_cast(pipeline); auto rootObject = &m_commandBuffer->m_rootShaderObject; @@ -99,7 +99,7 @@ Result CommandEncoderImpl::bindPipelineImpl(IPipeline* pipeline, IShaderObject** return SLANG_OK; } -Result CommandEncoderImpl::bindPipelineWithRootObjectImpl(IPipeline* pipeline, IShaderObject* rootObject) +Result PassEncoderImpl::bindPipelineWithRootObjectImpl(IPipeline* pipeline, IShaderObject* rootObject) { m_currentPipeline = static_cast(pipeline); m_commandBuffer->m_mutableRootShaderObject = static_cast(rootObject); @@ -107,7 +107,7 @@ Result CommandEncoderImpl::bindPipelineWithRootObjectImpl(IPipeline* pipeline, I return SLANG_OK; } -Result CommandEncoderImpl::_bindRenderState(Submitter* submitter, RefPtr& newPipeline) +Result PassEncoderImpl::_bindRenderState(Submitter* submitter, RefPtr& newPipeline) { RootShaderObjectImpl* rootObjectImpl = m_commandBuffer->m_mutableRootShaderObject ? m_commandBuffer->m_mutableRootShaderObject.Ptr() @@ -179,9 +179,9 @@ Result CommandEncoderImpl::_bindRenderState(Submitter* submitter, RefPtr(dst); BufferImpl* srcBuffer = static_cast(src); @@ -647,7 +647,7 @@ void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuf ); } -void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) +void ResourcePassEncoderImpl::uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) { BufferImpl* dstBuffer = static_cast(dst); @@ -665,16 +665,16 @@ void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* dst, Offset offset, S ); } -// RenderCommandEncoderImpl +// RenderPassEncoderImpl -void RenderCommandEncoderImpl::init( +void RenderPassEncoderImpl::init( DeviceImpl* device, TransientResourceHeapImpl* transientHeap, CommandBufferImpl* cmdBuffer, const RenderPassDesc& desc ) { - CommandEncoderImpl::init(cmdBuffer); + PassEncoderImpl::init(cmdBuffer); m_preCmdList = nullptr; m_transientHeap = transientHeap; m_boundVertexBuffers.clear(); @@ -752,17 +752,17 @@ void RenderCommandEncoderImpl::init( } } -Result RenderCommandEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) +Result RenderPassEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) { return bindPipelineImpl(state, outRootObject); } -Result RenderCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) +Result RenderPassEncoderImpl::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) { return bindPipelineWithRootObjectImpl(state, rootObject); } -void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) +void RenderPassEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) { static const int kMaxViewports = D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE; SLANG_RHI_ASSERT(count <= kMaxViewports && count <= kMaxRTVCount); @@ -781,7 +781,7 @@ void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* view m_d3dCmdList->RSSetViewports(UINT(count), m_viewports); } -void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) +void RenderPassEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) { static const int kMaxScissorRects = D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE; SLANG_RHI_ASSERT(count <= kMaxScissorRects && count <= kMaxRTVCount); @@ -800,7 +800,7 @@ void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect m_d3dCmdList->RSSetScissorRects(UINT(count), m_scissorRects); } -void RenderCommandEncoderImpl::setVertexBuffers( +void RenderPassEncoderImpl::setVertexBuffers( GfxIndex startSlot, GfxCount slotCount, IBuffer* const* buffers, @@ -823,14 +823,14 @@ void RenderCommandEncoderImpl::setVertexBuffers( } } -void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) +void RenderPassEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) { m_boundIndexBuffer = static_cast(buffer); m_boundIndexFormat = D3DUtil::getIndexFormat(indexFormat); m_boundIndexOffset = (UINT)offset; } -Result RenderCommandEncoderImpl::prepareDraw() +Result RenderPassEncoderImpl::prepareDraw() { Pipeline* pipeline = m_currentPipeline.get(); if (!pipeline || (pipeline->desc.type != PipelineType::Graphics)) @@ -897,21 +897,21 @@ Result RenderCommandEncoderImpl::prepareDraw() return SLANG_OK; } -Result RenderCommandEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) +Result RenderPassEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) { SLANG_RETURN_ON_FAIL(prepareDraw()); m_d3dCmdList->DrawInstanced((uint32_t)vertexCount, 1, (uint32_t)startVertex, 0); return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) +Result RenderPassEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) { SLANG_RETURN_ON_FAIL(prepareDraw()); m_d3dCmdList->DrawIndexedInstanced((uint32_t)indexCount, 1, (uint32_t)startIndex, (uint32_t)baseVertex, 0); return SLANG_OK; } -void RenderCommandEncoderImpl::endEncoding() +void RenderPassEncoderImpl::end() { bool needsResolve = false; for (size_t i = 0; i < m_renderTargetViews.size(); ++i) @@ -958,15 +958,15 @@ void RenderCommandEncoderImpl::endEncoding() m_resolveTargetViews.clear(); m_depthStencilView = nullptr; - CommandEncoderImpl::endEncodingImpl(); + PassEncoderImpl::endEncodingImpl(); } -void RenderCommandEncoderImpl::setStencilReference(uint32_t referenceValue) +void RenderPassEncoderImpl::setStencilReference(uint32_t referenceValue) { m_d3dCmdList->OMSetStencilRef((UINT)referenceValue); } -Result RenderCommandEncoderImpl::drawIndirect( +Result RenderPassEncoderImpl::drawIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -996,7 +996,7 @@ Result RenderCommandEncoderImpl::drawIndirect( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexedIndirect( +Result RenderPassEncoderImpl::drawIndexedIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -1027,7 +1027,7 @@ Result RenderCommandEncoderImpl::drawIndexedIndirect( return SLANG_OK; } -Result RenderCommandEncoderImpl::setSamplePositions( +Result RenderPassEncoderImpl::setSamplePositions( GfxCount samplesPerPixel, GfxCount pixelCount, const SamplePosition* samplePositions @@ -1045,7 +1045,7 @@ Result RenderCommandEncoderImpl::setSamplePositions( return SLANG_E_NOT_AVAILABLE; } -Result RenderCommandEncoderImpl::drawInstanced( +Result RenderPassEncoderImpl::drawInstanced( GfxCount vertexCount, GfxCount instanceCount, GfxIndex startVertex, @@ -1062,7 +1062,7 @@ Result RenderCommandEncoderImpl::drawInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexedInstanced( +Result RenderPassEncoderImpl::drawIndexedInstanced( GfxCount indexCount, GfxCount instanceCount, GfxIndex startIndexLocation, @@ -1081,43 +1081,43 @@ Result RenderCommandEncoderImpl::drawIndexedInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawMeshTasks(int x, int y, int z) +Result RenderPassEncoderImpl::drawMeshTasks(int x, int y, int z) { SLANG_RETURN_ON_FAIL(prepareDraw()); m_d3dCmdList6->DispatchMesh(x, y, z); return SLANG_OK; } -// ComputeCommandEncoderImpl +// ComputePassEncoderImpl -void ComputeCommandEncoderImpl::endEncoding() +void ComputePassEncoderImpl::end() { - CommandEncoderImpl::endEncodingImpl(); + PassEncoderImpl::endEncodingImpl(); } -void ComputeCommandEncoderImpl::init( +void ComputePassEncoderImpl::init( DeviceImpl* device, TransientResourceHeapImpl* transientHeap, CommandBufferImpl* cmdBuffer ) { - CommandEncoderImpl::init(cmdBuffer); + PassEncoderImpl::init(cmdBuffer); m_preCmdList = nullptr; m_transientHeap = transientHeap; m_currentPipeline = nullptr; } -Result ComputeCommandEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) +Result ComputePassEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) { return bindPipelineImpl(state, outRootObject); } -Result ComputeCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) +Result ComputePassEncoderImpl::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) { return bindPipelineWithRootObjectImpl(state, rootObject); } -Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) +Result ComputePassEncoderImpl::dispatchCompute(int x, int y, int z) { // Submit binding for compute { @@ -1129,7 +1129,7 @@ Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) return SLANG_OK; } -Result ComputeCommandEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) +Result ComputePassEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) { // Submit binding for compute { @@ -1156,9 +1156,9 @@ Result ComputeCommandEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Of #if SLANG_RHI_DXR -// RayTracingCommandEncoderImpl +// RayTracingPassEncoderImpl -void RayTracingCommandEncoderImpl::buildAccelerationStructure( +void RayTracingPassEncoderImpl::buildAccelerationStructure( const AccelerationStructureBuildDesc& desc, IAccelerationStructure* dst, IAccelerationStructure* src, @@ -1193,7 +1193,7 @@ void RayTracingCommandEncoderImpl::buildAccelerationStructure( ->BuildRaytracingAccelerationStructure(&buildDesc, (UINT)propertyQueryCount, postBuildInfoDescs.data()); } -void RayTracingCommandEncoderImpl::copyAccelerationStructure( +void RayTracingPassEncoderImpl::copyAccelerationStructure( IAccelerationStructure* dst, IAccelerationStructure* src, AccelerationStructureCopyMode mode @@ -1222,7 +1222,7 @@ void RayTracingCommandEncoderImpl::copyAccelerationStructure( ->CopyRaytracingAccelerationStructure(dstImpl->getDeviceAddress(), srcImpl->getDeviceAddress(), copyMode); } -void RayTracingCommandEncoderImpl::queryAccelerationStructureProperties( +void RayTracingPassEncoderImpl::queryAccelerationStructureProperties( GfxCount accelerationStructureCount, IAccelerationStructure* const* accelerationStructures, GfxCount queryCount, @@ -1242,7 +1242,7 @@ void RayTracingCommandEncoderImpl::queryAccelerationStructureProperties( ); } -void RayTracingCommandEncoderImpl::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) +void RayTracingPassEncoderImpl::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) { auto srcImpl = static_cast(src); m_commandBuffer->m_cmdList4->CopyRaytracingAccelerationStructure( @@ -1252,7 +1252,7 @@ void RayTracingCommandEncoderImpl::serializeAccelerationStructure(BufferWithOffs ); } -void RayTracingCommandEncoderImpl::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) +void RayTracingPassEncoderImpl::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) { auto dstImpl = static_cast(dst); m_commandBuffer->m_cmdList4->CopyRaytracingAccelerationStructure( @@ -1262,12 +1262,12 @@ void RayTracingCommandEncoderImpl::deserializeAccelerationStructure(IAcceleratio ); } -Result RayTracingCommandEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) +Result RayTracingPassEncoderImpl::bindPipeline(IPipeline* state, IShaderObject** outRootObject) { return bindPipelineImpl(state, outRootObject); } -Result RayTracingCommandEncoderImpl::dispatchRays( +Result RayTracingPassEncoderImpl::dispatchRays( GfxIndex rayGenShaderIndex, IShaderTable* shaderTable, GfxCount width, diff --git a/src/d3d12/d3d12-command-encoder.h b/src/d3d12/d3d12-command-encoder.h index 64af503..4d5339f 100644 --- a/src/d3d12/d3d12-command-encoder.h +++ b/src/d3d12/d3d12-command-encoder.h @@ -11,12 +11,12 @@ namespace rhi::d3d12 { static const Int kMaxRTVCount = 8; -class CommandEncoderImpl : public ICommandEncoder +class PassEncoderImpl : public IPassEncoder { public: virtual void* getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_ICommandEncoder || uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } @@ -33,7 +33,7 @@ class CommandEncoderImpl : public ICommandEncoder virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() override { return 1; } public: - // ICommandEncoder implementation + // IPassEncoder implementation virtual SLANG_NO_THROW void SLANG_MCALL setBufferState(IBuffer* buffer, ResourceState state) override; virtual SLANG_NO_THROW void SLANG_MCALL setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) override; @@ -74,13 +74,13 @@ class CommandEncoderImpl : public ICommandEncoder Result _bindRenderState(Submitter* submitter, RefPtr& newPipeline); }; -class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public CommandEncoderImpl +class ResourcePassEncoderImpl : public IResourcePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRenderCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRenderPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; @@ -91,7 +91,7 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) override; virtual SLANG_NO_THROW void SLANG_MCALL uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) override; - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override {} + virtual SLANG_NO_THROW void SLANG_MCALL end() override {} virtual SLANG_NO_THROW void SLANG_MCALL copyTexture( ITexture* dst, SubresourceRange dstSubresource, @@ -142,13 +142,13 @@ struct BoundVertexBuffer int m_offset; }; -class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEncoderImpl +class RenderPassEncoderImpl : public IRenderPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRenderCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRenderPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; @@ -195,7 +195,7 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc virtual SLANG_NO_THROW Result SLANG_MCALL draw(GfxCount vertexCount, GfxIndex startVertex = 0) override; virtual SLANG_NO_THROW Result SLANG_MCALL drawIndexed(GfxCount indexCount, GfxIndex startIndex = 0, GfxIndex baseVertex = 0) override; - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW void SLANG_MCALL setStencilReference(uint32_t referenceValue) override; @@ -229,20 +229,20 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc virtual SLANG_NO_THROW Result SLANG_MCALL drawMeshTasks(int x, int y, int z) override; }; -class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandEncoderImpl +class ComputePassEncoderImpl : public IComputePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IComputeCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IComputePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; void init(DeviceImpl* device, TransientResourceHeapImpl* transientHeap, CommandBufferImpl* cmdBuffer); virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* state, IShaderObject** outRootObject) override; @@ -255,13 +255,13 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandE virtual SLANG_NO_THROW Result SLANG_MCALL dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) override; }; -class RayTracingCommandEncoderImpl : public IRayTracingCommandEncoder, public CommandEncoderImpl +class RayTracingPassEncoderImpl : public IRayTracingPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRayTracingCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRayTracingPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; @@ -300,7 +300,7 @@ class RayTracingCommandEncoderImpl : public IRayTracingCommandEncoder, public Co virtual SLANG_NO_THROW Result SLANG_MCALL dispatchRays(GfxIndex rayGenShaderIndex, IShaderTable* shaderTable, GfxCount width, GfxCount height, GfxCount depth) override; - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override {} + virtual SLANG_NO_THROW void SLANG_MCALL end() override {} }; } // namespace rhi::d3d12 diff --git a/src/d3d12/d3d12-helper-functions.h b/src/d3d12/d3d12-helper-functions.h index 2d37a1a..213d223 100644 --- a/src/d3d12/d3d12-helper-functions.h +++ b/src/d3d12/d3d12-helper-functions.h @@ -27,7 +27,7 @@ struct PendingDescriptorTableBinding /// Contextual data and operations required when binding shader objects to the pipeline state struct BindingContext { - CommandEncoderImpl* encoder; + PassEncoderImpl* encoder; Submitter* submitter; TransientResourceHeapImpl* transientHeap; DeviceImpl* device; diff --git a/src/d3d12/d3d12-shader-object.cpp b/src/d3d12/d3d12-shader-object.cpp index b280d59..c9abc9b 100644 --- a/src/d3d12/d3d12-shader-object.cpp +++ b/src/d3d12/d3d12-shader-object.cpp @@ -176,7 +176,7 @@ Result ShaderObjectImpl::init( /// `offset` Result ShaderObjectImpl::_writeOrdinaryData( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, BufferImpl* buffer, Offset offset, Size destSize, @@ -299,7 +299,7 @@ bool ShaderObjectImpl::shouldAllocateConstantBuffer(TransientResourceHeapImpl* t /// Ensure that the `m_ordinaryDataBuffer` has been created, if it is needed Result ShaderObjectImpl::_ensureOrdinaryDataBufferCreatedIfNeeded( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, ShaderObjectLayoutImpl* specializedLayout ) { diff --git a/src/d3d12/d3d12-shader-object.h b/src/d3d12/d3d12-shader-object.h index 1a6741a..874fefd 100644 --- a/src/d3d12/d3d12-shader-object.h +++ b/src/d3d12/d3d12-shader-object.h @@ -133,7 +133,7 @@ class ShaderObjectImpl : public ShaderObjectBaseImpl ShaderTableImpl::createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) { uint32_t raygenTableSize = m_rayGenShaderCount * kRayGenRecordSize; @@ -97,7 +97,7 @@ RefPtr ShaderTableImpl::createDeviceBuffer( } stagingBuffer->unmap(nullptr); - static_cast(encoder)->m_commandBuffer->m_cmdList->CopyBufferRegion( + static_cast(encoder)->m_commandBuffer->m_cmdList->CopyBufferRegion( static_cast(buffer.get())->m_resource.getResource(), 0, static_cast(stagingBuffer)->m_resource.getResource(), @@ -109,7 +109,7 @@ RefPtr ShaderTableImpl::createDeviceBuffer( barrier.Transition.pResource = static_cast(buffer.get())->m_resource.getResource(); barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST; barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE; - static_cast(encoder)->m_commandBuffer->m_cmdList->ResourceBarrier(1, &barrier); + static_cast(encoder)->m_commandBuffer->m_cmdList->ResourceBarrier(1, &barrier); RefPtr resultPtr = static_cast(buffer.get()); return _Move(resultPtr); diff --git a/src/d3d12/d3d12-shader-table.h b/src/d3d12/d3d12-shader-table.h index a450155..4fd6499 100644 --- a/src/d3d12/d3d12-shader-table.h +++ b/src/d3d12/d3d12-shader-table.h @@ -17,7 +17,7 @@ class ShaderTableImpl : public ShaderTable virtual RefPtr createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) override; }; diff --git a/src/debug-layer/debug-base.h b/src/debug-layer/debug-base.h index bd34596..b268fb5 100644 --- a/src/debug-layer/debug-base.h +++ b/src/debug-layer/debug-base.h @@ -3,7 +3,7 @@ #include #include -#include "../command-encoder-com-forward.h" +#include "../pass-encoder-com-forward.h" #include "../rhi-shared.h" #include "core/common.h" @@ -47,11 +47,11 @@ class DebugShaderObject; class DebugRootShaderObject; class DebugCommandBuffer; template -class DebugCommandEncoderImpl; -class DebugResourceCommandEncoder; -class DebugRenderCommandEncoder; -class DebugComputeCommandEncoder; -class DebugRayTracingCommandEncoder; +class DebugPassEncoderImpl; +class DebugResourcePassEncoder; +class DebugRenderPassEncoder; +class DebugComputePassEncoder; +class DebugRayTracingPassEncoder; class DebugFence; class DebugCommandQueue; class DebugFramebuffer; diff --git a/src/debug-layer/debug-command-buffer.cpp b/src/debug-layer/debug-command-buffer.cpp index 727b82d..f925c2e 100644 --- a/src/debug-layer/debug-command-buffer.cpp +++ b/src/debug-layer/debug-command-buffer.cpp @@ -6,10 +6,10 @@ namespace rhi::debug { DebugCommandBuffer::DebugCommandBuffer() { SLANG_RHI_API_FUNC; - m_renderCommandEncoder.commandBuffer = this; - m_computeCommandEncoder.commandBuffer = this; - m_resourceCommandEncoder.commandBuffer = this; - m_rayTracingCommandEncoder.commandBuffer = this; + m_renderPassEncoder.commandBuffer = this; + m_computePassEncoder.commandBuffer = this; + m_resourcePassEncoder.commandBuffer = this; + m_rayTracingPassEncoder.commandBuffer = this; } ICommandBuffer* DebugCommandBuffer::getInterface(const Guid& guid) @@ -21,18 +21,18 @@ ICommandBuffer* DebugCommandBuffer::getInterface(const Guid& guid) return nullptr; } -Result DebugCommandBuffer::encodeResourceCommands(IResourceCommandEncoder** outEncoder) +Result DebugCommandBuffer::beginResourcePass(IResourcePassEncoder** outEncoder) { SLANG_RHI_API_FUNC; checkCommandBufferOpenWhenCreatingEncoder(); checkEncodersClosedBeforeNewEncoder(); - m_resourceCommandEncoder.isOpen = true; - SLANG_RETURN_ON_FAIL(baseObject->encodeResourceCommands(&m_resourceCommandEncoder.baseObject)); - *outEncoder = &m_resourceCommandEncoder; + m_resourcePassEncoder.isOpen = true; + SLANG_RETURN_ON_FAIL(baseObject->beginResourcePass(&m_resourcePassEncoder.baseObject)); + *outEncoder = &m_resourcePassEncoder; return SLANG_OK; } -Result DebugCommandBuffer::encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) +Result DebugCommandBuffer::beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) { // TODO VALIDATION: resolveTarget must have usage RenderTarget (Vulkan, WGPU) @@ -55,31 +55,31 @@ Result DebugCommandBuffer::encodeRenderCommands(const RenderPassDesc& desc, IRen innerDepthStencilAttachment.view = getInnerObj(desc.depthStencilAttachment->view); innerDesc.depthStencilAttachment = &innerDepthStencilAttachment; } - m_renderCommandEncoder.isOpen = true; - SLANG_RETURN_ON_FAIL(baseObject->encodeRenderCommands(innerDesc, &m_renderCommandEncoder.baseObject)); - *outEncoder = &m_renderCommandEncoder; + m_renderPassEncoder.isOpen = true; + SLANG_RETURN_ON_FAIL(baseObject->beginRenderPass(innerDesc, &m_renderPassEncoder.baseObject)); + *outEncoder = &m_renderPassEncoder; return SLANG_OK; } -Result DebugCommandBuffer::encodeComputeCommands(IComputeCommandEncoder** outEncoder) +Result DebugCommandBuffer::beginComputePass(IComputePassEncoder** outEncoder) { SLANG_RHI_API_FUNC; checkCommandBufferOpenWhenCreatingEncoder(); checkEncodersClosedBeforeNewEncoder(); - m_computeCommandEncoder.isOpen = true; - SLANG_RETURN_ON_FAIL(baseObject->encodeComputeCommands(&m_computeCommandEncoder.baseObject)); - *outEncoder = &m_computeCommandEncoder; + m_computePassEncoder.isOpen = true; + SLANG_RETURN_ON_FAIL(baseObject->beginComputePass(&m_computePassEncoder.baseObject)); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } -Result DebugCommandBuffer::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) +Result DebugCommandBuffer::beginRayTracingPass(IRayTracingPassEncoder** outEncoder) { SLANG_RHI_API_FUNC; checkCommandBufferOpenWhenCreatingEncoder(); checkEncodersClosedBeforeNewEncoder(); - m_rayTracingCommandEncoder.isOpen = true; - SLANG_RETURN_ON_FAIL(baseObject->encodeRayTracingCommands(&m_rayTracingCommandEncoder.baseObject)); - *outEncoder = &m_rayTracingCommandEncoder; + m_rayTracingPassEncoder.isOpen = true; + SLANG_RETURN_ON_FAIL(baseObject->beginRayTracingPass(&m_rayTracingPassEncoder.baseObject)); + *outEncoder = &m_rayTracingPassEncoder; return SLANG_OK; } @@ -90,25 +90,25 @@ void DebugCommandBuffer::close() { RHI_VALIDATION_ERROR("command buffer is already closed."); } - if (m_renderCommandEncoder.isOpen) + if (m_renderPassEncoder.isOpen) { RHI_VALIDATION_ERROR( - "A render command encoder on this command buffer is still open. " - "IRenderCommandEncoder::endEncoding() must be called before closing a command buffer." + "A render pass encoder on this command buffer is still open. " + "IRenderPassEncoder::end() must be called before closing a command buffer." ); } - if (m_computeCommandEncoder.isOpen) + if (m_computePassEncoder.isOpen) { RHI_VALIDATION_ERROR( - "A compute command encoder on this command buffer is still open. " - "IComputeCommandEncoder::endEncoding() must be called before closing a command buffer." + "A compute pass encoder on this command buffer is still open. " + "IComputePassEncoder::end() must be called before closing a command buffer." ); } - if (m_resourceCommandEncoder.isOpen) + if (m_resourcePassEncoder.isOpen) { RHI_VALIDATION_ERROR( - "A resource command encoder on this command buffer is still open. " - "IResourceCommandEncoder::endEncoding() must be called before closing a command buffer." + "A resource pass encoder on this command buffer is still open. " + "IResourcePassEncoder::end() must be called before closing a command buffer." ); } isOpen = false; @@ -149,12 +149,12 @@ void DebugCommandBuffer::ensureInternalDescriptorHeapsBound() void DebugCommandBuffer::checkEncodersClosedBeforeNewEncoder() { - if (m_resourceCommandEncoder.isOpen || m_renderCommandEncoder.isOpen || m_computeCommandEncoder.isOpen || - m_rayTracingCommandEncoder.isOpen) + if (m_resourcePassEncoder.isOpen || m_renderPassEncoder.isOpen || m_computePassEncoder.isOpen || + m_rayTracingPassEncoder.isOpen) { RHI_VALIDATION_ERROR( - "A previous command encoder created on this command buffer is still open. " - "endEncoding() must be called on the encoder before creating an encoder." + "A previous pass encoder created on this command buffer is still open. " + "end() must be called on the encoder before creating an encoder." ); } } diff --git a/src/debug-layer/debug-command-buffer.h b/src/debug-layer/debug-command-buffer.h index fed6812..ba57b5f 100644 --- a/src/debug-layer/debug-command-buffer.h +++ b/src/debug-layer/debug-command-buffer.h @@ -15,19 +15,19 @@ class DebugCommandBuffer : public DebugObject, ICommandBufferD3D DebugTransientResourceHeap* m_transientHeap; private: - DebugRenderCommandEncoder m_renderCommandEncoder; - DebugComputeCommandEncoder m_computeCommandEncoder; - DebugResourceCommandEncoder m_resourceCommandEncoder; - DebugRayTracingCommandEncoder m_rayTracingCommandEncoder; + DebugRenderPassEncoder m_renderPassEncoder; + DebugComputePassEncoder m_computePassEncoder; + DebugResourcePassEncoder m_resourcePassEncoder; + DebugRayTracingPassEncoder m_rayTracingPassEncoder; public: DebugCommandBuffer(); ICommandBuffer* getInterface(const Guid& guid); - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) override; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override; virtual SLANG_NO_THROW void SLANG_MCALL close() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; virtual SLANG_NO_THROW void SLANG_MCALL invalidateDescriptorHeapBinding() override; diff --git a/src/debug-layer/debug-command-encoder.cpp b/src/debug-layer/debug-command-encoder.cpp index e6d6fcb..5ea7f4d 100644 --- a/src/debug-layer/debug-command-encoder.cpp +++ b/src/debug-layer/debug-command-encoder.cpp @@ -11,47 +11,47 @@ namespace rhi::debug { -// DebugCommandEncoder +// DebugPassEncoder -void DebugCommandEncoder::setBufferState(IBuffer* buffer, ResourceState state) +void DebugPassEncoder::setBufferState(IBuffer* buffer, ResourceState state) { SLANG_RHI_API_FUNC; getBaseObject()->setBufferState(getInnerObj(buffer), state); } -void DebugCommandEncoder::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) +void DebugPassEncoder::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) { SLANG_RHI_API_FUNC; getBaseObject()->setTextureState(getInnerObj(texture), subresourceRange, state); } -void DebugCommandEncoder::beginDebugEvent(const char* name, float rgbColor[3]) +void DebugPassEncoder::beginDebugEvent(const char* name, float rgbColor[3]) { SLANG_RHI_API_FUNC; getBaseObject()->beginDebugEvent(name, rgbColor); } -void DebugCommandEncoder::endDebugEvent() +void DebugPassEncoder::endDebugEvent() { SLANG_RHI_API_FUNC; getBaseObject()->endDebugEvent(); } -void DebugCommandEncoder::writeTimestamp(IQueryPool* pool, GfxIndex index) +void DebugPassEncoder::writeTimestamp(IQueryPool* pool, GfxIndex index) { getBaseObject()->writeTimestamp(getInnerObj(pool), index); } -// DebugResourceCommandEncoder +// DebugResourcePassEncoder -void DebugResourceCommandEncoder::endEncoding() +void DebugResourcePassEncoder::end() { SLANG_RHI_API_FUNC; isOpen = false; - baseObject->endEncoding(); + baseObject->end(); } -void DebugResourceCommandEncoder::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) +void DebugResourcePassEncoder::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) { SLANG_RHI_API_FUNC; auto dstImpl = static_cast(dst); @@ -59,14 +59,14 @@ void DebugResourceCommandEncoder::copyBuffer(IBuffer* dst, Offset dstOffset, IBu baseObject->copyBuffer(dstImpl->baseObject, dstOffset, srcImpl->baseObject, srcOffset, size); } -void DebugResourceCommandEncoder::uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) +void DebugResourcePassEncoder::uploadBufferData(IBuffer* dst, Offset offset, Size size, void* data) { SLANG_RHI_API_FUNC; auto dstImpl = static_cast(dst); baseObject->uploadBufferData(dstImpl->baseObject, offset, size, data); } -void DebugResourceCommandEncoder::copyTexture( +void DebugResourcePassEncoder::copyTexture( ITexture* dst, SubresourceRange dstSubresource, Offset3D dstOffset, @@ -81,7 +81,7 @@ void DebugResourceCommandEncoder::copyTexture( ->copyTexture(getInnerObj(dst), dstSubresource, dstOffset, getInnerObj(src), srcSubresource, srcOffset, extent); } -void DebugResourceCommandEncoder::uploadTextureData( +void DebugResourcePassEncoder::uploadTextureData( ITexture* dst, SubresourceRange subresourceRange, Offset3D offset, @@ -95,13 +95,13 @@ void DebugResourceCommandEncoder::uploadTextureData( ->uploadTextureData(getInnerObj(dst), subresourceRange, offset, extent, subresourceData, subresourceDataCount); } -void DebugResourceCommandEncoder::clearBuffer(IBuffer* buffer, const BufferRange* range) +void DebugResourcePassEncoder::clearBuffer(IBuffer* buffer, const BufferRange* range) { SLANG_RHI_API_FUNC; baseObject->clearBuffer(getInnerObj(buffer), range); } -void DebugResourceCommandEncoder::clearTexture( +void DebugResourcePassEncoder::clearTexture( ITexture* texture, const ClearValue& clearValue, const SubresourceRange* subresourceRange, @@ -113,7 +113,7 @@ void DebugResourceCommandEncoder::clearTexture( baseObject->clearTexture(getInnerObj(texture), clearValue, subresourceRange, clearDepth, clearStencil); } -void DebugResourceCommandEncoder::resolveQuery( +void DebugResourcePassEncoder::resolveQuery( IQueryPool* queryPool, GfxIndex index, GfxCount count, @@ -125,7 +125,7 @@ void DebugResourceCommandEncoder::resolveQuery( baseObject->resolveQuery(getInnerObj(queryPool), index, count, getInnerObj(buffer), offset); } -void DebugResourceCommandEncoder::copyTextureToBuffer( +void DebugResourcePassEncoder::copyTextureToBuffer( IBuffer* dst, Offset dstOffset, Size dstSize, @@ -149,16 +149,16 @@ void DebugResourceCommandEncoder::copyTextureToBuffer( ); } -// DebugRenderCommandEncoder +// DebugRenderPassEncoder -void DebugRenderCommandEncoder::endEncoding() +void DebugRenderPassEncoder::end() { SLANG_RHI_API_FUNC; isOpen = false; - baseObject->endEncoding(); + baseObject->end(); } -Result DebugRenderCommandEncoder::bindPipeline(IPipeline* state, IShaderObject** outRootShaderObject) +Result DebugRenderPassEncoder::bindPipeline(IPipeline* state, IShaderObject** outRootShaderObject) { SLANG_RHI_API_FUNC; @@ -171,25 +171,25 @@ Result DebugRenderCommandEncoder::bindPipeline(IPipeline* state, IShaderObject** return result; } -Result DebugRenderCommandEncoder::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) +Result DebugRenderPassEncoder::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) { SLANG_RHI_API_FUNC; return baseObject->bindPipelineWithRootObject(getInnerObj(state), getInnerObj(rootObject)); } -void DebugRenderCommandEncoder::setViewports(GfxCount count, const Viewport* viewports) +void DebugRenderPassEncoder::setViewports(GfxCount count, const Viewport* viewports) { SLANG_RHI_API_FUNC; baseObject->setViewports(count, viewports); } -void DebugRenderCommandEncoder::setScissorRects(GfxCount count, const ScissorRect* scissors) +void DebugRenderPassEncoder::setScissorRects(GfxCount count, const ScissorRect* scissors) { SLANG_RHI_API_FUNC; baseObject->setScissorRects(count, scissors); } -void DebugRenderCommandEncoder::setVertexBuffers( +void DebugRenderPassEncoder::setVertexBuffers( GfxIndex startSlot, GfxCount slotCount, IBuffer* const* buffers, @@ -206,26 +206,26 @@ void DebugRenderCommandEncoder::setVertexBuffers( baseObject->setVertexBuffers(startSlot, slotCount, innerBuffers.data(), offsets); } -void DebugRenderCommandEncoder::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) +void DebugRenderPassEncoder::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) { SLANG_RHI_API_FUNC; auto innerBuffer = static_cast(buffer)->baseObject.get(); baseObject->setIndexBuffer(innerBuffer, indexFormat, offset); } -Result DebugRenderCommandEncoder::draw(GfxCount vertexCount, GfxIndex startVertex) +Result DebugRenderPassEncoder::draw(GfxCount vertexCount, GfxIndex startVertex) { SLANG_RHI_API_FUNC; return baseObject->draw(vertexCount, startVertex); } -Result DebugRenderCommandEncoder::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) +Result DebugRenderPassEncoder::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) { SLANG_RHI_API_FUNC; return baseObject->drawIndexed(indexCount, startIndex, baseVertex); } -Result DebugRenderCommandEncoder::drawIndirect( +Result DebugRenderPassEncoder::drawIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -238,7 +238,7 @@ Result DebugRenderCommandEncoder::drawIndirect( ->drawIndirect(maxDrawCount, getInnerObj(argBuffer), argOffset, getInnerObj(countBuffer), countOffset); } -Result DebugRenderCommandEncoder::drawIndexedIndirect( +Result DebugRenderPassEncoder::drawIndexedIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -251,13 +251,13 @@ Result DebugRenderCommandEncoder::drawIndexedIndirect( ->drawIndexedIndirect(maxDrawCount, getInnerObj(argBuffer), argOffset, getInnerObj(countBuffer), countOffset); } -void DebugRenderCommandEncoder::setStencilReference(uint32_t referenceValue) +void DebugRenderPassEncoder::setStencilReference(uint32_t referenceValue) { SLANG_RHI_API_FUNC; return baseObject->setStencilReference(referenceValue); } -Result DebugRenderCommandEncoder::setSamplePositions( +Result DebugRenderPassEncoder::setSamplePositions( GfxCount samplesPerPixel, GfxCount pixelCount, const SamplePosition* samplePositions @@ -267,7 +267,7 @@ Result DebugRenderCommandEncoder::setSamplePositions( return baseObject->setSamplePositions(samplesPerPixel, pixelCount, samplePositions); } -Result DebugRenderCommandEncoder::drawInstanced( +Result DebugRenderPassEncoder::drawInstanced( GfxCount vertexCount, GfxCount instanceCount, GfxIndex startVertex, @@ -278,7 +278,7 @@ Result DebugRenderCommandEncoder::drawInstanced( return baseObject->drawInstanced(vertexCount, instanceCount, startVertex, startInstanceLocation); } -Result DebugRenderCommandEncoder::drawIndexedInstanced( +Result DebugRenderPassEncoder::drawIndexedInstanced( GfxCount indexCount, GfxCount instanceCount, GfxIndex startIndexLocation, @@ -296,22 +296,22 @@ Result DebugRenderCommandEncoder::drawIndexedInstanced( ); } -Result DebugRenderCommandEncoder::drawMeshTasks(int x, int y, int z) +Result DebugRenderPassEncoder::drawMeshTasks(int x, int y, int z) { SLANG_RHI_API_FUNC; return baseObject->drawMeshTasks(x, y, z); } -// DebugComputeCommandEncoder +// DebugComputePassEncoder -void DebugComputeCommandEncoder::endEncoding() +void DebugComputePassEncoder::end() { SLANG_RHI_API_FUNC; isOpen = false; - baseObject->endEncoding(); + baseObject->end(); } -Result DebugComputeCommandEncoder::bindPipeline(IPipeline* state, IShaderObject** outRootShaderObject) +Result DebugComputePassEncoder::bindPipeline(IPipeline* state, IShaderObject** outRootShaderObject) { SLANG_RHI_API_FUNC; @@ -324,34 +324,34 @@ Result DebugComputeCommandEncoder::bindPipeline(IPipeline* state, IShaderObject* return result; } -Result DebugComputeCommandEncoder::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) +Result DebugComputePassEncoder::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) { SLANG_RHI_API_FUNC; return baseObject->bindPipelineWithRootObject(getInnerObj(state), getInnerObj(rootObject)); } -Result DebugComputeCommandEncoder::dispatchCompute(int x, int y, int z) +Result DebugComputePassEncoder::dispatchCompute(int x, int y, int z) { SLANG_RHI_API_FUNC; return baseObject->dispatchCompute(x, y, z); } -Result DebugComputeCommandEncoder::dispatchComputeIndirect(IBuffer* cmdBuffer, Offset offset) +Result DebugComputePassEncoder::dispatchComputeIndirect(IBuffer* cmdBuffer, Offset offset) { SLANG_RHI_API_FUNC; return baseObject->dispatchComputeIndirect(getInnerObj(cmdBuffer), offset); } -// DebugRayTracingCommandEncoder +// DebugRayTracingPassEncoder -void DebugRayTracingCommandEncoder::endEncoding() +void DebugRayTracingPassEncoder::end() { SLANG_RHI_API_FUNC; isOpen = false; - baseObject->endEncoding(); + baseObject->end(); } -void DebugRayTracingCommandEncoder::buildAccelerationStructure( +void DebugRayTracingPassEncoder::buildAccelerationStructure( const AccelerationStructureBuildDesc& desc, IAccelerationStructure* dst, IAccelerationStructure* src, @@ -417,7 +417,7 @@ void DebugRayTracingCommandEncoder::buildAccelerationStructure( ); } -void DebugRayTracingCommandEncoder::copyAccelerationStructure( +void DebugRayTracingPassEncoder::copyAccelerationStructure( IAccelerationStructure* dst, IAccelerationStructure* src, AccelerationStructureCopyMode mode @@ -429,7 +429,7 @@ void DebugRayTracingCommandEncoder::copyAccelerationStructure( baseObject->copyAccelerationStructure(innerDst, innerSrc, mode); } -void DebugRayTracingCommandEncoder::queryAccelerationStructureProperties( +void DebugRayTracingPassEncoder::queryAccelerationStructureProperties( GfxCount accelerationStructureCount, IAccelerationStructure* const* accelerationStructures, GfxCount queryCount, @@ -459,19 +459,19 @@ void DebugRayTracingCommandEncoder::queryAccelerationStructureProperties( ); } -void DebugRayTracingCommandEncoder::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) +void DebugRayTracingPassEncoder::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) { SLANG_RHI_API_FUNC; baseObject->serializeAccelerationStructure(getInnerObj(dst), getInnerObj(src)); } -void DebugRayTracingCommandEncoder::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) +void DebugRayTracingPassEncoder::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) { SLANG_RHI_API_FUNC; baseObject->deserializeAccelerationStructure(getInnerObj(dst), getInnerObj(src)); } -Result DebugRayTracingCommandEncoder::bindPipeline(IPipeline* state, IShaderObject** outRootObject) +Result DebugRayTracingPassEncoder::bindPipeline(IPipeline* state, IShaderObject** outRootObject) { SLANG_RHI_API_FUNC; auto innerPipeline = getInnerObj(state); @@ -483,13 +483,13 @@ Result DebugRayTracingCommandEncoder::bindPipeline(IPipeline* state, IShaderObje return result; } -Result DebugRayTracingCommandEncoder::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) +Result DebugRayTracingPassEncoder::bindPipelineWithRootObject(IPipeline* state, IShaderObject* rootObject) { SLANG_RHI_API_FUNC; return baseObject->bindPipelineWithRootObject(getInnerObj(state), getInnerObj(rootObject)); } -Result DebugRayTracingCommandEncoder::dispatchRays( +Result DebugRayTracingPassEncoder::dispatchRays( GfxIndex rayGenShaderIndex, IShaderTable* shaderTable, GfxCount width, diff --git a/src/debug-layer/debug-command-encoder.h b/src/debug-layer/debug-command-encoder.h index 6aa4e2b..3bfc5ce 100644 --- a/src/debug-layer/debug-command-encoder.h +++ b/src/debug-layer/debug-command-encoder.h @@ -4,12 +4,12 @@ namespace rhi::debug { -class DebugCommandEncoder : public ICommandEncoder +class DebugPassEncoder : public IPassEncoder { public: DebugCommandBuffer* getCommandBuffer() { return commandBuffer; } bool getIsOpen() { return isOpen; } - virtual ICommandEncoder* getBaseObject() = 0; + virtual IPassEncoder* getBaseObject() = 0; virtual void* getInterface(SlangUUID const& uuid) = 0; Result queryInterface(SlangUUID const& uuid, void** outObject) override @@ -40,16 +40,16 @@ class DebugCommandEncoder : public ICommandEncoder bool isOpen = false; }; -class DebugResourceCommandEncoder : public UnownedDebugObject, public DebugCommandEncoder +class DebugResourcePassEncoder : public UnownedDebugObject, public DebugPassEncoder { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(DebugCommandEncoder) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(DebugPassEncoder) - virtual ICommandEncoder* getBaseObject() override { return baseObject; } + virtual IPassEncoder* getBaseObject() override { return baseObject; } virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_ICommandEncoder || uuid == GUID::IID_IResourceCommandEncoder || + if (uuid == GUID::IID_IPassEncoder || uuid == GUID::IID_IResourcePassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -58,7 +58,7 @@ class DebugResourceCommandEncoder : public UnownedDebugObject, public DebugCommandEncoder +class DebugRenderPassEncoder : public UnownedDebugObject, public DebugPassEncoder { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(DebugCommandEncoder) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(DebugPassEncoder) - virtual ICommandEncoder* getBaseObject() override { return baseObject; } + virtual IPassEncoder* getBaseObject() override { return baseObject; } virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_ICommandEncoder || uuid == GUID::IID_IRenderCommandEncoder || + if (uuid == GUID::IID_IPassEncoder || uuid == GUID::IID_IRenderPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -128,7 +128,7 @@ class DebugRenderCommandEncoder : public UnownedDebugObject, public DebugCommandEncoder +class DebugComputePassEncoder : public UnownedDebugObject, public DebugPassEncoder { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(DebugCommandEncoder) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(DebugPassEncoder) - virtual ICommandEncoder* getBaseObject() override { return baseObject; } + virtual IPassEncoder* getBaseObject() override { return baseObject; } virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_ICommandEncoder || uuid == GUID::IID_IComputeCommandEncoder || + if (uuid == GUID::IID_IPassEncoder || uuid == GUID::IID_IComputePassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -189,7 +189,7 @@ class DebugComputeCommandEncoder : public UnownedDebugObject, public DebugCommandEncoder +class DebugRayTracingPassEncoder : public UnownedDebugObject, public DebugPassEncoder { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(DebugCommandEncoder) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(DebugPassEncoder) - virtual ICommandEncoder* getBaseObject() override { return baseObject; } + virtual IPassEncoder* getBaseObject() override { return baseObject; } virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_ICommandEncoder || uuid == GUID::IID_IRayTracingCommandEncoder || + if (uuid == GUID::IID_IPassEncoder || uuid == GUID::IID_IRayTracingPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -216,7 +216,7 @@ class DebugRayTracingCommandEncoder : public UnownedDebugObjectbeginRenderPass(desc); } - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override { m_writer->endRenderPass(); } + virtual SLANG_NO_THROW void SLANG_MCALL end() override { m_writer->endRenderPass(); } virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* state, IShaderObject** outRootObject) override { @@ -402,22 +402,22 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject } }; - RenderCommandEncoderImpl m_renderCommandEncoder; + RenderPassEncoderImpl m_renderPassEncoder; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override { - m_renderCommandEncoder.init(this, desc); - *outEncoder = &m_renderCommandEncoder; + m_renderPassEncoder.init(this, desc); + *outEncoder = &m_renderPassEncoder; return SLANG_OK; } - class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandEncoderImpl + class ComputePassEncoderImpl : public IComputePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IComputeCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IComputePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -426,7 +426,7 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override {} + virtual SLANG_NO_THROW void SLANG_MCALL end() override {} virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* state, IShaderObject** outRootObject) override { @@ -466,15 +466,15 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject } }; - ComputeCommandEncoderImpl m_computeCommandEncoder; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override + ComputePassEncoderImpl m_computePassEncoder; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override { - m_computeCommandEncoder.init(this); - *outEncoder = &m_computeCommandEncoder; + m_computePassEncoder.init(this); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override { *outEncoder = nullptr; return SLANG_OK; diff --git a/src/metal/metal-base.h b/src/metal/metal-base.h index e56eae5..2ec6423 100644 --- a/src/metal/metal-base.h +++ b/src/metal/metal-base.h @@ -1,6 +1,6 @@ #pragma once -#include "../command-encoder-com-forward.h" +#include "../pass-encoder-com-forward.h" #include "../mutable-shader-object.h" #include "../rhi-shared.h" #include "../transient-resource-heap-base.h" @@ -24,15 +24,15 @@ class ShaderObjectLayoutImpl; class EntryPointLayout; class RootShaderObjectLayoutImpl; class ShaderProgramImpl; -class CommandEncoderImpl; +class PassEncoderImpl; class ShaderObjectImpl; class MutableShaderObjectImpl; class RootShaderObjectImpl; class ShaderTableImpl; -class ResourceCommandEncoderImpl; -class RenderCommandEncoderImpl; -class ComputeCommandEncoderImpl; -class RayTracingCommandEncoderImpl; +class ResourcePassEncoderImpl; +class RenderPassEncoderImpl; +class ComputePassEncoderImpl; +class RayTracingPassEncoderImpl; class CommandBufferImpl; class CommandQueueImpl; class TransientResourceHeapImpl; diff --git a/src/metal/metal-command-buffer.cpp b/src/metal/metal-command-buffer.cpp index 368918f..afe765c 100644 --- a/src/metal/metal-command-buffer.cpp +++ b/src/metal/metal-command-buffer.cpp @@ -20,32 +20,32 @@ Result CommandBufferImpl::init(DeviceImpl* device, TransientResourceHeapImpl* tr return SLANG_OK; } -Result CommandBufferImpl::encodeResourceCommands(IResourceCommandEncoder** outEncoder) +Result CommandBufferImpl::beginResourcePass(IResourcePassEncoder** outEncoder) { - m_resourceCommandEncoder.init(this); - *outEncoder = &m_resourceCommandEncoder; + m_resourcePassEncoder.init(this); + *outEncoder = &m_resourcePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) { - m_renderCommandEncoder.init(this); - SLANG_RETURN_ON_FAIL(m_renderCommandEncoder.beginPass(desc)); - *outEncoder = &m_renderCommandEncoder; + m_renderPassEncoder.init(this); + SLANG_RETURN_ON_FAIL(m_renderPassEncoder.beginPass(desc)); + *outEncoder = &m_renderPassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeComputeCommands(IComputeCommandEncoder** outEncoder) +Result CommandBufferImpl::beginComputePass(IComputePassEncoder** outEncoder) { - m_computeCommandEncoder.init(this); - *outEncoder = &m_computeCommandEncoder; + m_computePassEncoder.init(this); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRayTracingPass(IRayTracingPassEncoder** outEncoder) { - m_rayTracingCommandEncoder.init(this); - *outEncoder = &m_rayTracingCommandEncoder; + m_rayTracingPassEncoder.init(this); + *outEncoder = &m_rayTracingPassEncoder; return SLANG_OK; } diff --git a/src/metal/metal-command-buffer.h b/src/metal/metal-command-buffer.h index 60989c8..ff7441c 100644 --- a/src/metal/metal-command-buffer.h +++ b/src/metal/metal-command-buffer.h @@ -19,10 +19,10 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject RootShaderObjectImpl m_rootObject; // RefPtr m_mutableRootShaderObject; - ResourceCommandEncoderImpl m_resourceCommandEncoder; - ComputeCommandEncoderImpl m_computeCommandEncoder; - RenderCommandEncoderImpl m_renderCommandEncoder; - RayTracingCommandEncoderImpl m_rayTracingCommandEncoder; + ResourcePassEncoderImpl m_resourcePassEncoder; + ComputePassEncoderImpl m_computePassEncoder; + RenderPassEncoderImpl m_renderPassEncoder; + RayTracingPassEncoderImpl m_rayTracingPassEncoder; NS::SharedPtr m_metalRenderCommandEncoder; NS::SharedPtr m_metalComputeCommandEncoder; @@ -44,11 +44,11 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject void endMetalCommandEncoder(); public: - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) override; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override; virtual SLANG_NO_THROW void SLANG_MCALL close() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; }; diff --git a/src/metal/metal-command-encoder.cpp b/src/metal/metal-command-encoder.cpp index 3640d2d..7fbd78e 100644 --- a/src/metal/metal-command-encoder.cpp +++ b/src/metal/metal-command-encoder.cpp @@ -13,48 +13,48 @@ namespace rhi::metal { -// CommandEncoderImpl +// PassEncoderImpl -void CommandEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) +void PassEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) { // We use automatic hazard tracking for now, no need for barriers. } -void CommandEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) +void PassEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) { // We use automatic hazard tracking for now, no need for barriers. } -void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) +void PassEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) { NS::SharedPtr string = MetalUtil::createString(name); m_commandBuffer->m_commandBuffer->pushDebugGroup(string.get()); } -void CommandEncoderImpl::endDebugEvent() +void PassEncoderImpl::endDebugEvent() { m_commandBuffer->m_commandBuffer->popDebugGroup(); } -void CommandEncoderImpl::writeTimestamp(IQueryPool* queryPool, GfxIndex index) +void PassEncoderImpl::writeTimestamp(IQueryPool* queryPool, GfxIndex index) { auto encoder = m_commandBuffer->getMetalBlitCommandEncoder(); encoder->sampleCountersInBuffer(static_cast(queryPool)->m_counterSampleBuffer.get(), index, true); } -void CommandEncoderImpl::init(CommandBufferImpl* commandBuffer) +void PassEncoderImpl::init(CommandBufferImpl* commandBuffer) { m_commandBuffer = commandBuffer; m_metalCommandBuffer = m_commandBuffer->m_commandBuffer.get(); } -void CommandEncoderImpl::endEncodingImpl() +void PassEncoderImpl::endEncodingImpl() { m_commandBuffer->endMetalCommandEncoder(); } -Result CommandEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** outRootObject) +Result PassEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** outRootObject) { m_currentPipeline = static_cast(state); // m_commandBuffer->m_mutableRootShaderObject = nullptr; @@ -66,14 +66,14 @@ Result CommandEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** out return SLANG_OK; } -// ResourceCommandEncoderImpl +// ResourcePassEncoderImpl -void ResourceCommandEncoderImpl::endEncoding() +void ResourcePassEncoderImpl::end() { - CommandEncoderImpl::endEncodingImpl(); + PassEncoderImpl::endEncodingImpl(); } -void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) +void ResourcePassEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) { auto encoder = m_commandBuffer->getMetalBlitCommandEncoder(); encoder->copyFromBuffer( @@ -85,7 +85,7 @@ void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuf ); } -void ResourceCommandEncoderImpl::copyTexture( +void ResourcePassEncoderImpl::copyTexture( ITexture* dst, SubresourceRange dstSubresource, Offset3D dstOffset, @@ -124,7 +124,7 @@ void ResourceCommandEncoderImpl::copyTexture( } } -void ResourceCommandEncoderImpl::copyTextureToBuffer( +void ResourcePassEncoderImpl::copyTextureToBuffer( IBuffer* dst, Offset dstOffset, Size dstSize, @@ -151,12 +151,12 @@ void ResourceCommandEncoderImpl::copyTextureToBuffer( ); } -void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset, Size size, void* data) +void ResourcePassEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset, Size size, void* data) { SLANG_RHI_UNIMPLEMENTED("uploadBufferData"); } -void ResourceCommandEncoderImpl::uploadTextureData( +void ResourcePassEncoderImpl::uploadTextureData( ITexture* dst, SubresourceRange subresourceRange, Offset3D offset, @@ -168,12 +168,12 @@ void ResourceCommandEncoderImpl::uploadTextureData( SLANG_RHI_UNIMPLEMENTED("uploadTextureData"); } -void ResourceCommandEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) +void ResourcePassEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) { SLANG_RHI_UNIMPLEMENTED("clearBuffer"); } -void ResourceCommandEncoderImpl::clearTexture( +void ResourcePassEncoderImpl::clearTexture( ITexture* texture, const ClearValue& clearValue, const SubresourceRange* subresourceRange, @@ -184,7 +184,7 @@ void ResourceCommandEncoderImpl::clearTexture( SLANG_RHI_UNIMPLEMENTED("clearTexture"); } -void ResourceCommandEncoderImpl::resolveQuery( +void ResourcePassEncoderImpl::resolveQuery( IQueryPool* queryPool, GfxIndex index, GfxCount count, @@ -201,9 +201,9 @@ void ResourceCommandEncoderImpl::resolveQuery( ); } -// RenderCommandEncoderImpl +// RenderPassEncoderImpl -Result RenderCommandEncoderImpl::beginPass(const RenderPassDesc& desc) +Result RenderPassEncoderImpl::beginPass(const RenderPassDesc& desc) { uint32_t width = 1; uint32_t height = 1; @@ -297,27 +297,27 @@ Result RenderCommandEncoderImpl::beginPass(const RenderPassDesc& desc) return SLANG_OK; } -void RenderCommandEncoderImpl::endEncoding() +void RenderPassEncoderImpl::end() { m_renderTargetViews.clear(); m_depthStencilView = nullptr; - CommandEncoderImpl::endEncodingImpl(); + PassEncoderImpl::endEncodingImpl(); } -Result RenderCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result RenderPassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { m_primitiveType = MetalUtil::translatePrimitiveType(static_cast(pipeline)->desc.graphics.primitiveTopology); return setPipelineImpl(pipeline, outRootObject); } -Result RenderCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result RenderPassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return SLANG_E_NOT_IMPLEMENTED; } -void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) +void RenderPassEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) { m_viewports.resize(count); for (GfxIndex i = 0; i < count; ++i) @@ -333,7 +333,7 @@ void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* view } } -void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) +void RenderPassEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) { m_scissorRects.resize(count); for (GfxIndex i = 0; i < count; ++i) @@ -347,7 +347,7 @@ void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect } } -void RenderCommandEncoderImpl::setVertexBuffers( +void RenderPassEncoderImpl::setVertexBuffers( GfxIndex startSlot, GfxCount slotCount, IBuffer* const* buffers, @@ -366,7 +366,7 @@ void RenderCommandEncoderImpl::setVertexBuffers( } } -void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) +void RenderPassEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) { m_indexBuffer = static_cast(buffer)->m_buffer.get(); m_indexBufferOffset = offset; @@ -384,12 +384,12 @@ void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat index } } -void RenderCommandEncoderImpl::setStencilReference(uint32_t referenceValue) +void RenderPassEncoderImpl::setStencilReference(uint32_t referenceValue) { m_stencilReferenceValue = referenceValue; } -Result RenderCommandEncoderImpl::setSamplePositions( +Result RenderPassEncoderImpl::setSamplePositions( GfxCount samplesPerPixel, GfxCount pixelCount, const SamplePosition* samplePositions @@ -398,7 +398,7 @@ Result RenderCommandEncoderImpl::setSamplePositions( return SLANG_E_NOT_AVAILABLE; } -Result RenderCommandEncoderImpl::prepareDraw(MTL::RenderCommandEncoder*& encoder) +Result RenderPassEncoderImpl::prepareDraw(MTL::RenderCommandEncoder*& encoder) { auto pipeline = static_cast(m_currentPipeline.Ptr()); pipeline->ensureAPIPipelineCreated(); @@ -441,7 +441,7 @@ Result RenderCommandEncoderImpl::prepareDraw(MTL::RenderCommandEncoder*& encoder return SLANG_OK; } -Result RenderCommandEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) +Result RenderPassEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) { MTL::RenderCommandEncoder* encoder; SLANG_RETURN_ON_FAIL(prepareDraw(encoder)); @@ -449,7 +449,7 @@ Result RenderCommandEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) +Result RenderPassEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) { MTL::RenderCommandEncoder* encoder; SLANG_RETURN_ON_FAIL(prepareDraw(encoder)); @@ -458,7 +458,7 @@ Result RenderCommandEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex start return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndirect( +Result RenderPassEncoderImpl::drawIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -469,7 +469,7 @@ Result RenderCommandEncoderImpl::drawIndirect( return SLANG_E_NOT_IMPLEMENTED; } -Result RenderCommandEncoderImpl::drawIndexedIndirect( +Result RenderPassEncoderImpl::drawIndexedIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -480,7 +480,7 @@ Result RenderCommandEncoderImpl::drawIndexedIndirect( return SLANG_E_NOT_IMPLEMENTED; } -Result RenderCommandEncoderImpl::drawInstanced( +Result RenderPassEncoderImpl::drawInstanced( GfxCount vertexCount, GfxCount instanceCount, GfxIndex startVertex, @@ -493,7 +493,7 @@ Result RenderCommandEncoderImpl::drawInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexedInstanced( +Result RenderPassEncoderImpl::drawIndexedInstanced( GfxCount indexCount, GfxCount instanceCount, GfxIndex startIndexLocation, @@ -516,29 +516,29 @@ Result RenderCommandEncoderImpl::drawIndexedInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawMeshTasks(int x, int y, int z) +Result RenderPassEncoderImpl::drawMeshTasks(int x, int y, int z) { return SLANG_E_NOT_IMPLEMENTED; } -// ComputeCommandEncoderImpl +// ComputePassEncoderImpl -void ComputeCommandEncoderImpl::endEncoding() +void ComputePassEncoderImpl::end() { - CommandEncoderImpl::endEncodingImpl(); + PassEncoderImpl::endEncodingImpl(); } -Result ComputeCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result ComputePassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return setPipelineImpl(pipeline, outRootObject); } -Result ComputeCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result ComputePassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return SLANG_E_NOT_IMPLEMENTED; } -Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) +Result ComputePassEncoderImpl::dispatchCompute(int x, int y, int z) { MTL::ComputeCommandEncoder* encoder = m_commandBuffer->getMetalComputeCommandEncoder(); @@ -566,19 +566,19 @@ Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) return SLANG_OK; } -Result ComputeCommandEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) +Result ComputePassEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) { SLANG_RHI_UNIMPLEMENTED("dispatchComputeIndirect"); } -// RayTracingCommandEncoderImpl +// RayTracingPassEncoderImpl -void RayTracingCommandEncoderImpl::endEncoding() +void RayTracingPassEncoderImpl::end() { - CommandEncoderImpl::endEncodingImpl(); + PassEncoderImpl::endEncodingImpl(); } -void RayTracingCommandEncoderImpl::buildAccelerationStructure( +void RayTracingPassEncoderImpl::buildAccelerationStructure( const AccelerationStructureBuildDesc& desc, IAccelerationStructure* dst, IAccelerationStructure* src, @@ -616,7 +616,7 @@ void RayTracingCommandEncoderImpl::buildAccelerationStructure( // TODO handle queryDescs } -void RayTracingCommandEncoderImpl::copyAccelerationStructure( +void RayTracingPassEncoderImpl::copyAccelerationStructure( IAccelerationStructure* dst, IAccelerationStructure* src, AccelerationStructureCopyMode mode @@ -641,7 +641,7 @@ void RayTracingCommandEncoderImpl::copyAccelerationStructure( } } -void RayTracingCommandEncoderImpl::queryAccelerationStructureProperties( +void RayTracingPassEncoderImpl::queryAccelerationStructureProperties( GfxCount accelerationStructureCount, IAccelerationStructure* const* accelerationStructures, GfxCount queryCount, @@ -650,23 +650,21 @@ void RayTracingCommandEncoderImpl::queryAccelerationStructureProperties( { } -void RayTracingCommandEncoderImpl::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) {} +void RayTracingPassEncoderImpl::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) {} -void RayTracingCommandEncoderImpl::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) -{ -} +void RayTracingPassEncoderImpl::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) {} -Result RayTracingCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result RayTracingPassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return SLANG_E_NOT_IMPLEMENTED; } -Result RayTracingCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result RayTracingPassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return SLANG_E_NOT_IMPLEMENTED; } -Result RayTracingCommandEncoderImpl::dispatchRays( +Result RayTracingPassEncoderImpl::dispatchRays( GfxIndex raygenShaderIndex, IShaderTable* shaderTable, GfxCount width, diff --git a/src/metal/metal-command-encoder.h b/src/metal/metal-command-encoder.h index dd289c3..53347a6 100644 --- a/src/metal/metal-command-encoder.h +++ b/src/metal/metal-command-encoder.h @@ -7,12 +7,12 @@ namespace rhi::metal { -class CommandEncoderImpl : public ICommandEncoder +class PassEncoderImpl : public IPassEncoder { public: virtual void* getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_ICommandEncoder || uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } @@ -49,13 +49,13 @@ class CommandEncoderImpl : public ICommandEncoder Result setPipelineImpl(IPipeline* state, IShaderObject** outRootObject); }; -class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public CommandEncoderImpl +class ResourcePassEncoderImpl : public IResourcePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IResourceCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IResourcePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -64,7 +64,7 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) override; @@ -116,13 +116,13 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman resolveQuery(IQueryPool* queryPool, GfxIndex index, GfxCount count, IBuffer* buffer, Offset offset) override; }; -class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEncoderImpl +class RenderPassEncoderImpl : public IRenderPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRenderCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRenderPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -151,7 +151,7 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc public: Result beginPass(const RenderPassDesc& desc); - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) override; @@ -206,13 +206,13 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc virtual SLANG_NO_THROW Result SLANG_MCALL drawMeshTasks(int x, int y, int z) override; }; -class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandEncoderImpl +class ComputePassEncoderImpl : public IComputePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IComputeCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IComputePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -221,7 +221,7 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandE } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) override; @@ -233,13 +233,13 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandE virtual SLANG_NO_THROW Result SLANG_MCALL dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) override; }; -class RayTracingCommandEncoderImpl : public IRayTracingCommandEncoder, public CommandEncoderImpl +class RayTracingPassEncoderImpl : public IRayTracingPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRayTracingCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRayTracingPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -248,7 +248,7 @@ class RayTracingCommandEncoderImpl : public IRayTracingCommandEncoder, public Co } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW void SLANG_MCALL buildAccelerationStructure( const AccelerationStructureBuildDesc& desc, diff --git a/src/metal/metal-shader-table.cpp b/src/metal/metal-shader-table.cpp index 9eb4751..ce9163a 100644 --- a/src/metal/metal-shader-table.cpp +++ b/src/metal/metal-shader-table.cpp @@ -6,7 +6,7 @@ namespace rhi::metal { RefPtr ShaderTableImpl::createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) { return RefPtr(0); diff --git a/src/metal/metal-shader-table.h b/src/metal/metal-shader-table.h index d987675..e61b2d8 100644 --- a/src/metal/metal-shader-table.h +++ b/src/metal/metal-shader-table.h @@ -17,7 +17,7 @@ class ShaderTableImpl : public ShaderTable virtual RefPtr createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) override; }; diff --git a/src/command-encoder-com-forward.h b/src/pass-encoder-com-forward.h similarity index 81% rename from src/command-encoder-com-forward.h rename to src/pass-encoder-com-forward.h index 0d92eb7..e19be9c 100644 --- a/src/command-encoder-com-forward.h +++ b/src/pass-encoder-com-forward.h @@ -1,36 +1,36 @@ #pragma once -#define SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderBase) \ +#define SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderBase) \ virtual SLANG_NO_THROW Result SLANG_MCALL queryInterface(SlangUUID const& uuid, void** outObject) override \ { \ - return CommandEncoderBase::queryInterface(uuid, outObject); \ + return PassEncoderBase::queryInterface(uuid, outObject); \ } \ virtual SLANG_NO_THROW uint32_t SLANG_MCALL addRef() override \ { \ - return CommandEncoderBase::addRef(); \ + return PassEncoderBase::addRef(); \ } \ virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() override \ { \ - return CommandEncoderBase::release(); \ + return PassEncoderBase::release(); \ } \ virtual SLANG_NO_THROW void SLANG_MCALL setBufferState(IBuffer* buffer, ResourceState state) override \ { \ - CommandEncoderBase::setBufferState(buffer, state); \ + PassEncoderBase::setBufferState(buffer, state); \ } \ virtual SLANG_NO_THROW void SLANG_MCALL \ setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) override \ { \ - CommandEncoderBase::setTextureState(texture, subresourceRange, state); \ + PassEncoderBase::setTextureState(texture, subresourceRange, state); \ } \ virtual SLANG_NO_THROW void SLANG_MCALL writeTimestamp(IQueryPool* pool, GfxIndex index) override \ { \ - CommandEncoderBase::writeTimestamp(pool, index); \ + PassEncoderBase::writeTimestamp(pool, index); \ } \ virtual SLANG_NO_THROW void SLANG_MCALL beginDebugEvent(const char* name, float rgbColor[3]) override \ { \ - CommandEncoderBase::beginDebugEvent(name, rgbColor); \ + PassEncoderBase::beginDebugEvent(name, rgbColor); \ } \ virtual SLANG_NO_THROW void SLANG_MCALL endDebugEvent() override \ { \ - CommandEncoderBase::endDebugEvent(); \ + PassEncoderBase::endDebugEvent(); \ } diff --git a/src/rhi-shared.cpp b/src/rhi-shared.cpp index 6f5d0c0..5792f10 100644 --- a/src/rhi-shared.cpp +++ b/src/rhi-shared.cpp @@ -28,11 +28,11 @@ const Guid GUID::IID_IDevice = IDevice::getTypeGuid(); const Guid GUID::IID_IPersistentShaderCache = IPersistentShaderCache::getTypeGuid(); const Guid GUID::IID_IShaderObject = IShaderObject::getTypeGuid(); -const Guid GUID::IID_ICommandEncoder = ICommandEncoder::getTypeGuid(); -const Guid GUID::IID_IResourceCommandEncoder = IResourceCommandEncoder::getTypeGuid(); -const Guid GUID::IID_IRenderCommandEncoder = IRenderCommandEncoder::getTypeGuid(); -const Guid GUID::IID_IComputeCommandEncoder = IComputeCommandEncoder::getTypeGuid(); -const Guid GUID::IID_IRayTracingCommandEncoder = IRayTracingCommandEncoder::getTypeGuid(); +const Guid GUID::IID_IPassEncoder = IPassEncoder::getTypeGuid(); +const Guid GUID::IID_IResourcePassEncoder = IResourcePassEncoder::getTypeGuid(); +const Guid GUID::IID_IRenderPassEncoder = IRenderPassEncoder::getTypeGuid(); +const Guid GUID::IID_IComputePassEncoder = IComputePassEncoder::getTypeGuid(); +const Guid GUID::IID_IRayTracingPassEncoder = IRayTracingPassEncoder::getTypeGuid(); const Guid GUID::IID_ICommandBuffer = ICommandBuffer::getTypeGuid(); const Guid GUID::IID_ICommandBufferD3D12 = ICommandBufferD3D12::getTypeGuid(); diff --git a/src/rhi-shared.h b/src/rhi-shared.h index 05a0d67..efb7f01 100644 --- a/src/rhi-shared.h +++ b/src/rhi-shared.h @@ -35,11 +35,11 @@ struct GUID static const Guid IID_IPersistentShaderCache; static const Guid IID_IShaderObjectLayout; static const Guid IID_IShaderObject; - static const Guid IID_ICommandEncoder; - static const Guid IID_IRenderCommandEncoder; - static const Guid IID_IComputeCommandEncoder; - static const Guid IID_IResourceCommandEncoder; - static const Guid IID_IRayTracingCommandEncoder; + static const Guid IID_IPassEncoder; + static const Guid IID_IRenderPassEncoder; + static const Guid IID_IComputePassEncoder; + static const Guid IID_IResourcePassEncoder; + static const Guid IID_IRayTracingPassEncoder; static const Guid IID_ICommandBuffer; static const Guid IID_ICommandBufferD3D12; static const Guid IID_ICommandQueue; @@ -1055,14 +1055,10 @@ class ShaderTable : public IShaderTable, public ComObject virtual RefPtr createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) = 0; - Buffer* getOrCreateBuffer( - Pipeline* pipeline, - TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder - ) + Buffer* getOrCreateBuffer(Pipeline* pipeline, TransientResourceHeap* transientHeap, IRayTracingPassEncoder* encoder) { auto it = m_deviceBuffers.find(pipeline); if (it != m_deviceBuffers.end()) diff --git a/src/vulkan/vk-base.h b/src/vulkan/vk-base.h index dcdfc61..c4c8c7b 100644 --- a/src/vulkan/vk-base.h +++ b/src/vulkan/vk-base.h @@ -1,6 +1,6 @@ #pragma once -#include "../command-encoder-com-forward.h" +#include "../pass-encoder-com-forward.h" #include "../mutable-shader-object.h" #include "../rhi-shared.h" #include "../transient-resource-heap-base.h" @@ -29,16 +29,16 @@ class ShaderObjectLayoutImpl; class EntryPointLayout; class RootShaderObjectLayout; class ShaderProgramImpl; -class CommandEncoderImpl; +class PassEncoderImpl; class ShaderObjectImpl; class MutableShaderObjectImpl; class RootShaderObjectImpl; class MutableRootShaderObjectImpl; class ShaderTableImpl; -class ResourceCommandEncoderImpl; -class RenderCommandEncoderImpl; -class ComputeCommandEncoderImpl; -class RayTracingCommandEncoder; +class ResourcePassEncoderImpl; +class RenderPassEncoderImpl; +class ComputePassEncoderImpl; +class RayTracingPassEncoderImpl; class CommandBufferImpl; class CommandQueueImpl; class TransientResourceHeapImpl; diff --git a/src/vulkan/vk-command-buffer.cpp b/src/vulkan/vk-command-buffer.cpp index 8a91ad1..3fb20a5 100644 --- a/src/vulkan/vk-command-buffer.cpp +++ b/src/vulkan/vk-command-buffer.cpp @@ -206,34 +206,34 @@ void CommandBufferImpl::commitBarriers() m_stateTracking.clearBarriers(); } -Result CommandBufferImpl::encodeResourceCommands(IResourceCommandEncoder** outEncoder) +Result CommandBufferImpl::beginResourcePass(IResourcePassEncoder** outEncoder) { - m_resourceCommandEncoder.init(this); - *outEncoder = &m_resourceCommandEncoder; + m_resourcePassEncoder.init(this); + *outEncoder = &m_resourcePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) { - m_renderCommandEncoder.init(this); - SLANG_RETURN_ON_FAIL(m_renderCommandEncoder.beginPass(desc)); - *outEncoder = &m_renderCommandEncoder; + m_renderPassEncoder.init(this); + SLANG_RETURN_ON_FAIL(m_renderPassEncoder.beginPass(desc)); + *outEncoder = &m_renderPassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeComputeCommands(IComputeCommandEncoder** outEncoder) +Result CommandBufferImpl::beginComputePass(IComputePassEncoder** outEncoder) { - m_computeCommandEncoder.init(this); - *outEncoder = &m_computeCommandEncoder; + m_computePassEncoder.init(this); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRayTracingPass(IRayTracingPassEncoder** outEncoder) { if (!m_device->m_api.vkCmdBuildAccelerationStructuresKHR) return SLANG_E_NOT_AVAILABLE; - m_rayTracingCommandEncoder.init(this); - *outEncoder = &m_rayTracingCommandEncoder; + m_rayTracingPassEncoder.init(this); + *outEncoder = &m_rayTracingPassEncoder; return SLANG_OK; } diff --git a/src/vulkan/vk-command-buffer.h b/src/vulkan/vk-command-buffer.h index 5c89dd1..dadc35b 100644 --- a/src/vulkan/vk-command-buffer.h +++ b/src/vulkan/vk-command-buffer.h @@ -31,10 +31,10 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject StateTracking m_stateTracking; - ResourceCommandEncoderImpl m_resourceCommandEncoder; - RenderCommandEncoderImpl m_renderCommandEncoder; - ComputeCommandEncoderImpl m_computeCommandEncoder; - RayTracingCommandEncoderImpl m_rayTracingCommandEncoder; + ResourcePassEncoderImpl m_resourcePassEncoder; + RenderPassEncoderImpl m_renderPassEncoder; + ComputePassEncoderImpl m_computePassEncoder; + RayTracingPassEncoderImpl m_rayTracingPassEncoder; // Command buffers are deallocated by its command pool, // so no need to free individually. @@ -53,11 +53,11 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject void commitBarriers(); public: - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) override; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override; virtual SLANG_NO_THROW void SLANG_MCALL close() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; }; diff --git a/src/vulkan/vk-command-encoder.cpp b/src/vulkan/vk-command-encoder.cpp index 914e64f..298dce2 100644 --- a/src/vulkan/vk-command-encoder.cpp +++ b/src/vulkan/vk-command-encoder.cpp @@ -19,19 +19,19 @@ namespace rhi::vk { -// CommandEncoderImpl +// PassEncoderImpl -void CommandEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) +void PassEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) { m_commandBuffer->m_stateTracking.setBufferState(static_cast(buffer), state); } -void CommandEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) +void PassEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) { m_commandBuffer->m_stateTracking.setTextureState(static_cast(texture), subresourceRange, state); } -void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) +void PassEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) { auto& api = m_commandBuffer->m_device->m_api; if (api.vkCmdBeginDebugUtilsLabelEXT) @@ -46,7 +46,7 @@ void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) } } -void CommandEncoderImpl::endDebugEvent() +void PassEncoderImpl::endDebugEvent() { auto& api = m_commandBuffer->m_device->m_api; if (api.vkCmdEndDebugUtilsLabelEXT) @@ -55,12 +55,12 @@ void CommandEncoderImpl::endDebugEvent() } } -void CommandEncoderImpl::writeTimestamp(IQueryPool* queryPool, GfxIndex index) +void PassEncoderImpl::writeTimestamp(IQueryPool* queryPool, GfxIndex index) { _writeTimestamp(&m_commandBuffer->m_device->m_api, m_commandBuffer->m_commandBuffer, queryPool, index); } -int CommandEncoderImpl::getBindPointIndex(VkPipelineBindPoint bindPoint) +int PassEncoderImpl::getBindPointIndex(VkPipelineBindPoint bindPoint) { switch (bindPoint) { @@ -76,7 +76,7 @@ int CommandEncoderImpl::getBindPointIndex(VkPipelineBindPoint bindPoint) } } -void CommandEncoderImpl::init(CommandBufferImpl* commandBuffer) +void PassEncoderImpl::init(CommandBufferImpl* commandBuffer) { m_commandBuffer = commandBuffer; m_device = commandBuffer->m_device; @@ -84,13 +84,13 @@ void CommandEncoderImpl::init(CommandBufferImpl* commandBuffer) m_api = &m_commandBuffer->m_device->m_api; } -void CommandEncoderImpl::endEncodingImpl() +void PassEncoderImpl::endEncodingImpl() { for (auto& pipeline : m_boundPipelines) pipeline = VK_NULL_HANDLE; } -void CommandEncoderImpl::_uploadBufferData( +void PassEncoderImpl::_uploadBufferData( VulkanApi* api, VkCommandBuffer commandBuffer, TransientResourceHeapImpl* transientHeap, @@ -126,7 +126,7 @@ void CommandEncoderImpl::_uploadBufferData( api->vkCmdCopyBuffer(commandBuffer, stagingBufferImpl->m_buffer.m_buffer, buffer->m_buffer.m_buffer, 1, ©Info); } -void CommandEncoderImpl::uploadBufferDataImpl(IBuffer* buffer, Offset offset, Size size, void* data) +void PassEncoderImpl::uploadBufferDataImpl(IBuffer* buffer, Offset offset, Size size, void* data) { m_vkPreCommandBuffer = m_commandBuffer->getPreCommandBuffer(); _uploadBufferData( @@ -140,10 +140,7 @@ void CommandEncoderImpl::uploadBufferDataImpl(IBuffer* buffer, Offset offset, Si ); } -Result CommandEncoderImpl::bindRootShaderObjectImpl( - RootShaderObjectImpl* rootShaderObject, - VkPipelineBindPoint bindPoint -) +Result PassEncoderImpl::bindRootShaderObjectImpl(RootShaderObjectImpl* rootShaderObject, VkPipelineBindPoint bindPoint) { // Obtain specialized root layout. auto specializedLayout = rootShaderObject->getSpecializedLayout(); @@ -203,7 +200,7 @@ Result CommandEncoderImpl::bindRootShaderObjectImpl( return SLANG_OK; } -Result CommandEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** outRootObject) +Result PassEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** outRootObject) { m_currentPipeline = static_cast(state); m_commandBuffer->m_mutableRootShaderObject = nullptr; @@ -215,14 +212,14 @@ Result CommandEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** out return SLANG_OK; } -Result CommandEncoderImpl::setPipelineWithRootObjectImpl(IPipeline* state, IShaderObject* rootObject) +Result PassEncoderImpl::setPipelineWithRootObjectImpl(IPipeline* state, IShaderObject* rootObject) { m_currentPipeline = static_cast(state); m_commandBuffer->m_mutableRootShaderObject = static_cast(rootObject); return SLANG_OK; } -Result CommandEncoderImpl::bindRenderState(VkPipelineBindPoint pipelineBindPoint) +Result PassEncoderImpl::bindRenderState(VkPipelineBindPoint pipelineBindPoint) { auto& api = *m_api; @@ -250,9 +247,9 @@ Result CommandEncoderImpl::bindRenderState(VkPipelineBindPoint pipelineBindPoint return SLANG_OK; } -// ResourceCommandEncoderImpl +// ResourcePassEncoderImpl -void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) +void ResourcePassEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) { auto& vkAPI = m_commandBuffer->m_device->m_api; @@ -281,14 +278,14 @@ void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuf ); } -void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset, Size size, void* data) +void ResourcePassEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset, Size size, void* data) { BufferImpl* bufferImpl = static_cast(buffer); m_commandBuffer->requireBufferState(bufferImpl, ResourceState::CopyDestination); m_commandBuffer->commitBarriers(); - CommandEncoderImpl::_uploadBufferData( + PassEncoderImpl::_uploadBufferData( m_api, m_commandBuffer->m_commandBuffer, m_commandBuffer->m_transientHeap.get(), @@ -300,7 +297,7 @@ void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset } -void ResourceCommandEncoderImpl::endEncoding() +void ResourcePassEncoderImpl::end() { // Insert memory barrier to ensure transfers are visible to the GPU. auto& vkAPI = m_commandBuffer->m_device->m_api; @@ -322,7 +319,7 @@ void ResourceCommandEncoderImpl::endEncoding() ); } -void ResourceCommandEncoderImpl::copyTexture( +void ResourcePassEncoderImpl::copyTexture( ITexture* dst, SubresourceRange dstSubresource, Offset3D dstOffset, @@ -384,7 +381,7 @@ void ResourceCommandEncoderImpl::copyTexture( ); } -void ResourceCommandEncoderImpl::uploadTextureData( +void ResourcePassEncoderImpl::uploadTextureData( ITexture* dst, SubresourceRange subresourceRange, Offset3D offset, @@ -527,7 +524,7 @@ void ResourceCommandEncoderImpl::uploadTextureData( } #if 0 -void ResourceCommandEncoderImpl::_clearColorImage(TextureViewImpl* viewImpl, ClearValue* clearValue) +void ResourcePassEncoderImpl::_clearColorImage(TextureViewImpl* viewImpl, ClearValue* clearValue) { auto& api = m_commandBuffer->m_device->m_api; auto layout = viewImpl->m_layout; @@ -576,7 +573,7 @@ void ResourceCommandEncoderImpl::_clearColorImage(TextureViewImpl* viewImpl, Cle } } -void ResourceCommandEncoderImpl::_clearDepthImage( +void ResourcePassEncoderImpl::_clearDepthImage( TextureViewImpl* viewImpl, ClearValue* clearValue, ClearResourceViewFlags::Enum flags @@ -643,7 +640,7 @@ void ResourceCommandEncoderImpl::_clearDepthImage( } } -void ResourceCommandEncoderImpl::_clearBuffer( +void ResourcePassEncoderImpl::_clearBuffer( VkBuffer buffer, uint64_t bufferSize, const IResourceView::Desc& desc, @@ -656,7 +653,7 @@ void ResourceCommandEncoderImpl::_clearBuffer( api.vkCmdFillBuffer(m_commandBuffer->m_commandBuffer, buffer, clearOffset, clearSize, clearValue); } -void ResourceCommandEncoderImpl::clearResourceView( +void ResourcePassEncoderImpl::clearResourceView( IResourceView* view, ClearValue* clearValue, ClearResourceViewFlags::Enum flags @@ -739,7 +736,7 @@ void ResourceCommandEncoderImpl::clearResourceView( } #endif -void ResourceCommandEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) +void ResourcePassEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) { BufferImpl* bufferImpl = static_cast(buffer); @@ -752,7 +749,7 @@ void ResourceCommandEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* api.vkCmdFillBuffer(m_commandBuffer->m_commandBuffer, bufferImpl->m_buffer.m_buffer, offset, size, 0); } -void ResourceCommandEncoderImpl::clearTexture( +void ResourcePassEncoderImpl::clearTexture( ITexture* texture, const ClearValue& clearValue, const SubresourceRange* subresourceRange, @@ -763,7 +760,7 @@ void ResourceCommandEncoderImpl::clearTexture( SLANG_RHI_UNIMPLEMENTED("clearTexture"); } -void ResourceCommandEncoderImpl::resolveQuery( +void ResourcePassEncoderImpl::resolveQuery( IQueryPool* queryPool, GfxIndex index, GfxCount count, @@ -790,7 +787,7 @@ void ResourceCommandEncoderImpl::resolveQuery( ); } -void ResourceCommandEncoderImpl::copyTextureToBuffer( +void ResourcePassEncoderImpl::copyTextureToBuffer( IBuffer* dst, Offset dstOffset, Size dstSize, @@ -832,9 +829,9 @@ void ResourceCommandEncoderImpl::copyTextureToBuffer( ); } -// RenderCommandEncoderImpl +// RenderPassEncoderImpl -Result RenderCommandEncoderImpl::beginPass(const RenderPassDesc& desc) +Result RenderPassEncoderImpl::beginPass(const RenderPassDesc& desc) { auto& api = *m_api; @@ -966,7 +963,7 @@ Result RenderCommandEncoderImpl::beginPass(const RenderPassDesc& desc) return SLANG_OK; } -void RenderCommandEncoderImpl::endEncoding() +void RenderPassEncoderImpl::end() { auto& api = *m_api; api.vkCmdEndRenderingKHR(m_vkCommandBuffer); @@ -978,17 +975,17 @@ void RenderCommandEncoderImpl::endEncoding() endEncodingImpl(); } -Result RenderCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result RenderPassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return setPipelineImpl(pipeline, outRootObject); } -Result RenderCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result RenderPassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return setPipelineWithRootObjectImpl(pipeline, rootObject); } -void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) +void RenderPassEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) { static const int kMaxViewports = 8; // TODO: base on device caps SLANG_RHI_ASSERT(count <= kMaxViewports); @@ -1011,7 +1008,7 @@ void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* view api.vkCmdSetViewport(m_vkCommandBuffer, 0, uint32_t(count), m_viewports.data()); } -void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) +void RenderPassEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) { static const int kMaxScissorRects = 8; // TODO: base on device caps SLANG_RHI_ASSERT(count <= kMaxScissorRects); @@ -1032,7 +1029,7 @@ void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect api.vkCmdSetScissor(m_vkCommandBuffer, 0, uint32_t(m_scissorRects.size()), m_scissorRects.data()); } -void RenderCommandEncoderImpl::setVertexBuffers( +void RenderPassEncoderImpl::setVertexBuffers( GfxIndex startSlot, GfxCount slotCount, IBuffer* const* buffers, @@ -1053,7 +1050,7 @@ void RenderCommandEncoderImpl::setVertexBuffers( } } -void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) +void RenderPassEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) { VkIndexType indexType = VK_INDEX_TYPE_UINT16; switch (indexFormat) @@ -1073,7 +1070,7 @@ void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat index m_api->vkCmdBindIndexBuffer(m_vkCommandBuffer, bufferImpl->m_buffer.m_buffer, (VkDeviceSize)offset, indexType); } -Result RenderCommandEncoderImpl::prepareDraw() +Result RenderPassEncoderImpl::prepareDraw() { auto pipeline = static_cast(m_currentPipeline.Ptr()); if (!pipeline) @@ -1084,7 +1081,7 @@ Result RenderCommandEncoderImpl::prepareDraw() return SLANG_OK; } -Result RenderCommandEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) +Result RenderPassEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) { SLANG_RETURN_ON_FAIL(prepareDraw()); auto& api = *m_api; @@ -1092,7 +1089,7 @@ Result RenderCommandEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) +Result RenderPassEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) { SLANG_RETURN_ON_FAIL(prepareDraw()); auto& api = *m_api; @@ -1100,13 +1097,13 @@ Result RenderCommandEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex start return SLANG_OK; } -void RenderCommandEncoderImpl::setStencilReference(uint32_t referenceValue) +void RenderPassEncoderImpl::setStencilReference(uint32_t referenceValue) { auto& api = *m_api; api.vkCmdSetStencilReference(m_vkCommandBuffer, VK_STENCIL_FRONT_AND_BACK, referenceValue); } -Result RenderCommandEncoderImpl::drawIndirect( +Result RenderPassEncoderImpl::drawIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -1131,7 +1128,7 @@ Result RenderCommandEncoderImpl::drawIndirect( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexedIndirect( +Result RenderPassEncoderImpl::drawIndexedIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -1157,7 +1154,7 @@ Result RenderCommandEncoderImpl::drawIndexedIndirect( return SLANG_OK; } -Result RenderCommandEncoderImpl::setSamplePositions( +Result RenderPassEncoderImpl::setSamplePositions( GfxCount samplesPerPixel, GfxCount pixelCount, const SamplePosition* samplePositions @@ -1175,7 +1172,7 @@ Result RenderCommandEncoderImpl::setSamplePositions( return SLANG_E_NOT_AVAILABLE; } -Result RenderCommandEncoderImpl::drawInstanced( +Result RenderPassEncoderImpl::drawInstanced( GfxCount vertexCount, GfxCount instanceCount, GfxIndex startVertex, @@ -1188,7 +1185,7 @@ Result RenderCommandEncoderImpl::drawInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexedInstanced( +Result RenderPassEncoderImpl::drawIndexedInstanced( GfxCount indexCount, GfxCount instanceCount, GfxIndex startIndexLocation, @@ -1209,7 +1206,7 @@ Result RenderCommandEncoderImpl::drawIndexedInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawMeshTasks(int x, int y, int z) +Result RenderPassEncoderImpl::drawMeshTasks(int x, int y, int z) { SLANG_RETURN_ON_FAIL(prepareDraw()); auto& api = *m_api; @@ -1217,24 +1214,24 @@ Result RenderCommandEncoderImpl::drawMeshTasks(int x, int y, int z) return SLANG_OK; } -// ComputeCommandEncoderImpl +// ComputePassEncoderImpl -void ComputeCommandEncoderImpl::endEncoding() +void ComputePassEncoderImpl::end() { endEncodingImpl(); } -Result ComputeCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result ComputePassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return setPipelineImpl(pipeline, outRootObject); } -Result ComputeCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result ComputePassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return setPipelineWithRootObjectImpl(pipeline, rootObject); } -Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) +Result ComputePassEncoderImpl::dispatchCompute(int x, int y, int z) { auto pipeline = static_cast(m_currentPipeline.Ptr()); if (!pipeline) @@ -1248,14 +1245,14 @@ Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) return SLANG_OK; } -Result ComputeCommandEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) +Result ComputePassEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) { SLANG_RHI_UNIMPLEMENTED("dispatchComputeIndirect"); } -// RayTracingCommandEncoderImpl +// RayTracingPassEncoderImpl -void RayTracingCommandEncoderImpl::_memoryBarrier( +void RayTracingPassEncoderImpl::_memoryBarrier( int count, IAccelerationStructure* const* structures, AccessFlag srcAccess, @@ -1295,7 +1292,7 @@ void RayTracingCommandEncoderImpl::_memoryBarrier( ); } -void RayTracingCommandEncoderImpl::_queryAccelerationStructureProperties( +void RayTracingPassEncoderImpl::_queryAccelerationStructureProperties( GfxCount accelerationStructureCount, IAccelerationStructure* const* accelerationStructures, GfxCount queryCount, @@ -1347,7 +1344,7 @@ void RayTracingCommandEncoderImpl::_queryAccelerationStructureProperties( } } -void RayTracingCommandEncoderImpl::buildAccelerationStructure( +void RayTracingPassEncoderImpl::buildAccelerationStructure( const AccelerationStructureBuildDesc& desc, IAccelerationStructure* dst, IAccelerationStructure* src, @@ -1393,7 +1390,7 @@ void RayTracingCommandEncoderImpl::buildAccelerationStructure( } } -void RayTracingCommandEncoderImpl::copyAccelerationStructure( +void RayTracingPassEncoderImpl::copyAccelerationStructure( IAccelerationStructure* dst, IAccelerationStructure* src, AccelerationStructureCopyMode mode @@ -1421,7 +1418,7 @@ void RayTracingCommandEncoderImpl::copyAccelerationStructure( m_commandBuffer->m_device->m_api.vkCmdCopyAccelerationStructureKHR(m_commandBuffer->m_commandBuffer, ©Info); } -void RayTracingCommandEncoderImpl::queryAccelerationStructureProperties( +void RayTracingPassEncoderImpl::queryAccelerationStructureProperties( GfxCount accelerationStructureCount, IAccelerationStructure* const* accelerationStructures, GfxCount queryCount, @@ -1431,7 +1428,7 @@ void RayTracingCommandEncoderImpl::queryAccelerationStructureProperties( _queryAccelerationStructureProperties(accelerationStructureCount, accelerationStructures, queryCount, queryDescs); } -void RayTracingCommandEncoderImpl::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) +void RayTracingPassEncoderImpl::serializeAccelerationStructure(BufferWithOffset dst, IAccelerationStructure* src) { VkCopyAccelerationStructureToMemoryInfoKHR copyInfo = { VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR @@ -1445,7 +1442,7 @@ void RayTracingCommandEncoderImpl::serializeAccelerationStructure(BufferWithOffs ); } -void RayTracingCommandEncoderImpl::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) +void RayTracingPassEncoderImpl::deserializeAccelerationStructure(IAccelerationStructure* dst, BufferWithOffset src) { VkCopyMemoryToAccelerationStructureInfoKHR copyInfo = { VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR @@ -1459,17 +1456,17 @@ void RayTracingCommandEncoderImpl::deserializeAccelerationStructure(IAcceleratio ); } -Result RayTracingCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result RayTracingPassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return setPipelineImpl(pipeline, outRootObject); } -Result RayTracingCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result RayTracingPassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return setPipelineWithRootObjectImpl(pipeline, rootObject); } -Result RayTracingCommandEncoderImpl::dispatchRays( +Result RayTracingPassEncoderImpl::dispatchRays( GfxIndex raygenShaderIndex, IShaderTable* shaderTable, GfxCount width, @@ -1524,7 +1521,7 @@ Result RayTracingCommandEncoderImpl::dispatchRays( return SLANG_OK; } -void RayTracingCommandEncoderImpl::endEncoding() +void RayTracingPassEncoderImpl::end() { endEncodingImpl(); } diff --git a/src/vulkan/vk-command-encoder.h b/src/vulkan/vk-command-encoder.h index 6398a24..2a4f697 100644 --- a/src/vulkan/vk-command-encoder.h +++ b/src/vulkan/vk-command-encoder.h @@ -9,12 +9,12 @@ namespace rhi::vk { -class CommandEncoderImpl : public ICommandEncoder +class PassEncoderImpl : public IPassEncoder { public: virtual void* getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_ICommandEncoder || uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } @@ -77,13 +77,13 @@ class CommandEncoderImpl : public ICommandEncoder Result bindRenderState(VkPipelineBindPoint pipelineBindPoint); }; -class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public CommandEncoderImpl +class ResourcePassEncoderImpl : public IResourcePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IResourceCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IResourcePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -92,7 +92,7 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) override; @@ -143,13 +143,13 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman ) override; }; -class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEncoderImpl +class RenderPassEncoderImpl : public IRenderPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRenderCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRenderPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -168,7 +168,7 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc public: Result beginPass(const RenderPassDesc& desc); - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) override; @@ -223,13 +223,13 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc virtual SLANG_NO_THROW Result SLANG_MCALL drawMeshTasks(int x, int y, int z) override; }; -class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public ResourceCommandEncoderImpl +class ComputePassEncoderImpl : public IComputePassEncoder, public ResourcePassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IComputeCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IComputePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -238,7 +238,7 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public Resource } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) override; @@ -250,13 +250,13 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public Resource virtual SLANG_NO_THROW Result SLANG_MCALL dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) override; }; -class RayTracingCommandEncoderImpl : public IRayTracingCommandEncoder, public CommandEncoderImpl +class RayTracingPassEncoderImpl : public IRayTracingPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override { - if (uuid == GUID::IID_IRayTracingCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IRayTracingPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -265,7 +265,7 @@ class RayTracingCommandEncoderImpl : public IRayTracingCommandEncoder, public Co } public: - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; void _memoryBarrier( int count, diff --git a/src/vulkan/vk-shader-object.cpp b/src/vulkan/vk-shader-object.cpp index 5a43334..484e9cb 100644 --- a/src/vulkan/vk-shader-object.cpp +++ b/src/vulkan/vk-shader-object.cpp @@ -227,7 +227,7 @@ Result ShaderObjectImpl::init(IDevice* device, ShaderObjectLayoutImpl* layout) } Result ShaderObjectImpl::_writeOrdinaryData( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, IBuffer* buffer, Offset offset, Size destSize, @@ -613,7 +613,7 @@ bool ShaderObjectImpl::shouldAllocateConstantBuffer(TransientResourceHeapImpl* t } Result ShaderObjectImpl::_ensureOrdinaryDataBufferCreatedIfNeeded( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, ShaderObjectLayoutImpl* specializedLayout ) { @@ -654,7 +654,7 @@ Result ShaderObjectImpl::_ensureOrdinaryDataBufferCreatedIfNeeded( } Result ShaderObjectImpl::bindAsValue( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& offset, ShaderObjectLayoutImpl* specializedLayout @@ -878,7 +878,7 @@ Result ShaderObjectImpl::bindAsValue( } Result ShaderObjectImpl::allocateDescriptorSets( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& offset, ShaderObjectLayoutImpl* specializedLayout @@ -906,7 +906,7 @@ Result ShaderObjectImpl::allocateDescriptorSets( } Result ShaderObjectImpl::bindAsParameterBlock( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -942,7 +942,7 @@ Result ShaderObjectImpl::bindAsParameterBlock( } Result ShaderObjectImpl::bindOrdinaryDataBufferIfNeeded( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset& ioOffset, ShaderObjectLayoutImpl* specializedLayout @@ -974,7 +974,7 @@ Result ShaderObjectImpl::bindOrdinaryDataBufferIfNeeded( } Result ShaderObjectImpl::bindAsConstantBuffer( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -1086,7 +1086,7 @@ EntryPointLayout* EntryPointShaderObject::getLayout() } Result EntryPointShaderObject::bindAsEntryPoint( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, EntryPointLayout* layout @@ -1201,7 +1201,7 @@ void RootShaderObjectImpl::setResourceStates(StateTracking& stateTracking) } Result RootShaderObjectImpl::bindAsRoot( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, RootShaderObjectLayout* layout ) diff --git a/src/vulkan/vk-shader-object.h b/src/vulkan/vk-shader-object.h index 60993c3..e626188 100644 --- a/src/vulkan/vk-shader-object.h +++ b/src/vulkan/vk-shader-object.h @@ -62,7 +62,7 @@ class ShaderObjectImpl : public ShaderObjectBaseImpl`. Result bindAsParameterBlock( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -172,7 +172,7 @@ class ShaderObjectImpl : public ShaderObjectBaseImpl`. Result bindAsConstantBuffer( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -234,7 +234,7 @@ class EntryPointShaderObject : public ShaderObjectImpl /// Bind this shader object as an entry point Result bindAsEntryPoint( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, EntryPointLayout* layout @@ -270,7 +270,7 @@ class RootShaderObjectImpl : public ShaderObjectImpl void setResourceStates(StateTracking& stateTracking); /// Bind this object as a root shader object - Result bindAsRoot(CommandEncoderImpl* encoder, RootBindingContext& context, RootShaderObjectLayout* layout); + Result bindAsRoot(PassEncoderImpl* encoder, RootBindingContext& context, RootShaderObjectLayout* layout); virtual Result collectSpecializationArgs(ExtendedShaderObjectTypeList& args) override; diff --git a/src/vulkan/vk-shader-table.cpp b/src/vulkan/vk-shader-table.cpp index 7ebcaf9..87d6da2 100644 --- a/src/vulkan/vk-shader-table.cpp +++ b/src/vulkan/vk-shader-table.cpp @@ -10,7 +10,7 @@ namespace rhi::vk { RefPtr ShaderTableImpl::createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) { auto vkApi = m_device->m_api; @@ -123,7 +123,7 @@ RefPtr ShaderTableImpl::createDeviceBuffer( copyRegion.srcOffset = stagingBufferOffset; copyRegion.size = tableSize; vkApi.vkCmdCopyBuffer( - static_cast(encoder)->m_commandBuffer->m_commandBuffer, + static_cast(encoder)->m_commandBuffer->m_commandBuffer, static_cast(stagingBuffer)->m_buffer.m_buffer, static_cast(buffer.get())->m_buffer.m_buffer, /* regionCount: */ 1, diff --git a/src/vulkan/vk-shader-table.h b/src/vulkan/vk-shader-table.h index c7f2bca..fad0137 100644 --- a/src/vulkan/vk-shader-table.h +++ b/src/vulkan/vk-shader-table.h @@ -17,7 +17,7 @@ class ShaderTableImpl : public ShaderTable virtual RefPtr createDeviceBuffer( Pipeline* pipeline, TransientResourceHeap* transientHeap, - IRayTracingCommandEncoder* encoder + IRayTracingPassEncoder* encoder ) override; }; diff --git a/src/wgpu/wgpu-base.h b/src/wgpu/wgpu-base.h index 66fcdc3..82318c2 100644 --- a/src/wgpu/wgpu-base.h +++ b/src/wgpu/wgpu-base.h @@ -24,16 +24,16 @@ class ShaderObjectLayoutImpl; class EntryPointLayout; class RootShaderObjectLayout; class ShaderProgramImpl; -class CommandEncoderImpl; +class PassEncoderImpl; class ShaderObjectImpl; class MutableShaderObjectImpl; class RootShaderObjectImpl; class MutableRootShaderObjectImpl; class ShaderTableImpl; -class ResourceCommandEncoderImpl; -class RenderCommandEncoderImpl; -class ComputeCommandEncoderImpl; -class RayTracingCommandEncoder; +class ResourcePassEncoderImpl; +class RenderPassEncoderImpl; +class ComputePassEncoderImpl; +class RayTracingPassEncoderImpl; class CommandBufferImpl; class CommandQueueImpl; class TransientResourceHeapImpl; diff --git a/src/wgpu/wgpu-command-buffer.cpp b/src/wgpu/wgpu-command-buffer.cpp index debf6de..28de594 100644 --- a/src/wgpu/wgpu-command-buffer.cpp +++ b/src/wgpu/wgpu-command-buffer.cpp @@ -13,28 +13,28 @@ ICommandBuffer* CommandBufferImpl::getInterface(const Guid& guid) CommandBufferImpl::~CommandBufferImpl() {} -Result CommandBufferImpl::encodeResourceCommands(IResourceCommandEncoder** outEncoder) +Result CommandBufferImpl::beginResourcePass(IResourcePassEncoder** outEncoder) { - SLANG_RETURN_ON_FAIL(m_resourceCommandEncoder.init(this)); - *outEncoder = &m_resourceCommandEncoder; + SLANG_RETURN_ON_FAIL(m_resourcePassEncoder.init(this)); + *outEncoder = &m_resourcePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) { - SLANG_RETURN_ON_FAIL(m_renderCommandEncoder.init(this, desc)); - *outEncoder = &m_renderCommandEncoder; + SLANG_RETURN_ON_FAIL(m_renderPassEncoder.init(this, desc)); + *outEncoder = &m_renderPassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeComputeCommands(IComputeCommandEncoder** outEncoder) +Result CommandBufferImpl::beginComputePass(IComputePassEncoder** outEncoder) { - SLANG_RETURN_ON_FAIL(m_computeCommandEncoder.init(this)); - *outEncoder = &m_computeCommandEncoder; + SLANG_RETURN_ON_FAIL(m_computePassEncoder.init(this)); + *outEncoder = &m_computePassEncoder; return SLANG_OK; } -Result CommandBufferImpl::encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) +Result CommandBufferImpl::beginRayTracingPass(IRayTracingPassEncoder** outEncoder) { return SLANG_E_NOT_AVAILABLE; } diff --git a/src/wgpu/wgpu-command-buffer.h b/src/wgpu/wgpu-command-buffer.h index f1e29fe..d1c68b0 100644 --- a/src/wgpu/wgpu-command-buffer.h +++ b/src/wgpu/wgpu-command-buffer.h @@ -22,18 +22,18 @@ class CommandBufferImpl : public ICommandBuffer, public ComObject RootShaderObjectImpl m_rootObject; RefPtr m_mutableRootShaderObject; - ResourceCommandEncoderImpl m_resourceCommandEncoder; - RenderCommandEncoderImpl m_renderCommandEncoder; - ComputeCommandEncoderImpl m_computeCommandEncoder; + ResourcePassEncoderImpl m_resourcePassEncoder; + RenderPassEncoderImpl m_renderPassEncoder; + ComputePassEncoderImpl m_computePassEncoder; ~CommandBufferImpl(); // ICommandBuffer implementation - virtual SLANG_NO_THROW Result SLANG_MCALL encodeResourceCommands(IResourceCommandEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginResourcePass(IResourcePassEncoder** outEncoder) override; virtual SLANG_NO_THROW Result SLANG_MCALL - encodeRenderCommands(const RenderPassDesc& desc, IRenderCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeComputeCommands(IComputeCommandEncoder** outEncoder) override; - virtual SLANG_NO_THROW Result SLANG_MCALL encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override; + beginRenderPass(const RenderPassDesc& desc, IRenderPassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginComputePass(IComputePassEncoder** outEncoder) override; + virtual SLANG_NO_THROW Result SLANG_MCALL beginRayTracingPass(IRayTracingPassEncoder** outEncoder) override; virtual SLANG_NO_THROW void SLANG_MCALL close() override; virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(NativeHandle* outHandle) override; }; diff --git a/src/wgpu/wgpu-command-encoder.cpp b/src/wgpu/wgpu-command-encoder.cpp index 25aefd0..835ae3e 100644 --- a/src/wgpu/wgpu-command-encoder.cpp +++ b/src/wgpu/wgpu-command-encoder.cpp @@ -10,14 +10,14 @@ namespace rhi::wgpu { -void* CommandEncoderImpl::getInterface(SlangUUID const& uuid) +void* PassEncoderImpl::getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_ICommandEncoder || uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) return this; return nullptr; } -Result CommandEncoderImpl::queryInterface(SlangUUID const& uuid, void** outObject) +Result PassEncoderImpl::queryInterface(SlangUUID const& uuid, void** outObject) { if (auto ptr = getInterface(uuid)) { @@ -27,26 +27,26 @@ Result CommandEncoderImpl::queryInterface(SlangUUID const& uuid, void** outObjec return SLANG_E_NO_INTERFACE; } -uint32_t CommandEncoderImpl::addRef() +uint32_t PassEncoderImpl::addRef() { return 1; } -uint32_t CommandEncoderImpl::release() +uint32_t PassEncoderImpl::release() { return 1; } -CommandEncoderImpl::~CommandEncoderImpl() {} +PassEncoderImpl::~PassEncoderImpl() {} -void CommandEncoderImpl::init(CommandBufferImpl* commandBuffer) +void PassEncoderImpl::init(CommandBufferImpl* commandBuffer) { m_device = commandBuffer->m_device; m_commandBuffer = commandBuffer; m_commandEncoder = commandBuffer->m_commandEncoder; } -Result CommandEncoderImpl::bindPipelineImpl(RootBindingContext& context) +Result PassEncoderImpl::bindPipelineImpl(RootBindingContext& context) { // Get specialized pipeline state and bind it. RootShaderObjectImpl* rootObjectImpl = m_commandBuffer->m_mutableRootShaderObject @@ -86,9 +86,9 @@ Result CommandEncoderImpl::bindPipelineImpl(RootBindingContext& context) return SLANG_OK; } -void CommandEncoderImpl::endEncodingImpl() {} +void PassEncoderImpl::endEncodingImpl() {} -void CommandEncoderImpl::uploadBufferDataImpl(IBuffer* buffer, Offset offset, Size size, void* data) +void PassEncoderImpl::uploadBufferDataImpl(IBuffer* buffer, Offset offset, Size size, void* data) { // Copy to staging buffer IBuffer* stagingBuffer = nullptr; @@ -114,7 +114,7 @@ void CommandEncoderImpl::uploadBufferDataImpl(IBuffer* buffer, Offset offset, Si ); } -Result CommandEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** outRootObject) +Result PassEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** outRootObject) { m_currentPipeline = static_cast(state); m_commandBuffer->m_mutableRootShaderObject = nullptr; @@ -126,33 +126,33 @@ Result CommandEncoderImpl::setPipelineImpl(IPipeline* state, IShaderObject** out return SLANG_OK; } -Result CommandEncoderImpl::setPipelineWithRootObjectImpl(IPipeline* state, IShaderObject* rootObject) +Result PassEncoderImpl::setPipelineWithRootObjectImpl(IPipeline* state, IShaderObject* rootObject) { m_currentPipeline = static_cast(state); m_commandBuffer->m_mutableRootShaderObject = static_cast(rootObject); return SLANG_OK; } -void CommandEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) +void PassEncoderImpl::setBufferState(IBuffer* buffer, ResourceState state) { // WGPU doesn't have explicit barriers. } -void CommandEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) +void PassEncoderImpl::setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) { // WGPU doesn't have explicit barriers. } -void CommandEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) {} +void PassEncoderImpl::beginDebugEvent(const char* name, float rgbColor[3]) {} -void CommandEncoderImpl::endDebugEvent() {} +void PassEncoderImpl::endDebugEvent() {} -void CommandEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index) {} +void PassEncoderImpl::writeTimestamp(IQueryPool* pool, GfxIndex index) {} -void* ResourceCommandEncoderImpl::getInterface(SlangUUID const& uuid) +void* ResourcePassEncoderImpl::getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_IResourceCommandEncoder || uuid == GUID::IID_ICommandEncoder || + if (uuid == GUID::IID_IResourcePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; @@ -160,18 +160,18 @@ void* ResourceCommandEncoderImpl::getInterface(SlangUUID const& uuid) return nullptr; } -Result ResourceCommandEncoderImpl::init(CommandBufferImpl* commandBuffer) +Result ResourcePassEncoderImpl::init(CommandBufferImpl* commandBuffer) { - CommandEncoderImpl::init(commandBuffer); + PassEncoderImpl::init(commandBuffer); return SLANG_OK; } -void ResourceCommandEncoderImpl::endEncoding() +void ResourcePassEncoderImpl::end() { endEncodingImpl(); } -void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) +void ResourcePassEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) { BufferImpl* dstBuffer = static_cast(dst); BufferImpl* srcBuffer = static_cast(src); @@ -185,7 +185,7 @@ void ResourceCommandEncoderImpl::copyBuffer(IBuffer* dst, Offset dstOffset, IBuf ); } -void ResourceCommandEncoderImpl::copyTexture( +void ResourcePassEncoderImpl::copyTexture( ITexture* dst, SubresourceRange dstSubresource, Offset3D dstOffset, @@ -199,7 +199,7 @@ void ResourceCommandEncoderImpl::copyTexture( TextureImpl* srcTexture = static_cast(src); } -void ResourceCommandEncoderImpl::copyTextureToBuffer( +void ResourcePassEncoderImpl::copyTextureToBuffer( IBuffer* dst, Offset dstOffset, Size dstSize, @@ -212,12 +212,12 @@ void ResourceCommandEncoderImpl::copyTextureToBuffer( { } -void ResourceCommandEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset, Size size, void* data) +void ResourcePassEncoderImpl::uploadBufferData(IBuffer* buffer, Offset offset, Size size, void* data) { SLANG_RHI_UNIMPLEMENTED("uploadBufferData"); } -void ResourceCommandEncoderImpl::uploadTextureData( +void ResourcePassEncoderImpl::uploadTextureData( ITexture* dst, SubresourceRange subresourceRange, Offset3D offset, @@ -229,7 +229,7 @@ void ResourceCommandEncoderImpl::uploadTextureData( SLANG_RHI_UNIMPLEMENTED("uploadTextureData"); } -void ResourceCommandEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) +void ResourcePassEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* range) { BufferImpl* bufferImpl = static_cast(buffer); uint64_t offset = range ? range->offset : 0; @@ -237,7 +237,7 @@ void ResourceCommandEncoderImpl::clearBuffer(IBuffer* buffer, const BufferRange* m_device->m_ctx.api.wgpuCommandEncoderClearBuffer(m_commandEncoder, bufferImpl->m_buffer, offset, size); } -void ResourceCommandEncoderImpl::clearTexture( +void ResourcePassEncoderImpl::clearTexture( ITexture* texture, const ClearValue& clearValue, const SubresourceRange* subresourceRange, @@ -247,7 +247,7 @@ void ResourceCommandEncoderImpl::clearTexture( { } -void ResourceCommandEncoderImpl::resolveQuery( +void ResourcePassEncoderImpl::resolveQuery( IQueryPool* queryPool, GfxIndex index, GfxCount count, @@ -258,19 +258,18 @@ void ResourceCommandEncoderImpl::resolveQuery( SLANG_RHI_UNIMPLEMENTED("resolveQuery"); } -void* RenderCommandEncoderImpl::getInterface(SlangUUID const& uuid) +void* RenderPassEncoderImpl::getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_IRenderCommandEncoder || uuid == GUID::IID_ICommandEncoder || - uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IRenderPassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; } return nullptr; } -Result RenderCommandEncoderImpl::init(CommandBufferImpl* commandBuffer, const RenderPassDesc& desc) +Result RenderPassEncoderImpl::init(CommandBufferImpl* commandBuffer, const RenderPassDesc& desc) { - CommandEncoderImpl::init(commandBuffer); + PassEncoderImpl::init(commandBuffer); short_vector colorAttachments(desc.colorAttachmentCount, {}); for (GfxIndex i = 0; i < desc.colorAttachmentCount; ++i) @@ -319,7 +318,7 @@ Result RenderCommandEncoderImpl::init(CommandBufferImpl* commandBuffer, const Re return m_renderPassEncoder ? SLANG_OK : SLANG_FAIL; } -Result RenderCommandEncoderImpl::prepareDraw() +Result RenderPassEncoderImpl::prepareDraw() { auto pipeline = static_cast(m_currentPipeline.Ptr()); if (!pipeline) @@ -344,7 +343,7 @@ Result RenderCommandEncoderImpl::prepareDraw() return SLANG_OK; } -void RenderCommandEncoderImpl::endEncoding() +void RenderPassEncoderImpl::end() { endEncodingImpl(); m_device->m_ctx.api.wgpuRenderPassEncoderEnd(m_renderPassEncoder); @@ -352,17 +351,17 @@ void RenderCommandEncoderImpl::endEncoding() m_renderPassEncoder = nullptr; } -Result RenderCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result RenderPassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return setPipelineImpl(pipeline, outRootObject); } -Result RenderCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result RenderPassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return setPipelineWithRootObjectImpl(pipeline, rootObject); } -void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) +void RenderPassEncoderImpl::setViewports(GfxCount count, const Viewport* viewports) { if (count < 1) return; @@ -378,7 +377,7 @@ void RenderCommandEncoderImpl::setViewports(GfxCount count, const Viewport* view ); } -void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) +void RenderPassEncoderImpl::setScissorRects(GfxCount count, const ScissorRect* rects) { if (count < 1) return; @@ -392,7 +391,7 @@ void RenderCommandEncoderImpl::setScissorRects(GfxCount count, const ScissorRect ); } -void RenderCommandEncoderImpl::setVertexBuffers( +void RenderPassEncoderImpl::setVertexBuffers( GfxIndex startSlot, GfxCount slotCount, IBuffer* const* buffers, @@ -412,7 +411,7 @@ void RenderCommandEncoderImpl::setVertexBuffers( } } -void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) +void RenderPassEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat indexFormat, Offset offset) { BufferImpl* bufferImpl = static_cast(buffer); m_device->m_ctx.api.wgpuRenderPassEncoderSetIndexBuffer( @@ -424,12 +423,12 @@ void RenderCommandEncoderImpl::setIndexBuffer(IBuffer* buffer, IndexFormat index ); } -void RenderCommandEncoderImpl::setStencilReference(uint32_t referenceValue) +void RenderPassEncoderImpl::setStencilReference(uint32_t referenceValue) { m_device->m_ctx.api.wgpuRenderPassEncoderSetStencilReference(m_renderPassEncoder, referenceValue); } -Result RenderCommandEncoderImpl::setSamplePositions( +Result RenderPassEncoderImpl::setSamplePositions( GfxCount samplesPerPixel, GfxCount pixelCount, const SamplePosition* samplePositions @@ -438,21 +437,21 @@ Result RenderCommandEncoderImpl::setSamplePositions( return SLANG_FAIL; } -Result RenderCommandEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) +Result RenderPassEncoderImpl::draw(GfxCount vertexCount, GfxIndex startVertex) { SLANG_RETURN_ON_FAIL(prepareDraw()); m_device->m_ctx.api.wgpuRenderPassEncoderDraw(m_renderPassEncoder, vertexCount, 1, startVertex, 0); return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) +Result RenderPassEncoderImpl::drawIndexed(GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) { SLANG_RETURN_ON_FAIL(prepareDraw()); m_device->m_ctx.api.wgpuRenderPassEncoderDrawIndexed(m_renderPassEncoder, indexCount, 1, startIndex, baseVertex, 0); return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndirect( +Result RenderPassEncoderImpl::drawIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -468,7 +467,7 @@ Result RenderCommandEncoderImpl::drawIndirect( return SLANG_FAIL; } -Result RenderCommandEncoderImpl::drawIndexedIndirect( +Result RenderPassEncoderImpl::drawIndexedIndirect( GfxCount maxDrawCount, IBuffer* argBuffer, Offset argOffset, @@ -484,7 +483,7 @@ Result RenderCommandEncoderImpl::drawIndexedIndirect( return SLANG_FAIL; } -Result RenderCommandEncoderImpl::drawInstanced( +Result RenderPassEncoderImpl::drawInstanced( GfxCount vertexCount, GfxCount instanceCount, GfxIndex startVertex, @@ -497,7 +496,7 @@ Result RenderCommandEncoderImpl::drawInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawIndexedInstanced( +Result RenderPassEncoderImpl::drawIndexedInstanced( GfxCount indexCount, GfxCount instanceCount, GfxIndex startIndexLocation, @@ -517,32 +516,31 @@ Result RenderCommandEncoderImpl::drawIndexedInstanced( return SLANG_OK; } -Result RenderCommandEncoderImpl::drawMeshTasks(int x, int y, int z) +Result RenderPassEncoderImpl::drawMeshTasks(int x, int y, int z) { return SLANG_FAIL; } -void* ComputeCommandEncoderImpl::getInterface(SlangUUID const& uuid) +void* ComputePassEncoderImpl::getInterface(SlangUUID const& uuid) { - if (uuid == GUID::IID_IComputeCommandEncoder || uuid == GUID::IID_ICommandEncoder || - uuid == ISlangUnknown::getTypeGuid()) + if (uuid == GUID::IID_IComputePassEncoder || uuid == GUID::IID_IPassEncoder || uuid == ISlangUnknown::getTypeGuid()) { return this; } return nullptr; } -Result ComputeCommandEncoderImpl::init(CommandBufferImpl* commandBuffer) +Result ComputePassEncoderImpl::init(CommandBufferImpl* commandBuffer) { - CommandEncoderImpl::init(commandBuffer); + PassEncoderImpl::init(commandBuffer); WGPUComputePassDescriptor passDesc = {}; m_computePassEncoder = m_device->m_ctx.api.wgpuCommandEncoderBeginComputePass(m_commandBuffer->m_commandEncoder, &passDesc); return m_computePassEncoder ? SLANG_OK : SLANG_FAIL; } -void ComputeCommandEncoderImpl::endEncoding() +void ComputePassEncoderImpl::end() { endEncodingImpl(); m_device->m_ctx.api.wgpuComputePassEncoderEnd(m_computePassEncoder); @@ -550,17 +548,17 @@ void ComputeCommandEncoderImpl::endEncoding() m_computePassEncoder = nullptr; } -Result ComputeCommandEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) +Result ComputePassEncoderImpl::bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) { return setPipelineImpl(pipeline, outRootObject); } -Result ComputeCommandEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) +Result ComputePassEncoderImpl::bindPipelineWithRootObject(IPipeline* pipeline, IShaderObject* rootObject) { return setPipelineWithRootObjectImpl(pipeline, rootObject); } -Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) +Result ComputePassEncoderImpl::dispatchCompute(int x, int y, int z) { auto pipeline = static_cast(m_currentPipeline.Ptr()); if (!pipeline) @@ -586,7 +584,7 @@ Result ComputeCommandEncoderImpl::dispatchCompute(int x, int y, int z) return SLANG_OK; } -Result ComputeCommandEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) +Result ComputePassEncoderImpl::dispatchComputeIndirect(IBuffer* argBuffer, Offset offset) { m_device->m_ctx.api.wgpuComputePassEncoderDispatchWorkgroupsIndirect( m_computePassEncoder, diff --git a/src/wgpu/wgpu-command-encoder.h b/src/wgpu/wgpu-command-encoder.h index 8f6a696..5a3c7af 100644 --- a/src/wgpu/wgpu-command-encoder.h +++ b/src/wgpu/wgpu-command-encoder.h @@ -1,13 +1,13 @@ #pragma once #include "wgpu-base.h" -#include "../command-encoder-com-forward.h" +#include "../pass-encoder-com-forward.h" namespace rhi::wgpu { struct RootBindingContext; -class CommandEncoderImpl : public ICommandEncoder +class PassEncoderImpl : public IPassEncoder { public: virtual void* getInterface(SlangUUID const& uuid); @@ -21,7 +21,7 @@ class CommandEncoderImpl : public ICommandEncoder WGPUCommandEncoder m_commandEncoder = nullptr; RefPtr m_currentPipeline; - virtual ~CommandEncoderImpl(); + virtual ~PassEncoderImpl(); void init(CommandBufferImpl* commandBuffer); @@ -33,7 +33,7 @@ class CommandEncoderImpl : public ICommandEncoder Result setPipelineImpl(IPipeline* state, IShaderObject** outRootObject); Result setPipelineWithRootObjectImpl(IPipeline* state, IShaderObject* rootObject); - // ICommandEncoder implementation + // IPassEncoder implementation virtual SLANG_NO_THROW void SLANG_MCALL setBufferState(IBuffer* buffer, ResourceState state) override; virtual SLANG_NO_THROW void SLANG_MCALL setTextureState(ITexture* texture, SubresourceRange subresourceRange, ResourceState state) override; @@ -44,18 +44,18 @@ class CommandEncoderImpl : public ICommandEncoder virtual SLANG_NO_THROW void SLANG_MCALL writeTimestamp(IQueryPool* pool, GfxIndex index) override; }; -class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public CommandEncoderImpl +class ResourcePassEncoderImpl : public IResourcePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override; public: Result init(CommandBufferImpl* commandBuffer); - // IResourceCommandEncoder implementation + // IResourcePassEncoder implementation - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer(IBuffer* dst, Offset dstOffset, IBuffer* src, Offset srcOffset, Size size) override; @@ -107,10 +107,10 @@ class ResourceCommandEncoderImpl : public IResourceCommandEncoder, public Comman resolveQuery(IQueryPool* queryPool, GfxIndex index, GfxCount count, IBuffer* buffer, Offset offset) override; }; -class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEncoderImpl +class RenderPassEncoderImpl : public IRenderPassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override; public: @@ -120,9 +120,9 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc Result prepareDraw(); - // IRenderCommandEncoder implementation + // IRenderPassEncoder implementation - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) override; @@ -175,10 +175,10 @@ class RenderCommandEncoderImpl : public IRenderCommandEncoder, public CommandEnc virtual SLANG_NO_THROW Result SLANG_MCALL drawMeshTasks(int x, int y, int z) override; }; -class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandEncoderImpl +class ComputePassEncoderImpl : public IComputePassEncoder, public PassEncoderImpl { public: - SLANG_RHI_FORWARD_COMMAND_ENCODER_IMPL(CommandEncoderImpl) + SLANG_RHI_FORWARD_PASS_ENCODER_IMPL(PassEncoderImpl) virtual void* getInterface(SlangUUID const& uuid) override; public: @@ -186,9 +186,9 @@ class ComputeCommandEncoderImpl : public IComputeCommandEncoder, public CommandE Result init(CommandBufferImpl* commandBuffer); - // IComputeCommandEncoder implementation + // IComputePassEncoder implementation - virtual SLANG_NO_THROW void SLANG_MCALL endEncoding() override; + virtual SLANG_NO_THROW void SLANG_MCALL end() override; virtual SLANG_NO_THROW Result SLANG_MCALL bindPipeline(IPipeline* pipeline, IShaderObject** outRootObject) override; diff --git a/src/wgpu/wgpu-shader-object.cpp b/src/wgpu/wgpu-shader-object.cpp index 248a169..eb10606 100644 --- a/src/wgpu/wgpu-shader-object.cpp +++ b/src/wgpu/wgpu-shader-object.cpp @@ -194,7 +194,7 @@ Result ShaderObjectImpl::init(IDevice* device, ShaderObjectLayoutImpl* layout) } Result ShaderObjectImpl::_writeOrdinaryData( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, IBuffer* buffer, Offset offset, Size destSize, @@ -392,7 +392,7 @@ bool ShaderObjectImpl::shouldAllocateConstantBuffer(TransientResourceHeapImpl* t } Result ShaderObjectImpl::_ensureOrdinaryDataBufferCreatedIfNeeded( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, ShaderObjectLayoutImpl* specializedLayout ) { @@ -433,7 +433,7 @@ Result ShaderObjectImpl::_ensureOrdinaryDataBufferCreatedIfNeeded( } Result ShaderObjectImpl::bindAsValue( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& offset, ShaderObjectLayoutImpl* specializedLayout @@ -593,7 +593,7 @@ Result ShaderObjectImpl::bindAsValue( } Result ShaderObjectImpl::allocateDescriptorSets( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& offset, ShaderObjectLayoutImpl* specializedLayout @@ -631,7 +631,7 @@ Result ShaderObjectImpl::createBindGroups(RootBindingContext& context) } Result ShaderObjectImpl::bindAsParameterBlock( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -669,7 +669,7 @@ Result ShaderObjectImpl::bindAsParameterBlock( } Result ShaderObjectImpl::bindOrdinaryDataBufferIfNeeded( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset& ioOffset, ShaderObjectLayoutImpl* specializedLayout @@ -694,7 +694,7 @@ Result ShaderObjectImpl::bindOrdinaryDataBufferIfNeeded( } Result ShaderObjectImpl::bindAsConstantBuffer( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -763,7 +763,7 @@ EntryPointLayout* EntryPointShaderObject::getLayout() } Result EntryPointShaderObject::bindAsEntryPoint( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, EntryPointLayout* layout @@ -874,7 +874,7 @@ Result RootShaderObjectImpl::copyFrom(IShaderObject* object, ITransientResourceH } Result RootShaderObjectImpl::bindAsRoot( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, RootShaderObjectLayout* layout ) diff --git a/src/wgpu/wgpu-shader-object.h b/src/wgpu/wgpu-shader-object.h index d970f52..eda9209 100644 --- a/src/wgpu/wgpu-shader-object.h +++ b/src/wgpu/wgpu-shader-object.h @@ -66,7 +66,7 @@ class ShaderObjectImpl : public ShaderObjectBaseImpl`. Result bindAsParameterBlock( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -148,7 +148,7 @@ class ShaderObjectImpl : public ShaderObjectBaseImpl`. Result bindAsConstantBuffer( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, ShaderObjectLayoutImpl* specializedLayout @@ -206,7 +206,7 @@ class EntryPointShaderObject : public ShaderObjectImpl /// Bind this shader object as an entry point Result bindAsEntryPoint( - CommandEncoderImpl* encoder, + PassEncoderImpl* encoder, RootBindingContext& context, BindingOffset const& inOffset, EntryPointLayout* layout @@ -240,7 +240,7 @@ class RootShaderObjectImpl : public ShaderObjectImpl copyFrom(IShaderObject* object, ITransientResourceHeap* transientHeap) override; /// Bind this object as a root shader object - Result bindAsRoot(CommandEncoderImpl* encoder, RootBindingContext& context, RootShaderObjectLayout* layout); + Result bindAsRoot(PassEncoderImpl* encoder, RootBindingContext& context, RootShaderObjectLayout* layout); virtual Result collectSpecializationArgs(ExtendedShaderObjectTypeList& args) override; diff --git a/tests/test-buffer-barrier.cpp b/tests/test-buffer-barrier.cpp index 47bd029..8949f43 100644 --- a/tests/test-buffer-barrier.cpp +++ b/tests/test-buffer-barrier.cpp @@ -62,26 +62,26 @@ void testBufferBarrier(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); // Write inputBuffer data to intermediateBuffer - auto rootObjectA = encoder->bindPipeline(programA.pipeline); + auto rootObjectA = passEncoder->bindPipeline(programA.pipeline); ShaderCursor entryPointCursorA(rootObjectA->getEntryPoint(0)); entryPointCursorA.getPath("inBuffer").setBinding(inputBuffer); entryPointCursorA.getPath("outBuffer").setBinding(intermediateBuffer); - encoder->dispatchCompute(1, 1, 1); + passEncoder->dispatchCompute(1, 1, 1); // Resource transition is automatically handled. // Write intermediateBuffer to outputBuffer - auto rootObjectB = encoder->bindPipeline(programB.pipeline); + auto rootObjectB = passEncoder->bindPipeline(programB.pipeline); ShaderCursor entryPointCursorB(rootObjectB->getEntryPoint(0)); entryPointCursorB.getPath("inBuffer").setBinding(intermediateBuffer); entryPointCursorB.getPath("outBuffer").setBinding(outputBuffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-clear-texture.cpp b/tests/test-clear-texture.cpp index 0ca6335..fffee3e 100644 --- a/tests/test-clear-texture.cpp +++ b/tests/test-clear-texture.cpp @@ -31,14 +31,14 @@ void testClearTexture(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto resourceEncoder = commandBuffer->encodeResourceCommands(); + auto passEncoder = commandBuffer->beginResourcePass(); ClearValue clearValue = {}; clearValue.color.floatValues[0] = 0.5f; clearValue.color.floatValues[1] = 1.0f; clearValue.color.floatValues[2] = 0.2f; clearValue.color.floatValues[3] = 0.1f; - resourceEncoder->clearResourceView(rtv, &clearValue, ClearResourceViewFlags::FloatClearValues); - resourceEncoder->endEncoding(); + passEncoder->clearResourceView(rtv, &clearValue, ClearResourceViewFlags::FloatClearValues); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); diff --git a/tests/test-compute-smoke.cpp b/tests/test-compute-smoke.cpp index 86be5a2..4e672b0 100644 --- a/tests/test-compute-smoke.cpp +++ b/tests/test-compute-smoke.cpp @@ -42,9 +42,9 @@ void testComputeSmoke(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); slang::TypeReflection* addTransformerType = slangReflection->findTypeByName("AddTransformer"); @@ -64,8 +64,8 @@ void testComputeSmoke(GpuTestContext* ctx, DeviceType deviceType) // Bind the previously created transformer object to root object. entryPointCursor.getPath("transformer").setObject(transformer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-compute-trivial.cpp b/tests/test-compute-trivial.cpp index 76623ce..446b4dc 100644 --- a/tests/test-compute-trivial.cpp +++ b/tests/test-compute-trivial.cpp @@ -42,15 +42,15 @@ void testComputeTrivial(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); // Bind buffer view to the entry point. ShaderCursor(rootObject).getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-copy-texture.cpp b/tests/test-copy-texture.cpp index 57ce182..1bcb273 100644 --- a/tests/test-copy-texture.cpp +++ b/tests/test-copy-texture.cpp @@ -128,9 +128,9 @@ struct BaseCopyTextureTest auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeResourceCommands(); + auto passEncoder = commandBuffer->beginResourcePass(); - encoder->copyTexture( + passEncoder->copyTexture( dstTexture, texCopyInfo.dstSubresource, texCopyInfo.dstOffset, @@ -140,7 +140,7 @@ struct BaseCopyTextureTest texCopyInfo.extent ); - encoder->copyTextureToBuffer( + passEncoder->copyTextureToBuffer( resultsBuffer, bufferCopyInfo.bufferOffset, bufferCopyInfo.bufferSize, @@ -151,7 +151,7 @@ struct BaseCopyTextureTest bufferCopyInfo.extent ); - encoder->endEncoding(); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-create-buffer-from-handle.cpp b/tests/test-create-buffer-from-handle.cpp index da9bf91..a233643 100644 --- a/tests/test-create-buffer-from-handle.cpp +++ b/tests/test-create-buffer-from-handle.cpp @@ -48,16 +48,16 @@ void testCreateBufferFromHandle(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor rootCursor(rootObject); // Bind buffer view to the entry point. rootCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-existing-device-handle.cpp b/tests/test-existing-device-handle.cpp index ac3e077..4778f3a 100644 --- a/tests/test-existing-device-handle.cpp +++ b/tests/test-existing-device-handle.cpp @@ -59,16 +59,16 @@ void testExistingDeviceHandle(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor rootCursor(rootObject); // Bind buffer view to the root. rootCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-formats.cpp b/tests/test-formats.cpp index 1b6ec80..7bda3f1 100644 --- a/tests/test-formats.cpp +++ b/tests/test-formats.cpp @@ -134,9 +134,9 @@ struct TestFormats auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. @@ -149,8 +149,8 @@ struct TestFormats // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-instanced-draw.cpp b/tests/test-instanced-draw.cpp index ccb7cc2..8586ea1 100644 --- a/tests/test-instanced-draw.cpp +++ b/tests/test-instanced-draw.cpp @@ -223,23 +223,23 @@ struct DrawInstancedTest : BaseDrawTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto encoder = commandBuffer->encodeRenderCommands(renderPass); - auto rootObject = encoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass); + auto rootObject = passEncoder->bindPipeline(pipeline); Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = kWidth; viewport.extentY = kHeight; - encoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); uint32_t startVertex = 0; uint32_t startInstanceLocation = 0; - encoder->setVertexBuffer(0, vertexBuffer); - encoder->setVertexBuffer(1, instanceBuffer); + passEncoder->setVertexBuffer(0, vertexBuffer); + passEncoder->setVertexBuffer(1, instanceBuffer); - encoder->drawInstanced(kVertexCount, kInstanceCount, startVertex, startInstanceLocation); - encoder->endEncoding(); + passEncoder->drawInstanced(kVertexCount, kInstanceCount, startVertex, startInstanceLocation); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -279,25 +279,25 @@ struct DrawIndexedInstancedTest : BaseDrawTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto encoder = commandBuffer->encodeRenderCommands(renderPass); - auto rootObject = encoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass); + auto rootObject = passEncoder->bindPipeline(pipeline); Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = kWidth; viewport.extentY = kHeight; - encoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); uint32_t startIndex = 0; int32_t startVertex = 0; uint32_t startInstanceLocation = 0; - encoder->setVertexBuffer(0, vertexBuffer); - encoder->setVertexBuffer(1, instanceBuffer); - encoder->setIndexBuffer(indexBuffer, IndexFormat::UInt32); + passEncoder->setVertexBuffer(0, vertexBuffer); + passEncoder->setVertexBuffer(1, instanceBuffer); + passEncoder->setIndexBuffer(indexBuffer, IndexFormat::UInt32); - encoder->drawIndexedInstanced(kIndexCount, kInstanceCount, startIndex, startVertex, startInstanceLocation); - encoder->endEncoding(); + passEncoder->drawIndexedInstanced(kIndexCount, kInstanceCount, startIndex, startVertex, startInstanceLocation); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -361,23 +361,23 @@ struct DrawIndirectTest : BaseDrawTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto encoder = commandBuffer->encodeRenderCommands(renderPass); - auto rootObject = encoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass); + auto rootObject = passEncoder->bindPipeline(pipeline); Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = kWidth; viewport.extentY = kHeight; - encoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); - encoder->setVertexBuffer(0, vertexBuffer); - encoder->setVertexBuffer(1, instanceBuffer); + passEncoder->setVertexBuffer(0, vertexBuffer); + passEncoder->setVertexBuffer(1, instanceBuffer); uint32_t maxDrawCount = 1; Offset argOffset = offsetof(IndirectArgData, args); - encoder->drawIndirect(maxDrawCount, indirectBuffer, argOffset); - encoder->endEncoding(); + passEncoder->drawIndirect(maxDrawCount, indirectBuffer, argOffset); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -442,24 +442,24 @@ struct DrawIndexedIndirectTest : BaseDrawTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto encoder = commandBuffer->encodeRenderCommands(renderPass); - auto rootObject = encoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass); + auto rootObject = passEncoder->bindPipeline(pipeline); Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = kWidth; viewport.extentY = kHeight; - encoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); - encoder->setVertexBuffer(0, vertexBuffer); - encoder->setVertexBuffer(1, instanceBuffer); - encoder->setIndexBuffer(indexBuffer, IndexFormat::UInt32); + passEncoder->setVertexBuffer(0, vertexBuffer); + passEncoder->setVertexBuffer(1, instanceBuffer); + passEncoder->setIndexBuffer(indexBuffer, IndexFormat::UInt32); uint32_t maxDrawCount = 1; Offset argOffset = offsetof(IndexedIndirectArgData, args); - encoder->drawIndexedIndirect(maxDrawCount, indirectBuffer, argOffset); - encoder->endEncoding(); + passEncoder->drawIndexedIndirect(maxDrawCount, indirectBuffer, argOffset); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-link-time-constant.cpp b/tests/test-link-time-constant.cpp index 8896f67..811a6f0 100644 --- a/tests/test-link-time-constant.cpp +++ b/tests/test-link-time-constant.cpp @@ -109,16 +109,16 @@ void testLinkTimeConstant(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-link-time-default.cpp b/tests/test-link-time-default.cpp index 38d5632..4b85c97 100644 --- a/tests/test-link-time-default.cpp +++ b/tests/test-link-time-default.cpp @@ -148,16 +148,16 @@ void testLinkTimeDefault(GpuTestContext* ctx, DeviceType deviceType) // GPU execution. { auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -168,16 +168,16 @@ void testLinkTimeDefault(GpuTestContext* ctx, DeviceType deviceType) // Now run again with the overrided program. { auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline1); + auto rootObject = passEncoder->bindPipeline(pipeline1); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-link-time-options.cpp b/tests/test-link-time-options.cpp index 447c8cb..cb4611f 100644 --- a/tests/test-link-time-options.cpp +++ b/tests/test-link-time-options.cpp @@ -97,16 +97,16 @@ void testLinkTimeOptions(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-link-time-type.cpp b/tests/test-link-time-type.cpp index 7d2845f..0f677d2 100644 --- a/tests/test-link-time-type.cpp +++ b/tests/test-link-time-type.cpp @@ -136,16 +136,16 @@ void testLinkTimeType(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-mutable-shader-object.cpp b/tests/test-mutable-shader-object.cpp index 8c5822a..b85fada 100644 --- a/tests/test-mutable-shader-object.cpp +++ b/tests/test-mutable-shader-object.cpp @@ -53,9 +53,9 @@ void testMutableShaderObject(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); auto entryPointCursor = ShaderCursor(rootObject->getEntryPoint(0)); @@ -66,9 +66,9 @@ void testMutableShaderObject(GpuTestContext* ctx, DeviceType deviceType) transformer->getCurrentVersion(transientHeap, transformerVersion.writeRef()); entryPointCursor.getPath("transformer").setObject(transformerVersion); - encoder->dispatchCompute(1, 1, 1); + passEncoder->dispatchCompute(1, 1, 1); - rootObject = encoder->bindPipeline(pipeline); + rootObject = passEncoder->bindPipeline(pipeline); entryPointCursor = ShaderCursor(rootObject->getEntryPoint(0)); // Mutate `transformer` object and run again. @@ -77,8 +77,8 @@ void testMutableShaderObject(GpuTestContext* ctx, DeviceType deviceType) transformer->getCurrentVersion(transientHeap, transformerVersion.writeRef()); entryPointCursor.getPath("buffer").setBinding(buffer); entryPointCursor.getPath("transformer").setObject(transformerVersion); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); diff --git a/tests/test-nested-parameter-block.cpp b/tests/test-nested-parameter-block.cpp index b99b3c0..dab23b4 100644 --- a/tests/test-nested-parameter-block.cpp +++ b/tests/test-nested-parameter-block.cpp @@ -102,12 +102,12 @@ void testNestedParameterBlock(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - encoder->bindPipelineWithRootObject(pipeline, shaderObject); + passEncoder->bindPipelineWithRootObject(pipeline, shaderObject); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-precompiled-module-2.cpp b/tests/test-precompiled-module-2.cpp index 9f56f05..d645769 100644 --- a/tests/test-precompiled-module-2.cpp +++ b/tests/test-precompiled-module-2.cpp @@ -147,16 +147,16 @@ void precompiledModule2TestImplCommon(IDevice* device, UnitTestContext* context, auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(bufferView); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-precompiled-module-cache.cpp b/tests/test-precompiled-module-cache.cpp index 8c7f4f3..6ae67e3 100644 --- a/tests/test-precompiled-module-cache.cpp +++ b/tests/test-precompiled-module-cache.cpp @@ -175,16 +175,16 @@ void precompiledModuleCacheTestImpl(IDevice* device, UnitTestContext* context) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(bufferView); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-precompiled-module.cpp b/tests/test-precompiled-module.cpp index 4643a22..b389971 100644 --- a/tests/test-precompiled-module.cpp +++ b/tests/test-precompiled-module.cpp @@ -109,16 +109,16 @@ void testPrecompiledModule(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. // Bind buffer view to the entry point. entryPointCursor.getPath("buffer").setBinding(bufferView); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-ray-tracing.cpp b/tests/test-ray-tracing.cpp index 35b685e..c7ea6ed 100644 --- a/tests/test-ray-tracing.cpp +++ b/tests/test-ray-tracing.cpp @@ -201,12 +201,13 @@ struct BaseRayTracingTest compactedSizeQuery->reset(); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeRayTracingCommands(); + auto passEncoder = commandBuffer->beginRayTracingPass(); AccelerationStructureQueryDesc compactedSizeQueryDesc = {}; compactedSizeQueryDesc.queryPool = compactedSizeQuery; compactedSizeQueryDesc.queryType = QueryType::AccelerationStructureCompactedSize; - encoder->buildAccelerationStructure(buildDesc, draftAS, nullptr, scratchBuffer, 1, &compactedSizeQueryDesc); - encoder->endEncoding(); + passEncoder + ->buildAccelerationStructure(buildDesc, draftAS, nullptr, scratchBuffer, 1, &compactedSizeQueryDesc); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -218,9 +219,9 @@ struct BaseRayTracingTest device->createAccelerationStructure(createDesc, BLAS.writeRef()); commandBuffer = transientHeap->createCommandBuffer(); - encoder = commandBuffer->encodeRayTracingCommands(); - encoder->copyAccelerationStructure(BLAS, draftAS, AccelerationStructureCopyMode::Compact); - encoder->endEncoding(); + passEncoder = commandBuffer->beginRayTracingPass(); + passEncoder->copyAccelerationStructure(BLAS, draftAS, AccelerationStructureCopyMode::Compact); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -282,9 +283,9 @@ struct BaseRayTracingTest REQUIRE_CALL(device->createAccelerationStructure(createDesc, TLAS.writeRef())); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeRayTracingCommands(); - encoder->buildAccelerationStructure(buildDesc, TLAS, nullptr, scratchBuffer, 0, nullptr); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginRayTracingPass(); + passEncoder->buildAccelerationStructure(buildDesc, TLAS, nullptr, scratchBuffer, 0, nullptr); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -342,14 +343,14 @@ struct RayTracingTestA : BaseRayTracingTest void renderFrame() { ComPtr renderCommandBuffer = transientHeap->createCommandBuffer(); - auto renderEncoder = renderCommandBuffer->encodeRayTracingCommands(); + auto renderEncoder = renderCommandBuffer->beginRayTracingPass(); IShaderObject* rootObject = nullptr; renderEncoder->bindPipeline(raytracingPipeline, &rootObject); auto cursor = ShaderCursor(rootObject); cursor["resultTexture"].setBinding(resultTexture); cursor["sceneBVH"].setBinding(TLAS); renderEncoder->dispatchRays(0, shaderTable, width, height, 1); - renderEncoder->endEncoding(); + renderEncoder->end(); renderCommandBuffer->close(); queue->executeCommandBuffer(renderCommandBuffer); queue->waitOnHost(); @@ -370,14 +371,14 @@ struct RayTracingTestB : BaseRayTracingTest void renderFrame() { ComPtr renderCommandBuffer = transientHeap->createCommandBuffer(); - auto renderEncoder = renderCommandBuffer->encodeRayTracingCommands(); + auto renderEncoder = renderCommandBuffer->beginRayTracingPass(); IShaderObject* rootObject = nullptr; renderEncoder->bindPipeline(raytracingPipeline, &rootObject); auto cursor = ShaderCursor(rootObject); cursor["resultTexture"].setBinding(resultTexture); cursor["sceneBVH"].setBinding(TLAS); renderEncoder->dispatchRays(1, shaderTable, width, height, 1); - renderEncoder->endEncoding(); + renderEncoder->end(); renderCommandBuffer->close(); queue->executeCommandBuffer(renderCommandBuffer); queue->waitOnHost(); diff --git a/tests/test-resolve-resource-tests.cpp b/tests/test-resolve-resource-tests.cpp index 7ec1d9c..8290e02 100644 --- a/tests/test-resolve-resource-tests.cpp +++ b/tests/test-resolve-resource-tests.cpp @@ -175,18 +175,18 @@ struct BaseResolveResourceTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto renderEncoder = commandBuffer->encodeRenderCommands(renderPass); - auto rootObject = renderEncoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass); + auto rootObject = passEncoder->bindPipeline(pipeline); Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = kWidth; viewport.extentY = kHeight; - renderEncoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); - renderEncoder->setVertexBuffer(0, vertexBuffer); - renderEncoder->draw(kVertexCount, 0); - renderEncoder->endEncoding(); + passEncoder->setVertexBuffer(0, vertexBuffer); + passEncoder->draw(kVertexCount, 0); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); diff --git a/tests/test-resource-states.cpp b/tests/test-resource-states.cpp index 1e0933a..e2dbea0 100644 --- a/tests/test-resource-states.cpp +++ b/tests/test-resource-states.cpp @@ -48,9 +48,9 @@ void testBufferResourceStates(GpuTestContext* ctx, DeviceType deviceType) for (ResourceState state : allowedStates) { auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeResourceCommands(); - encoder->setBufferState(buffer, state); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginResourcePass(); + passEncoder->setBufferState(buffer, state); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); } @@ -126,9 +126,9 @@ void testTextureResourceStates(GpuTestContext* ctx, DeviceType deviceType) for (ResourceState state : allowedStates) { auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeResourceCommands(); - encoder->setTextureState(texture, state); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginResourcePass(); + passEncoder->setTextureState(texture, state); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); } diff --git a/tests/test-root-mutable-shader-object.cpp b/tests/test-root-mutable-shader-object.cpp index 22906d8..f175c8b 100644 --- a/tests/test-root-mutable-shader-object.cpp +++ b/tests/test-root-mutable-shader-object.cpp @@ -58,20 +58,20 @@ void testRootMutableShaderObject(GpuTestContext* ctx, DeviceType deviceType) auto commandBuffer = transientHeap->createCommandBuffer(); { - auto encoder = commandBuffer->encodeComputeCommands(); - encoder->bindPipelineWithRootObject(pipeline, rootObject); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginComputePass(); + passEncoder->bindPipelineWithRootObject(pipeline, rootObject); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); } // Mutate `transformer` object and run again. c = 2.0f; ShaderCursor(transformer).getPath("c").setData(&c, sizeof(float)); { - auto encoder = commandBuffer->encodeComputeCommands(); - encoder->bindPipelineWithRootObject(pipeline, rootObject); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginComputePass(); + passEncoder->bindPipelineWithRootObject(pipeline, rootObject); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); } commandBuffer->close(); diff --git a/tests/test-root-shader-parameter.cpp b/tests/test-root-shader-parameter.cpp index 1ce9a7c..2a08426 100644 --- a/tests/test-root-shader-parameter.cpp +++ b/tests/test-root-shader-parameter.cpp @@ -97,10 +97,10 @@ void testRootShaderParameter(GpuTestContext* ctx, DeviceType deviceType) auto commandBuffer = transientHeap->createCommandBuffer(); { - auto encoder = commandBuffer->encodeComputeCommands(); - encoder->bindPipelineWithRootObject(pipeline, rootObject); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginComputePass(); + passEncoder->bindPipelineWithRootObject(pipeline, rootObject); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); } commandBuffer->close(); diff --git a/tests/test-sampler-array.cpp b/tests/test-sampler-array.cpp index 8731cd3..f8b5a72 100644 --- a/tests/test-sampler-array.cpp +++ b/tests/test-sampler-array.cpp @@ -114,10 +114,10 @@ void testSamplerArray(GpuTestContext* ctx, DeviceType deviceType) auto commandBuffer = transientHeap->createCommandBuffer(); { - auto encoder = commandBuffer->encodeComputeCommands(); - encoder->bindPipelineWithRootObject(pipeline, rootObject); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + auto passEncoder = commandBuffer->beginComputePass(); + passEncoder->bindPipelineWithRootObject(pipeline, rootObject); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); } commandBuffer->close(); diff --git a/tests/test-shader-cache.cpp b/tests/test-shader-cache.cpp index 07cde5a..2db19ad 100644 --- a/tests/test-shader-cache.cpp +++ b/tests/test-shader-cache.cpp @@ -267,16 +267,16 @@ struct ShaderCacheTest auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); // Bind buffer view to the entry point. ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); entryPointCursor.getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(4, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(4, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -565,9 +565,9 @@ struct ShaderCacheTestSpecialization : ShaderCacheTest auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ComPtr transformer; slang::TypeReflection* transformerType = slangReflection->findTypeByName(transformerTypeName); @@ -582,8 +582,8 @@ struct ShaderCacheTestSpecialization : ShaderCacheTest entryPointCursor.getPath("buffer").setBinding(buffer); entryPointCursor.getPath("transformer").setObject(transformer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -801,19 +801,19 @@ struct ShaderCacheTestGraphics : ShaderCacheTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto encoder = commandBuffer->encodeRenderCommands(renderPass); - auto rootObject = encoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass); + auto rootObject = passEncoder->bindPipeline(pipeline); Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = (float)kWidth; viewport.extentY = (float)kHeight; - encoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); - encoder->setVertexBuffer(0, vertexBuffer); + passEncoder->setVertexBuffer(0, vertexBuffer); - encoder->draw(3); - encoder->endEncoding(); + passEncoder->draw(3); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-shared-buffer.cpp b/tests/test-shared-buffer.cpp index 85d7141..8fdb001 100644 --- a/tests/test-shared-buffer.cpp +++ b/tests/test-shared-buffer.cpp @@ -60,16 +60,16 @@ void testSharedBuffer(GpuTestContext* ctx, DeviceType deviceType) auto queue = dstDevice->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor rootCursor(rootObject); // Bind buffer view to the entry point. rootCursor.getPath("buffer").setBinding(dstBuffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-shared-texture.cpp b/tests/test-shared-texture.cpp index e70cad7..14a34d5 100644 --- a/tests/test-shared-texture.cpp +++ b/tests/test-shared-texture.cpp @@ -32,9 +32,9 @@ static void setUpAndRunShader( auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. @@ -50,8 +50,8 @@ static void setUpAndRunShader( // Bind buffer view to the entry point. entryPointCursor["buffer"].setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); diff --git a/tests/test-swapchain.cpp b/tests/test-swapchain.cpp index 3520562..700a176 100644 --- a/tests/test-swapchain.cpp +++ b/tests/test-swapchain.cpp @@ -174,21 +174,21 @@ struct SwapchainResizeTest { auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeRenderCommands(renderPass, framebuffers[framebufferIndex]); - auto rootObject = encoder->bindPipeline(pipeline); + auto passEncoder = commandBuffer->beginRenderPass(renderPass, framebuffers[framebufferIndex]); + auto rootObject = passEncoder->bindPipeline(pipeline); gfx::Viewport viewport = {}; viewport.maxZ = 1.0f; viewport.extentX = (float)width; viewport.extentY = (float)height; - encoder->setViewportAndScissor(viewport); + passEncoder->setViewportAndScissor(viewport); - encoder->setVertexBuffer(0, vertexBuffer); - encoder->setPrimitiveTopology(PrimitiveTopology::TriangleList); + passEncoder->setVertexBuffer(0, vertexBuffer); + passEncoder->setPrimitiveTopology(PrimitiveTopology::TriangleList); swapchain->acquireNextImage(); - encoder->draw(kVertexCount); - encoder->endEncoding(); + passEncoder->draw(kVertexCount); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); swapchain->present(); diff --git a/tests/test-texture-types.cpp b/tests/test-texture-types.cpp index b723a87..e61d96f 100644 --- a/tests/test-texture-types.cpp +++ b/tests/test-texture-types.cpp @@ -134,9 +134,9 @@ struct TextureAccessTest : TextureTest auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); ShaderCursor entryPointCursor(rootObject->getEntryPoint(0)); // get a cursor the the first entry-point. @@ -156,8 +156,8 @@ struct TextureAccessTest : TextureTest entryPointCursor["sampler"].setBinding(sampler); // TODO: Bind nullptr and make sure it doesn't splut auto bufferElementCount = width * height * depth; - encoder->dispatchCompute(bufferElementCount, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(bufferElementCount, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost(); @@ -399,7 +399,7 @@ struct RenderTargetTests : TextureTest renderPass.colorAttachments = &colorAttachment; renderPass.colorAttachmentCount = 1; - auto renderEncoder = commandBuffer->encodeRenderCommands(renderPass); + auto renderEncoder = commandBuffer->beginRenderPass(renderPass); auto rootObject = renderEncoder->bindPipeline(pipeline); Viewport viewport = {}; @@ -410,7 +410,7 @@ struct RenderTargetTests : TextureTest renderEncoder->setVertexBuffer(0, vertexBuffer); renderEncoder->draw(kVertexCount, 0); - renderEncoder->endEncoding(); + renderEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); diff --git a/tests/test-uint16-structured-buffer.cpp b/tests/test-uint16-structured-buffer.cpp index a4dea8f..88c8c79 100644 --- a/tests/test-uint16-structured-buffer.cpp +++ b/tests/test-uint16-structured-buffer.cpp @@ -44,15 +44,15 @@ void testUint16StructuredBuffer(GpuTestContext* ctx, DeviceType deviceType) auto queue = device->createCommandQueue(queueDesc); auto commandBuffer = transientHeap->createCommandBuffer(); - auto encoder = commandBuffer->encodeComputeCommands(); + auto passEncoder = commandBuffer->beginComputePass(); - auto rootObject = encoder->bindPipeline(pipeline); + auto rootObject = passEncoder->bindPipeline(pipeline); // Bind buffer view to the entry point. ShaderCursor(rootObject).getPath("buffer").setBinding(buffer); - encoder->dispatchCompute(1, 1, 1); - encoder->endEncoding(); + passEncoder->dispatchCompute(1, 1, 1); + passEncoder->end(); commandBuffer->close(); queue->executeCommandBuffer(commandBuffer); queue->waitOnHost();