// Copyright 2019 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. #pragma once #include #include #include "VideoCommon/AbstractPipeline.h" namespace DX12 { class DXPipeline final : public AbstractPipeline { public: DXPipeline(ID3D12PipelineState* pipeline, ID3D12RootSignature* root_signature, AbstractPipelineUsage usage, D3D12_PRIMITIVE_TOPOLOGY primitive_topology, bool use_integer_rtv); ~DXPipeline() override; static std::unique_ptr Create(const AbstractPipelineConfig& config); ID3D12PipelineState* GetPipeline() const { return m_pipeline; } ID3D12RootSignature* GetRootSignature() const { return m_root_signature; } AbstractPipelineUsage GetUsage() const { return m_usage; } D3D12_PRIMITIVE_TOPOLOGY GetPrimitiveTopology() const { return m_primitive_topology; } bool UseIntegerRTV() const { return m_use_integer_rtv; } private: ID3D12PipelineState* m_pipeline; ID3D12RootSignature* m_root_signature; AbstractPipelineUsage m_usage; D3D12_PRIMITIVE_TOPOLOGY m_primitive_topology; bool m_use_integer_rtv; }; } // namespace DX12