Class GPUDeviceDX12
Implementation of Graphics Device for DirectX 12 rendering system
Inherited Members
Assembly: FlaxEngine.dll
File: Engine/GraphicsDevice/DirectX/DX12/GPUDeviceDX12.h
Syntax
public class GPUDeviceDX12 : public GPUDeviceDX
Constructors
~GPUDeviceDX12()
Declaration
public ~GPUDeviceDX12()
GPUDeviceDX12(IDXGIFactory4* dxgiFactory, GPUAdapterDX* adapter)
Declaration
public GPUDeviceDX12(IDXGIFactory4* dxgiFactory, GPUAdapterDX* adapter)
Parameters
IDXGIFactory4
dxgiFactory
|
GPUAdapter
|
Fields
AllowTearing
Declaration
public bool AllowTearing = false
Field Value
bool
|
DispatchIndirectCommandSignature
Declaration
public CommandSignatureDX12* DispatchIndirectCommandSignature = nullptr
Field Value
DrawIndexedIndirectCommandSignature
Declaration
public CommandSignatureDX12* DrawIndexedIndirectCommandSignature = nullptr
Field Value
DrawIndirectCommandSignature
Declaration
public CommandSignatureDX12* DrawIndirectCommandSignature = nullptr
Field Value
DummyVB
Heap_CBV_SRV_UAV
Heap_DSV
Heap_RTV
Heap_Sampler
RingHeap_CBV_SRV_UAV
Declaration
public DescriptorHeapRingBufferDX12 RingHeap_CBV_SRV_UAV
Field Value
RingHeap_Sampler
Declaration
public DescriptorHeapRingBufferDX12 RingHeap_Sampler
Field Value
TimestampQueryHeap
The timestamp queries heap.
Declaration
public QueryHeapDX12 TimestampQueryHeap
Field Value
UploadBuffer
Upload buffer for general purpose
Declaration
public UploadBufferDX12* UploadBuffer
Field Value
Methods
AddResourceToLateRelease(IGraphicsUnknown* resource, uint32 safeFrameCount=DX12_RESOURCE_DELETE_SAFE_FRAMES_COUNT)
Declaration
public void AddResourceToLateRelease(IGraphicsUnknown* resource, uint32 safeFrameCount=DX12_RESOURCE_DELETE_SAFE_FRAMES_COUNT)
Parameters
IGraphics
|
uint32
safeFrameCount
|
Create()
CreateBuffer(const StringView& name)
Creates the buffer.
Declaration
public virtual GPUBuffer* CreateBuffer(const StringView& name) override
Parameters
String The resource name. |
Returns
GPUBuffer
The buffer. |
Overrides
CreateConstantBuffer(uint32 size, const StringView& name)
Creates the constant buffer.
Declaration
public virtual GPUConstantBuffer* CreateConstantBuffer(uint32 size, const StringView& name) override
Parameters
uint32
size
The buffer size (in bytes). |
String The resource name. |
Returns
GPUConstant The constant buffer. |
Overrides
CreatePipelineState()
Creates the GPU pipeline state object.
Declaration
public virtual GPUPipelineState* CreatePipelineState() override
Returns
GPUPipeline The pipeline state. |
Overrides
CreateSampler()
Creates the texture sampler.
Declaration
public virtual GPUSampler* CreateSampler() override
Returns
GPUSampler
The sampler. |
Overrides
CreateShader(const StringView& name)
Creates the shader.
Declaration
public virtual GPUShader* CreateShader(const StringView& name) override
Parameters
String The resource name. |
Returns
GPUShader
The shader. |
Overrides
CreateSwapChain(Window* window)
Creates the native window swap chain.
Declaration
public virtual GPUSwapChain* CreateSwapChain(Window* window) override
Parameters
Window
window
The output window. |
Returns
GPUSwap The native window swap chain. |
Overrides
CreateTexture(const StringView& name)
Creates the texture.
Declaration
public virtual GPUTexture* CreateTexture(const StringView& name) override
Parameters
String The resource name. |
Returns
GPUTexture
The texture. |
Overrides
CreateTimerQuery()
Creates the timer query object.
Declaration
public virtual GPUTimerQuery* CreateTimerQuery() override
Returns
GPUTimer The timer query. |
Overrides
CreateVertexLayout(const VertexElements& elements, bool explicitOffsets)
Declaration
public GPUVertexLayout* CreateVertexLayout(const VertexElements& elements, bool explicitOffsets) override
Parameters
Vertex
|
bool
explicitOffsets
|
Returns
Dispose()
Clean all allocated data by device
Declaration
public virtual void Dispose() final override
Overrides
DrawBegin()
Called during Draw method before any frame rendering initialization. Cannot be used to submit commands to GPU.
Declaration
public virtual void DrawBegin() override
Overrides
GetCommandList()
Gets DirectX 12 command list object
Declaration
public ID3D12GraphicsCommandList* GetCommandList() const
Returns
ID3D12Graphics
|
GetCommandQueue()
Gets command queue.
Declaration
public CommandQueueDX12* GetCommandQueue() const
Returns
GetCommandQueueDX12()
Gets DirectX 12 command queue object.
Declaration
public ID3D12CommandQueue* GetCommandQueueDX12() const
Returns
ID3D12Command
|
GetDevice()
Gets DX12 device.
Declaration
public ID3D12Device* GetDevice() const
Returns
ID3D12Device
|
GetDXGIFactory()
Gets DXGI factory.
Declaration
public IDXGIFactory4* GetDXGIFactory() const
Returns
IDXGIFactory4
|
GetMainContext()
Gets the main GPU context.
Declaration
public virtual GPUContext* GetMainContext() override
Returns
Overrides
GetMainContextDX12()
Gets main commands context (for DirectX 12)
Declaration
public GPUContextDX12* GetMainContextDX12() const
Returns
GetMaxMSAAQuality(uint32 sampleCount)
Declaration
public static uint32 GetMaxMSAAQuality(uint32 sampleCount)
Parameters
uint32
sampleCount
|
Returns
uint32
|
GetNativePtr()
Gets the native pointer to the underlying graphics device. It's a low-level platform-specific handle.
Declaration
public virtual void* GetNativePtr() const override
Returns
void
|
Overrides
GetRootSignature()
Gets root signature of the graphics pipeline.
Declaration
public ID3D12RootSignature* GetRootSignature() const
Returns
ID3D12Root
|
Init()
Init device resources
Declaration
public virtual bool Init() override
Returns
bool
True if cannot init, otherwise false. |
Overrides
NullSRV(D3D12_SRV_DIMENSION dimension)
Declaration
public D3D12_CPU_DESCRIPTOR_HANDLE NullSRV(D3D12_SRV_DIMENSION dimension) const
Parameters
D3D12_SRV_DIMENSION
dimension
|
Returns
D3D12_CPU_DESCRIPTOR_HANDLE
|
NullUAV()
Declaration
public D3D12_CPU_DESCRIPTOR_HANDLE NullUAV() const
Returns
D3D12_CPU_DESCRIPTOR_HANDLE
|
RenderEnd()
Called during Draw method before rendering end. Can be used to submit commands to the GPU before closing GPU command list.
Declaration
public virtual void RenderEnd() override
Overrides
WaitForGPU()
Wait for GPU end doing submitted work
Declaration
public virtual void WaitForGPU() override