Diligent::IRenderDevice struct

Render device interface.

Base classes

struct IObject
Base interface for all dynamic objects in the engine.

Derived classes

struct IRenderDeviceD3D11
Exposes Direct3D11-specific functionality of a render device.
struct IRenderDeviceD3D12
Exposes Direct3D12-specific functionality of a render device.
struct IRenderDeviceGL
Exposes OpenGL-specific functionality of a render device.
class IRenderDeviceMtl
Exposes Metal-specific functionality of a render device.
struct IRenderDeviceVk
Exposes Vulkan-specific functionality of a render device.

Public functions

auto CreateBuffer(const BufferDesc& BuffDesc, const BufferData* pBuffData, IBuffer** ppBuffer) -> void METHOD() virtual
Creates a new buffer object.
auto CreateShader(const ShaderCreateInfo& ShaderCI, IShader** ppShader) -> void METHOD() virtual
Creates a new shader object.
auto CreateTexture(const TextureDesc& TexDesc, const TextureData* pData, ITexture** ppTexture) -> void METHOD() virtual
Creates a new texture object.
auto CreateSampler(const SamplerDesc& SamDesc, ISampler** ppSampler) -> void METHOD() virtual
Creates a new sampler object.
auto CreateResourceMapping(const ResourceMappingDesc& MappingDesc, IResourceMapping** ppMapping) -> void METHOD() virtual
Creates a new resource mapping.
auto CreateGraphicsPipelineState(const GraphicsPipelineStateCreateInfo& PSOCreateInfo, IPipelineState** ppPipelineState) -> void METHOD() virtual
Creates a new graphics pipeline state object.
auto CreateComputePipelineState(const ComputePipelineStateCreateInfo& PSOCreateInfo, IPipelineState** ppPipelineState) -> void METHOD() virtual
Creates a new compute pipeline state object.
auto CreateRayTracingPipelineState(const RayTracingPipelineStateCreateInfo& PSOCreateInfo, IPipelineState** ppPipelineState) -> void METHOD() virtual
Creates a new ray tracing pipeline state object.
auto CreateFence(const FenceDesc& Desc, IFence** ppFence) -> void METHOD() virtual
Creates a new fence object.
auto CreateQuery(const QueryDesc& Desc, IQuery** ppQuery) -> void METHOD() virtual
Creates a new query object.
auto CreateRenderPass(const RenderPassDesc& Desc, IRenderPass** ppRenderPass) -> void METHOD() virtual
Creates a render pass object.
auto CreateFramebuffer(const FramebufferDesc& Desc, IFramebuffer** ppFramebuffer) -> void METHOD() virtual
Creates a framebuffer object.
auto CreateBLAS(const BottomLevelASDesc& Desc, IBottomLevelAS** ppBLAS) -> void METHOD() virtual
Creates a bottom-level acceleration structure object (BLAS).
auto CreateTLAS(const TopLevelASDesc& Desc, ITopLevelAS** ppTLAS) -> void METHOD() virtual
Creates a top-level acceleration structure object (TLAS).
auto CreateSBT(const ShaderBindingTableDesc& Desc, IShaderBindingTable** ppSBT) -> void METHOD() virtual
Creates a shader resource binding table object (SBT).
auto CreatePipelineResourceSignature(const PipelineResourceSignatureDesc& Desc, IPipelineResourceSignature** ppSignature) -> void METHOD() virtual
Creates a pipeline resource signature object.
auto GetDeviceCaps() const -> const DeviceCaps&METHOD() virtual
Gets the device capabilities, see Diligent::DeviceCaps for details.
auto GetDeviceProperties() const -> const DeviceProperties&METHOD() virtual
Gets the device properties, see Diligent::DeviceProperties for details.
auto GetTextureFormatInfo(TEXTURE_FORMAT TexFormat) -> const TextureFormatInfo&METHOD() virtual
Returns the basic texture format information.
auto GetTextureFormatInfoExt(TEXTURE_FORMAT TexFormat) -> const TextureFormatInfoExt&METHOD() virtual
Returns the extended texture format information.
auto ReleaseStaleResources(bool ForceRelease = false) -> void METHOD() virtual
Purges device release queues and releases all stale resources. This method is automatically called by ISwapChain::Present() of the primary swap chain.
auto IdleGPU() -> void METHOD() virtual
Waits until all outstanding operations on the GPU are complete.
auto GetEngineFactory() const -> IEngineFactory*METHOD() virtual
Returns engine factory this device was created from.

