|
|
|
|
@@ -7,7 +7,7 @@
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
#include "../Enums.h"
|
|
|
|
|
#include "../RHIDevice.h"
|
|
|
|
|
#include "../Types.h"
|
|
|
|
|
#include "D3D12Enum.h"
|
|
|
|
|
|
|
|
|
|
using Microsoft::WRL::ComPtr;
|
|
|
|
|
@@ -54,7 +54,7 @@ public:
|
|
|
|
|
|
|
|
|
|
ID3D12Device* GetDevice() const { return m_device.Get(); }
|
|
|
|
|
IDXGIFactory4* GetFactory() const { return m_factory.Get(); }
|
|
|
|
|
const ::XCEngine::RHI::DeviceInfo& GetDeviceInfo() const { return m_deviceInfo; }
|
|
|
|
|
const AdapterInfo& GetAdapterInfo() const { return m_adapterInfo; }
|
|
|
|
|
|
|
|
|
|
std::vector<AdapterInfo> EnumerateAdapters();
|
|
|
|
|
|
|
|
|
|
@@ -66,39 +66,38 @@ public:
|
|
|
|
|
bool IsDeviceRemoved() const { return m_isDeviceRemoved; }
|
|
|
|
|
|
|
|
|
|
// Factory methods
|
|
|
|
|
ICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc);
|
|
|
|
|
ICommandList* CreateCommandList(const CommandListDesc& desc);
|
|
|
|
|
ICommandAllocator* CreateCommandAllocator(const CommandAllocatorDesc& desc);
|
|
|
|
|
IFence* CreateFence(const FenceDesc& desc);
|
|
|
|
|
IDescriptorHeap* CreateDescriptorHeap(const DescriptorHeapDesc& desc);
|
|
|
|
|
IQueryHeap* CreateQueryHeap(const QueryHeapDesc& desc);
|
|
|
|
|
IRootSignature* CreateRootSignature(const RootSignatureDesc& desc);
|
|
|
|
|
IPipelineState* CreatePipelineState(const PipelineStateDesc& desc);
|
|
|
|
|
ISampler* CreateSampler(const SamplerDesc& desc);
|
|
|
|
|
ITexture* CreateTexture(const TextureDesc& desc);
|
|
|
|
|
IBuffer* CreateBuffer(const BufferDesc& desc);
|
|
|
|
|
ISwapChain* CreateSwapChain(const SwapChainDesc& desc);
|
|
|
|
|
IShader* CompileShader(const ShaderCompileDesc& desc);
|
|
|
|
|
D3D12CommandQueue* CreateCommandQueue(const CommandQueueDesc& desc);
|
|
|
|
|
D3D12CommandList* CreateCommandList(const CommandListDesc& desc);
|
|
|
|
|
D3D12CommandAllocator* CreateCommandAllocator(const CommandAllocatorDesc& desc);
|
|
|
|
|
D3D12Fence* CreateFence(const FenceDesc& desc);
|
|
|
|
|
D3D12DescriptorHeap* CreateDescriptorHeap(const DescriptorHeapDesc& desc);
|
|
|
|
|
D3D12QueryHeap* CreateQueryHeap(const QueryHeapDesc& desc);
|
|
|
|
|
D3D12RootSignature* CreateRootSignature(const RootSignatureDesc& desc);
|
|
|
|
|
D3D12PipelineState* CreatePipelineState(const PipelineStateDesc& desc);
|
|
|
|
|
D3D12Sampler* CreateSampler(const SamplerDesc& desc);
|
|
|
|
|
D3D12Texture* CreateTexture(const TextureDesc& desc);
|
|
|
|
|
D3D12Buffer* CreateBuffer(const BufferDesc& desc);
|
|
|
|
|
D3D12SwapChain* CreateSwapChain(const SwapChainDesc& desc);
|
|
|
|
|
D3D12Shader* CompileShader(const ShaderCompileDesc& desc);
|
|
|
|
|
|
|
|
|
|
IRenderTargetView* CreateRenderTargetView(IBuffer* resource, const RenderTargetViewDesc& desc);
|
|
|
|
|
IDepthStencilView* CreateDepthStencilView(IBuffer* resource, const DepthStencilViewDesc& desc);
|
|
|
|
|
IShaderResourceView* CreateShaderResourceView(IBuffer* resource, const ShaderResourceViewDesc& desc);
|
|
|
|
|
IUnorderedAccessView* CreateUnorderedAccessView(IBuffer* resource, const UnorderedAccessViewDesc& desc);
|
|
|
|
|
IConstantBufferView* CreateConstantBufferView(IBuffer* resource, const ConstantBufferViewDesc& desc);
|
|
|
|
|
D3D12RenderTargetView* CreateRenderTargetView(D3D12Buffer* resource, const RenderTargetViewDesc& desc);
|
|
|
|
|
D3D12DepthStencilView* CreateDepthStencilView(D3D12Buffer* resource, const DepthStencilViewDesc& desc);
|
|
|
|
|
D3D12ShaderResourceView* CreateShaderResourceView(D3D12Buffer* resource, const ShaderResourceViewDesc& desc);
|
|
|
|
|
D3D12UnorderedAccessView* CreateUnorderedAccessView(D3D12Buffer* resource, const UnorderedAccessViewDesc& desc);
|
|
|
|
|
D3D12ConstantBufferView* CreateConstantBufferView(D3D12Buffer* resource, const ConstantBufferViewDesc& desc);
|
|
|
|
|
|
|
|
|
|
void GetDeviceInfo(DeviceInfo& info) const;
|
|
|
|
|
void* GetNativeHandle() const;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
bool CreateDXGIFactory(bool enableDebugLayer);
|
|
|
|
|
bool CreateDevice(IDXGIAdapter1* adapter);
|
|
|
|
|
void QueryDeviceInfo();
|
|
|
|
|
void QueryAdapterInfo();
|
|
|
|
|
|
|
|
|
|
ComPtr<ID3D12Device> m_device;
|
|
|
|
|
ComPtr<IDXGIFactory4> m_factory;
|
|
|
|
|
ComPtr<IDXGIAdapter1> m_adapter;
|
|
|
|
|
|
|
|
|
|
::XCEngine::RHI::DeviceInfo m_deviceInfo;
|
|
|
|
|
AdapterInfo m_adapterInfo;
|
|
|
|
|
bool m_isDeviceRemoved;
|
|
|
|
|
bool m_initialized;
|
|
|
|
|
};
|
|
|
|
|
|