Berserk
Public Member Functions | Protected Attributes | List of all members
RHIDevice Class Referenceabstract

RHI device. More...

#include <RHIDevice.hpp>

Inheritance diagram for RHIDevice:
Inheritance graph
[legend]
Collaboration diagram for RHIDevice:
Collaboration graph
[legend]

Public Member Functions

virtual BRK_API ~RHIDevice ()=default
 
virtual BRK_API Ref< RHIVertexDeclarationCreateVertexDeclaration (const RHIVertexDeclarationDesc &desc)=0
 
virtual BRK_API Ref< RHIVertexBufferCreateVertexBuffer (const RHIBufferDesc &desc)=0
 
virtual BRK_API Ref< RHIIndexBufferCreateIndexBuffer (const RHIBufferDesc &desc)=0
 
virtual BRK_API Ref< RHIUniformBufferCreateUniformBuffer (const RHIBufferDesc &desc)=0
 
virtual BRK_API Ref< RHISamplerCreateSampler (const RHISamplerDesc &desc)=0
 
virtual BRK_API Ref< RHITextureCreateTexture (const RHITextureDesc &desc)=0
 
virtual BRK_API Ref< RHIResourceSetCreateResourceSet (const RHIResourceSetDesc &desc)=0
 
virtual BRK_API Ref< RHIFramebufferCreateFramebuffer (const RHIFramebufferDesc &desc)=0
 
virtual BRK_API Ref< RHIShaderCreateShader (const RHIShaderDesc &desc)=0
 
virtual BRK_API Ref< RHIRenderPassCreateRenderPass (const RHIRenderPassDesc &desc)=0
 
virtual BRK_API Ref< RHIGraphicsPipelineCreateGraphicsPipeline (const RHIGraphicsPipelineDesc &desc)=0
 
virtual BRK_API void UpdateVertexBuffer (const Ref< RHIVertexBuffer > &buffer, uint32 byteOffset, uint32 byteSize, const Ref< Data > &data)
 
virtual BRK_API void UpdateIndexBuffer (const Ref< RHIIndexBuffer > &buffer, uint32 byteOffset, uint32 byteSize, const Ref< Data > &data)
 
virtual BRK_API void UpdateUniformBuffer (const Ref< RHIUniformBuffer > &buffer, uint32 byteOffset, uint32 byteSize, const Ref< Data > &data)
 
virtual BRK_API void UpdateTexture2D (const Ref< RHITexture > &texture, uint32 mipLevel, const Rect2u &region, const Ref< Data > &data)
 
virtual BRK_API void UpdateTexture2DArray (const Ref< RHITexture > &texture, uint32 arrayIndex, uint32 mipLevel, const Rect2u &region, const Ref< Data > &data)
 
virtual BRK_API void UpdateTextureCube (const Ref< RHITexture > &texture, RHITextureCubemapFace face, uint32 mipLevel, const Rect2u &region, const Ref< Data > &data)
 
virtual BRK_API void UpdateResourceSet (const Ref< RHIResourceSet > &set, const RHIResourceSetDesc &desc)
 
virtual BRK_API void UpdateResourceSet_RT (const Ref< RHIResourceSet > &set, const RHIResourceSetDesc &desc)=0
 
virtual BRK_API void GenerateMipMaps (const Ref< RHITexture > &texture)
 
virtual BRK_API Ref< RHICommandListGetCoreCommandList ()=0
 
virtual BRK_API const std::vector< RHITextureFormat > & GetSupportedFormats () const
 
virtual BRK_API const std::vector< RHIShaderLanguage > & GetSupportedShaderLanguages () const
 
virtual BRK_API RHIType GetDriverType () const
 
virtual BRK_API const RHIDeviceCapsGetCaps () const
 
virtual BRK_API const Mat4x4fGetClipMatrix () const
 
BRK_API bool IsSupported (RHIShaderLanguage language) const
 

Protected Attributes