Function documentation

void METHOD() Diligent::IRenderDevice::CreateBuffer(const BufferDesc& BuffDesc, const BufferData* pBuffData, IBuffer** ppBuffer) virtual

Creates a new buffer object.

Parameters
BuffDesc in - Buffer description, see Diligent::BufferDesc for details.
pBuffData in - Pointer to Diligent::BufferData structure that describes initial buffer data or nullptr if no data is provided. Immutable buffers (USAGE_IMMUTABLE) must be initialized at creation time.
ppBuffer out - Address of the memory location where the pointer to the buffer interface will be stored. The function calls AddRef(), so that the new buffer will have one reference and must be released by a call to Release().

void METHOD() Diligent::IRenderDevice::CreateShader(const ShaderCreateInfo& ShaderCI, IShader** ppShader) virtual

Creates a new shader object.

Parameters
ShaderCI in - Shader create info, see Diligent::ShaderCreateInfo for details.
ppShader out - Address of the memory location where the pointer to the shader interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateTexture(const TextureDesc& TexDesc, const TextureData* pData, ITexture** ppTexture) virtual

Creates a new texture object.

Parameters
TexDesc in - Texture description, see Diligent::TextureDesc for details.
pData in - Pointer to Diligent::TextureData structure that describes initial texture data or nullptr if no data is provided. Immutable textures (USAGE_IMMUTABLE) must be initialized at creation time.
ppTexture out - Address of the memory location where the pointer to the texture interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateSampler(const SamplerDesc& SamDesc, ISampler** ppSampler) virtual

Creates a new sampler object.

Parameters
SamDesc in - Sampler description, see Diligent::SamplerDesc for details.
ppSampler out - Address of the memory location where the pointer to the sampler interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateResourceMapping(const ResourceMappingDesc& MappingDesc, IResourceMapping** ppMapping) virtual

Creates a new resource mapping.

Parameters
MappingDesc in - Resource mapping description, see Diligent::ResourceMappingDesc for details.
ppMapping out - Address of the memory location where the pointer to the resource mapping interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateGraphicsPipelineState(const GraphicsPipelineStateCreateInfo& PSOCreateInfo, IPipelineState** ppPipelineState) virtual

Creates a new graphics pipeline state object.

Parameters
PSOCreateInfo in - Graphics pipeline state create info, see Diligent::GraphicsPipelineStateCreateInfo for details.
ppPipelineState out - Address of the memory location where the pointer to the pipeline state interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateComputePipelineState(const ComputePipelineStateCreateInfo& PSOCreateInfo, IPipelineState** ppPipelineState) virtual

Creates a new compute pipeline state object.

Parameters
PSOCreateInfo in - Compute pipeline state create info, see Diligent::ComputePipelineStateCreateInfo for details.
ppPipelineState out - Address of the memory location where the pointer to the pipeline state interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateRayTracingPipelineState(const RayTracingPipelineStateCreateInfo& PSOCreateInfo, IPipelineState** ppPipelineState) virtual

Creates a new ray tracing pipeline state object.

Parameters
PSOCreateInfo in - Ray tracing pipeline state create info, see Diligent::RayTracingPipelineStateCreateInfo for details.
ppPipelineState out - Address of the memory location where the pointer to the pipeline state interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateFence(const FenceDesc& Desc, IFence** ppFence) virtual

Creates a new fence object.

