// Copyright 2019 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include "VideoBackends/D3D12/Common.h" #include "VideoBackends/D3DCommon/Shader.h" namespace DX12 { class DXShader final : public D3DCommon::Shader { public: ~DXShader() override; ID3D12PipelineState* GetComputePipeline() const { return m_compute_pipeline.Get(); } D3D12_SHADER_BYTECODE GetD3DByteCode() const; static std::unique_ptr CreateFromBytecode(ShaderStage stage, BinaryData bytecode); static std::unique_ptr CreateFromSource(ShaderStage stage, std::string_view source); private: DXShader(ShaderStage stage, BinaryData bytecode); bool CreateComputePipeline(); ComPtr m_compute_pipeline; }; } // namespace DX12