.. _program_listing_file_Source_Azura_RenderSystem_Inc_D3D12_D3D12ScopedComputePass.h: Program Listing for File D3D12ScopedComputePass.h ================================================= |exhale_lsh| :ref:`Return to documentation for file ` (``Source\Azura\RenderSystem\Inc\D3D12\D3D12ScopedComputePass.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "Types.h" #include "Log/Log.h" #include "D3D12/D3D12Core.h" #include "D3D12/D3D12ScopedImage.h" #include "D3D12/D3D12ScopedShader.h" #include "D3D12/D3D12ScopedCommandBuffer.h" #include "D3D12/D3D12ScopedSwapChain.h" #include "D3D12/D3D12ScopedBuffer.h" namespace Azura { namespace Memory { class Allocator; } } namespace Azura { namespace D3D12 { class D3D12ScopedComputePass { public: D3D12ScopedComputePass(U32 idx, U32 internalId, Memory::Allocator& mainAllocator, Log logger); void Create(const Microsoft::WRL::ComPtr& device, const PipelinePassCreateInfo& createInfo, const Containers::Vector& targetCreateInfos, const Containers::Vector& pipelineImages, const Containers::Vector& pipelineStructuredBuffers, const Containers::Vector& descriptorSlots, const Containers::Vector& descriptorSetTable, const Containers::Vector& allShaders); U32 GetId() const; U32 GetInternalId() const; ID3D12GraphicsCommandList* GetPrimaryComputeCommandList(U32 idx) const; const DescriptorCount& GetDescriptorCount() const; ID3D12RootSignature* GetRootSignature() const; const Containers::Vector>& GetShaders() const; const Containers::Vector>& GetInputImages() const; const Containers::Vector>& GetInputBuffers() const; const Containers::Vector>& GetOutputBuffers() const; const Containers::Vector>& GetOutputImages() const; const Containers::Vector& GetRootSignatureTable() const; void RecordResourceBarriersForOutputsStart(ID3D12GraphicsCommandList* commandList) const; void RecordResourceBarriersForOutputsEnd(ID3D12GraphicsCommandList* commandList) const; void RecordResourceBarriersForInputsStart(ID3D12GraphicsCommandList* commandList) const; void RecordResourceBarriersForInputsEnd(ID3D12GraphicsCommandList* commandList) const; void WaitForGPU(ID3D12CommandQueue* commandQueue); U32 GetCommandBufferCount() const; U32 GetInputTargetRootDescriptorTableId() const; U32 GetInputBufferRootDescriptorTableId() const; U32 GetOutputTargetsRootDescriptorTableId() const; U32 GetOutputBuffersRootDescriptorTableId() const; private: void CreateBase( const Microsoft::WRL::ComPtr& device, const PipelinePassCreateInfo& createInfo, const Containers::Vector& descriptorSlots, const Containers::Vector& descriptorSetTable, const Containers::Vector& targetCreateInfos, const Containers::Vector& pipelineImages, const Containers::Vector& pipelineStructuredBuffers, const Containers::Vector& allShaders); const Log log_D3D12RenderSystem; U32 m_id; U32 m_internalId; U32 m_computeOutputTargetTableIdx{ 0 }; U32 m_computeOutputBufferTableIdx{ 0 }; U32 m_computeInputTargetTableIdx{ 0 }; U32 m_computeInputBufferTableIdx{ 0 }; Containers::Vector m_rootSignatureTable; Containers::Vector> m_passShaders; SmallVector m_commandBuffers; Containers::Vector> m_computeOutputTargets; Containers::Vector> m_computeOutputBuffers; Containers::Vector> m_computeInputBuffers; Containers::Vector> m_computeInputTargets; Containers::Vector> m_computeDepthInputTargets; Containers::Vector> m_allComputeInputTargets; Microsoft::WRL::ComPtr m_rootSignature; DescriptorCount m_descriptorCount{}; U32 m_fenceValue{1}; HANDLE m_fenceEvent{}; Microsoft::WRL::ComPtr m_signalFence; SmallVector, MAX_RENDER_PASS_INPUTS> m_waitFences; }; } // namespace D3D12 } // namespace Azura