std::vector< RHITextureFormatmSupportedTextureFormats
 
std::vector< RHIShaderLanguagemSupportedShaderLanguages
 
RHIDeviceCaps mCaps
 
Mat4x4f mClipMatrix
 
RHIType mType
 

Detailed Description

RHI device.

Device object exposes common object creation api.

Device provided objects can be safely created from any thread. CreateFromImage functions immediately return the created object reference, but actual object creation on the GPU side is deferred, until the RHI execution thread reaches object creation and does it its side.

From user side, created objects can be safely and immediately used in the drawing and update api via command buffers.

Constructor & Destructor Documentation

◆ ~RHIDevice()

virtual BRK_API RHIDevice::~RHIDevice ( )
virtualdefault

Member Function Documentation

◆ CreateFramebuffer()

virtual BRK_API Ref<RHIFramebuffer> RHIDevice::CreateFramebuffer ( const RHIFramebufferDesc desc)
pure virtual
Returns
CreateFromImage framebuffer from desc

Implemented in GLDevice.

◆ CreateGraphicsPipeline()

virtual BRK_API Ref<RHIGraphicsPipeline> RHIDevice::CreateGraphicsPipeline ( const RHIGraphicsPipelineDesc desc)
pure virtual
Returns
CreateFromImage and compile pipeline from desc

Implemented in GLDevice.

◆ CreateIndexBuffer()

virtual BRK_API Ref<RHIIndexBuffer> RHIDevice::CreateIndexBuffer ( const RHIBufferDesc desc)
pure virtual
Returns
CreateFromImage vertex buffer from desc

Implemented in GLDevice.

◆ CreateRenderPass()

virtual BRK_API Ref<RHIRenderPass> RHIDevice::CreateRenderPass ( const RHIRenderPassDesc desc)
pure virtual
Returns
CreateFromImage render pass from desc

Implemented in GLDevice.

◆ CreateResourceSet()

virtual BRK_API Ref<RHIResourceSet> RHIDevice::CreateResourceSet ( const RHIResourceSetDesc desc)
pure virtual
Returns
CreateFromImage resource set from desc

Implemented in GLDevice.

◆ CreateSampler()

virtual BRK_API Ref<RHISampler> RHIDevice::CreateSampler ( const RHISamplerDesc desc)
pure virtual
Returns
CreateFromImage sampler object from desc

Implemented in GLDevice.

◆ CreateShader()

virtual BRK_API Ref<RHIShader> RHIDevice::CreateShader ( const RHIShaderDesc desc)
pure virtual
Returns
CreateFromImage and compile shader from desc

Implemented in GLDevice.

◆ CreateTexture()

virtual BRK_API Ref<RHITexture> RHIDevice::CreateTexture ( const RHITextureDesc desc)
pure virtual
Returns
CreateFromImage texture from desc

Implemented in GLDevice.

◆ CreateUniformBuffer()

virtual BRK_API Ref<RHIUniformBuffer> RHIDevice::CreateUniformBuffer ( const RHIBufferDesc desc)
pure virtual
Returns
CreateFromImage vertex buffer from desc

Implemented in GLDevice.

◆ CreateVertexBuffer()

virtual BRK_API Ref<RHIVertexBuffer> RHIDevice::CreateVertexBuffer ( const RHIBufferDesc desc)
pure virtual
Returns
CreateFromImage vertex buffer from desc

Implemented in GLDevice.

◆ CreateVertexDeclaration()

virtual BRK_API Ref<RHIVertexDeclaration> RHIDevice::CreateVertexDeclaration ( const RHIVertexDeclarationDesc desc)
pure virtual
Returns
CreateFromImage vertex declaration from desc

Implemented in GLDevice.

◆ GenerateMipMaps()

void RHIDevice::GenerateMipMaps ( const Ref< RHITexture > &  texture)
virtual

Generate mip maps for the texture (2d, 2d array, cube)

◆ GetCaps()

