Remove IRHIDevice inheritance from D3D12Device

- D3D12Device no longer inherits from IRHIDevice interface
- Removed interface factory methods (CreateCommandQueue, CreateCommandList, etc.)
- Keep concrete D3D12-specific methods (Initialize, Shutdown, GetDevice, etc.)
- This is the first step to decouple RHI abstraction from D3D12 backend
This commit is contained in:
2026-03-16 15:41:30 +08:00
parent 11db594967
commit 0014c32fa5
2 changed files with 22 additions and 126 deletions

View File

@@ -44,7 +44,7 @@ struct AdapterInfo {
bool isSoftware;
};
class D3D12Device : public IRHIDevice {
class D3D12Device {
public:
D3D12Device();
~D3D12Device();
@@ -65,29 +65,29 @@ public:
void SetDeviceRemoved() { m_isDeviceRemoved = true; }
bool IsDeviceRemoved() const { return m_isDeviceRemoved; }
// IRHIDevice implementation
ICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc) override;
ICommandList* CreateCommandList(const CommandListDesc& desc) override;
ICommandAllocator* CreateCommandAllocator(const CommandAllocatorDesc& desc) override;
IFence* CreateFence(const FenceDesc& desc) override;
IDescriptorHeap* CreateDescriptorHeap(const DescriptorHeapDesc& desc) override;
IQueryHeap* CreateQueryHeap(const QueryHeapDesc& desc) override;
IRootSignature* CreateRootSignature(const RootSignatureDesc& desc) override;
IPipelineState* CreatePipelineState(const PipelineStateDesc& desc) override;
ISampler* CreateSampler(const SamplerDesc& desc) override;
ITexture* CreateTexture(const TextureDesc& desc) override;
IBuffer* CreateBuffer(const BufferDesc& desc) override;
ISwapChain* CreateSwapChain(const SwapChainDesc& desc) override;
IShader* CompileShader(const ShaderCompileDesc& desc) override;
// 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);
IRenderTargetView* CreateRenderTargetView(IBuffer* resource, const RenderTargetViewDesc& desc) override;
IDepthStencilView* CreateDepthStencilView(IBuffer* resource, const DepthStencilViewDesc& desc) override;
IShaderResourceView* CreateShaderResourceView(IBuffer* resource, const ShaderResourceViewDesc& desc) override;
IUnorderedAccessView* CreateUnorderedAccessView(IBuffer* resource, const UnorderedAccessViewDesc& desc) override;
IConstantBufferView* CreateConstantBufferView(IBuffer* resource, const ConstantBufferViewDesc& desc) override;
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);
void GetDeviceInfo(DeviceInfo& info) const override;
void* GetNativeHandle() const override;
void GetDeviceInfo(DeviceInfo& info) const;
void* GetNativeHandle() const;
private:
bool CreateDXGIFactory(bool enableDebugLayer);