Parameters
Desc in - Fence description, see Diligent::FenceDesc for details.
ppFence out - Address of the memory location where the pointer to the fence interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateQuery(const QueryDesc& Desc, IQuery** ppQuery) virtual

Creates a new query object.

Parameters
Desc in - Query description, see Diligent::QueryDesc for details.
ppQuery out - Address of the memory location where the pointer to the query interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateRenderPass(const RenderPassDesc& Desc, IRenderPass** ppRenderPass) virtual

Creates a render pass object.

Parameters
Desc in - Render pass description, see Diligent::RenderPassDesc for details.
ppRenderPass out - Address of the memory location where the pointer to the render pass interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateFramebuffer(const FramebufferDesc& Desc, IFramebuffer** ppFramebuffer) virtual

Creates a framebuffer object.

Parameters
Desc in - Framebuffer description, see Diligent::FramebufferDesc for details.
ppFramebuffer out - Address of the memory location where the pointer to the framebuffer interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateBLAS(const BottomLevelASDesc& Desc, IBottomLevelAS** ppBLAS) virtual

Creates a bottom-level acceleration structure object (BLAS).

Parameters
Desc in - BLAS description, see Diligent::BottomLevelASDesc for details.
ppBLAS out - Address of the memory location where the pointer to the BLAS interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateTLAS(const TopLevelASDesc& Desc, ITopLevelAS** ppTLAS) virtual

Creates a top-level acceleration structure object (TLAS).

Parameters
Desc in - TLAS description, see Diligent::TopLevelASDesc for details.
ppTLAS out - Address of the memory location where the pointer to the TLAS interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreateSBT(const ShaderBindingTableDesc& Desc, IShaderBindingTable** ppSBT) virtual

Creates a shader resource binding table object (SBT).

Parameters
Desc in - SBT description, see Diligent::ShaderBindingTableDesc for details.
ppSBT out - Address of the memory location where the pointer to the SBT interface will be stored. The function calls AddRef(), so that the new object will have one reference.

void METHOD() Diligent::IRenderDevice::CreatePipelineResourceSignature(const PipelineResourceSignatureDesc& Desc, IPipelineResourceSignature** ppSignature) virtual

Creates a pipeline resource signature object.

Parameters
Desc in - Resource signature description, see Diligent::PipelineResourceSignatureDesc for details.
ppSignature out - Address of the memory location where the pointer to the pipeline resource signature interface will be stored. The function calls AddRef(), so that the new object will have one reference.

const TextureFormatInfo&METHOD() Diligent::IRenderDevice::GetTextureFormatInfo(TEXTURE_FORMAT TexFormat) virtual

Returns the basic texture format information.

Parameters
TexFormat in - Texture format for which to provide the information
Returns Const reference to the TextureFormatInfo structure containing the texture format description.

See Diligent::TextureFormatInfo for details on the provided information.

const TextureFormatInfoExt&METHOD() Diligent::IRenderDevice::GetTextureFormatInfoExt(TEXTURE_FORMAT TexFormat) virtual

Returns the extended texture format information.

Parameters
TexFormat in - Texture format for which to provide the information
Returns Const reference to the TextureFormatInfoExt structure containing the extended texture format description.

See Diligent::TextureFormatInfoExt for details on the provided information.

void METHOD() Diligent::IRenderDevice::ReleaseStaleResources(bool ForceRelease = false) virtual

Purges device release queues and releases all stale resources. This method is automatically called by ISwapChain::Present() of the primary swap chain.

Parameters
ForceRelease in - Forces release of all objects. Use this option with great care only if you are sure the resources are not in use by the GPU (such as when the device has just been idled).

void METHOD() Diligent::IRenderDevice::IdleGPU() virtual

Waits until all outstanding operations on the GPU are complete.

IEngineFactory*METHOD() Diligent::IRenderDevice::GetEngineFactory() const virtual

Returns engine factory this device was created from.