const RHIDeviceCaps & RHIDevice::GetCaps ( ) const
virtual
Returns
Device capabilities

◆ GetClipMatrix()

const Mat4x4f & RHIDevice::GetClipMatrix ( ) const
virtual
Returns
Clip matrix

◆ GetCoreCommandList()

virtual BRK_API Ref<RHICommandList> RHIDevice::GetCoreCommandList ( )
pure virtual
Returns
Core command list for commands capturing

Implemented in GLDevice.

◆ GetDriverType()

RHIType RHIDevice::GetDriverType ( ) const
virtual
Returns
Type of underlying native API

◆ GetSupportedFormats()

BRK_NS_BEGIN const std::vector< RHITextureFormat > & RHIDevice::GetSupportedFormats ( ) const
virtual
Returns
List of supported texture formats

◆ GetSupportedShaderLanguages()

const std::vector< RHIShaderLanguage > & RHIDevice::GetSupportedShaderLanguages ( ) const
virtual
Returns
List of supported source shader languages

◆ IsSupported()

bool RHIDevice::IsSupported ( RHIShaderLanguage  language) const
Returns
True if language supported

◆ UpdateIndexBuffer()

void RHIDevice::UpdateIndexBuffer ( const Ref< RHIIndexBuffer > &  buffer,
uint32  byteOffset,
uint32  byteSize,
const Ref< Data > &  data 
)
virtual

Update index buffer with data

◆ UpdateResourceSet()

void RHIDevice::UpdateResourceSet ( const Ref< RHIResourceSet > &  set,
const RHIResourceSetDesc desc 
)
virtual

Update resource set

◆ UpdateResourceSet_RT()

virtual BRK_API void RHIDevice::UpdateResourceSet_RT ( const Ref< RHIResourceSet > &  set,
const RHIResourceSetDesc desc 
)
pure virtual

Update resource set

Implemented in GLDevice.

◆ UpdateTexture2D()

void RHIDevice::UpdateTexture2D ( const Ref< RHITexture > &  texture,
uint32  mipLevel,
const Rect2u region,
const Ref< Data > &  data 
)
virtual

Update chosen region and mip level of 2d texture

◆ UpdateTexture2DArray()

void RHIDevice::UpdateTexture2DArray ( const Ref< RHITexture > &  texture,
uint32  arrayIndex,
uint32  mipLevel,
const Rect2u region,
const Ref< Data > &  data 
)
virtual

Update chosen array index, region and mip level of 2d texture array

◆ UpdateTextureCube()

void RHIDevice::UpdateTextureCube ( const Ref< RHITexture > &  texture,
RHITextureCubemapFace  face,
uint32  mipLevel,
const Rect2u region,
const Ref< Data > &  data 
)
virtual

Update chosen face, region and mip level of cube texture

◆ UpdateUniformBuffer()

void RHIDevice::UpdateUniformBuffer ( const Ref< RHIUniformBuffer > &  buffer,
uint32  byteOffset,
uint32  byteSize,
const Ref< Data > &  data 
)
virtual

Update uniform buffer with data

◆ UpdateVertexBuffer()

void RHIDevice::UpdateVertexBuffer ( const Ref< RHIVertexBuffer > &  buffer,
uint32  byteOffset,
uint32  byteSize,
const Ref< Data > &  data 
)
virtual

Update vertex buffer with data

Member Data Documentation

◆ mCaps

RHIDeviceCaps RHIDevice::mCaps
protected

◆ mClipMatrix

Mat4x4f RHIDevice::mClipMatrix
protected

◆ mSupportedShaderLanguages

std::vector<RHIShaderLanguage> RHIDevice::mSupportedShaderLanguages
protected

◆ mSupportedTextureFormats

std::vector<RHITextureFormat> RHIDevice::mSupportedTextureFormats
protected

◆ mType

RHIType RHIDevice::mType
protected

The documentation for this class was generated from the following files: