Files
XCEngine/engine/include/XCEngine/RHI/RHIDevice.h

76 lines
2.6 KiB
C++

#pragma once
#include <string>
#include <vector>
#include <cstdint>
#include "Enums.h"
#include "Types.h"
namespace XCEngine {
namespace RHI {
struct DeviceInfo {
std::wstring deviceName;
std::wstring driverVersion;
uint64_t dedicatedVideoMemory;
uint64_t dedicatedSystemMemory;
uint64_t sharedSystemMemory;
uint32_t vendorId;
uint32_t deviceId;
bool supportsRaytracing;
bool supportsMeshShaders;
bool supportsSamplerFeedback;
};
class ICommandQueue;
class ICommandList;
class ICommandAllocator;
class IFence;
class IDescriptorHeap;
class IQueryHeap;
class IRootSignature;
class IPipelineState;
class ISampler;
class ITexture;
class IBuffer;
class ISwapChain;
class IShader;
class IRenderTargetView;
class IDepthStencilView;
class IShaderResourceView;
class IUnorderedAccessView;
class IConstantBufferView;
class IRHIDevice {
public:
virtual ~IRHIDevice() = default;
virtual ICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc) = 0;
virtual ICommandList* CreateCommandList(const CommandListDesc& desc) = 0;
virtual ICommandAllocator* CreateCommandAllocator(const CommandAllocatorDesc& desc) = 0;
virtual IFence* CreateFence(const FenceDesc& desc) = 0;
virtual IDescriptorHeap* CreateDescriptorHeap(const DescriptorHeapDesc& desc) = 0;
virtual IQueryHeap* CreateQueryHeap(const QueryHeapDesc& desc) = 0;
virtual IRootSignature* CreateRootSignature(const RootSignatureDesc& desc) = 0;
virtual IPipelineState* CreatePipelineState(const PipelineStateDesc& desc) = 0;
virtual ISampler* CreateSampler(const SamplerDesc& desc) = 0;
virtual ITexture* CreateTexture(const TextureDesc& desc) = 0;
virtual IBuffer* CreateBuffer(const BufferDesc& desc) = 0;
virtual ISwapChain* CreateSwapChain(const SwapChainDesc& desc) = 0;
virtual IShader* CompileShader(const ShaderCompileDesc& desc) = 0;
virtual IRenderTargetView* CreateRenderTargetView(IBuffer* resource, const RenderTargetViewDesc& desc) = 0;
virtual IDepthStencilView* CreateDepthStencilView(IBuffer* resource, const DepthStencilViewDesc& desc) = 0;
virtual IShaderResourceView* CreateShaderResourceView(IBuffer* resource, const ShaderResourceViewDesc& desc) = 0;
virtual IUnorderedAccessView* CreateUnorderedAccessView(IBuffer* resource, const UnorderedAccessViewDesc& desc) = 0;
virtual IConstantBufferView* CreateConstantBufferView(IBuffer* resource, const ConstantBufferViewDesc& desc) = 0;
virtual void GetDeviceInfo(DeviceInfo& info) const = 0;
virtual void* GetNativeHandle() const = 0;
};
} // namespace RHI
} // namespace XCEngine