76 lines
2.6 KiB
C++
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
|