CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::GPUDevice Class Referenceabstract

#include <CeresEngine/RenderAPI/GPUDevice.hpp>

Inheritance diagram for CeresEngine::GPUDevice:
CeresEngine::GPUObject CeresEngine::GLDevice CeresEngine::MKDevice CeresEngine::MTDevice CeresEngine::NLDevice CeresEngine::VKDevice CeresEngine::WGDevice

Public Member Functions

 GPUDevice (ExecutionContext &transferExecutionContext, const GPUDeviceInfo &information, const GPURenderingCapabilities &capabilities)
 Creates a new Device instance.
 
 ~GPUDevice () override=default
 Destroys the device object.
 
 GPUDevice (const GPUDevice &)=delete
 Deleted copy constructor.
 
GPUDeviceoperator= (const GPUDevice &)=delete
 
 GPUDevice (GPUDevice &&)=delete
 Deleted move constructor.
 
GPUDeviceoperator= (GPUDevice &&)=delete
 
virtual GPUCommandBufferPtr createCommandBuffer (const GPUCommandBufferDescriptor &descriptor)=0
 Creates a new CommandBuffer object.
 
virtual GPURenderPassPtr createRenderPass (const GPURenderPassDescriptor &descriptor)=0
 Creates a new RenderPass object.
 
virtual GPUPipelineLayoutPtr createPipelineLayout (const GPUPipelineLayoutDescriptor &descriptor)=0
 Creates a new PipelineLayout object.
 
virtual GPUGraphicsPipelinePtr createGraphicsPipeline (const GPUGraphicsPipelineDescriptor &descriptor)=0
 Creates a new GraphicsPipeline object.
 
virtual GPUComputePipelinePtr createComputePipeline (const GPUComputePipelineDescriptor &descriptor)=0
 Creates a new ComputePipeline object.
 
virtual GPUShaderPtr createShader (const GPUShaderDescriptor &descriptor)=0
 Creates a new Shader object.
 
virtual GPUShaderProgramPtr createShaderProgram (const GPUShaderProgramDescriptor &descriptor)=0
 Creates a new ShaderProgram object.
 
virtual GPURenderTargetPtr createRenderTarget (const GPURenderTargetDescriptor &descriptor)=0
 Creates a new RenderTarget object.
 
virtual GPUBufferPtr createBuffer (const GPUBufferDescriptor &descriptor)=0
 Creates a new Buffer object.
 
virtual Async< GPUBufferPtrcreateBufferAsync (const GPUBufferDescriptor &descriptor)
 Creates a new Buffer object asynchronously.
 
virtual GPUImagePtr createImage (const GPUImageDescriptor &descriptor)=0
 Creates a new Image object.
 
virtual Async< GPUImagePtrcreateImageAsync (const GPUImageDescriptor &descriptor)
 Creates a new Image object asynchronously.
 
virtual GPUSamplerPtr createSampler (const GPUSamplerDescriptor &descriptor)=0
 Creates a new Sampler object.
 
virtual GPUFencePtr createFence (const GPUFenceDescriptor &descriptor)=0
 Creates a new Fence object.
 
virtual GPUTimerQueryPtr createTimerQuery (const GPUTimerQueryDescriptor &descriptor)=0
 Creates a new TimerQuery object.
 
virtual GPUOcclusionQueryPtr createOcclusionQuery (const GPUOcclusionQueryDescriptor &descriptor)=0
 Creates a new OcclusionQuery object.
 
virtual GPUSwapchainPtr createSwapchain (const GPUSwapchainDescriptor &descriptor)=0
 Creates a new Swapchain object.
 
virtual GPUCommandQueuePtr getGraphicsQueue ()=0
 
virtual GPUCommandQueuePtr getTransferQueue ()=0
 
virtual GPUCommandQueuePtr getComputeQueue ()=0
 
- Public Member Functions inherited from CeresEngine::GPUObject
 GPUObject ()=default
 
virtual ~GPUObject ()=default
 
 GPUObject (const GPUObject &)=delete
 
GPUObjectoperator= (const GPUObject &)=delete
 
 GPUObject (GPUObject &&)=delete
 
GPUObjectoperator= (GPUObject &&)=delete
 
void retain () noexcept
 Retains the object by increment it's reference count by one.
 
bool release () noexcept
 Releases the object by decrementing it's reference count by one.
 

Public Attributes

ExecutionContexttransferExecutionContext
 
const GPUDeviceInfoinformation
 The The device information structure.
 
const GPURenderingCapabilitiescapabilities
 The device capabilities structure.
 

Additional Inherited Members

- Protected Member Functions inherited from CeresEngine::GPUObject
virtual void destroy () noexcept
 A internal method called by the system when the object reference count reaches zero.
 

Constructor & Destructor Documentation

◆ GPUDevice() [1/3]

CeresEngine::GPUDevice::GPUDevice ( ExecutionContext transferExecutionContext,
const GPUDeviceInfo information,
const GPURenderingCapabilities capabilities 
)
explicit

Creates a new Device instance.

Parameters
transferExecutionContextThe execution context used to submit jobs to the transferQueue.
informationThe The device information structure.
capabilitiesThe device capabilities structure.

◆ ~GPUDevice()

CeresEngine::GPUDevice::~GPUDevice ( )
overridedefault

Destroys the device object.

◆ GPUDevice() [2/3]

CeresEngine::GPUDevice::GPUDevice ( const GPUDevice )
delete

Deleted copy constructor.

◆ GPUDevice() [3/3]

CeresEngine::GPUDevice::GPUDevice ( GPUDevice &&  )
delete

Deleted move constructor.

Member Function Documentation

◆ createBuffer()

virtual GPUBufferPtr CeresEngine::GPUDevice::createBuffer ( const GPUBufferDescriptor descriptor)
pure virtual

Creates a new Buffer object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created Buffer object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createBufferAsync()

virtual Async< GPUBufferPtr > CeresEngine::GPUDevice::createBufferAsync ( const GPUBufferDescriptor descriptor)
virtual

Creates a new Buffer object asynchronously.

Parameters
descriptorA structure that describes the object to be created
Returns
A promise that returns the created Buffer object.

◆ createCommandBuffer()

virtual GPUCommandBufferPtr CeresEngine::GPUDevice::createCommandBuffer ( const GPUCommandBufferDescriptor descriptor)
pure virtual

Creates a new CommandBuffer object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created CommandBuffer object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createComputePipeline()

virtual GPUComputePipelinePtr CeresEngine::GPUDevice::createComputePipeline ( const GPUComputePipelineDescriptor descriptor)
pure virtual

Creates a new ComputePipeline object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created ComputePipeline object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createFence()

virtual GPUFencePtr CeresEngine::GPUDevice::createFence ( const GPUFenceDescriptor descriptor)
pure virtual

Creates a new Fence object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created Fence object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createGraphicsPipeline()

virtual GPUGraphicsPipelinePtr CeresEngine::GPUDevice::createGraphicsPipeline ( const GPUGraphicsPipelineDescriptor descriptor)
pure virtual

Creates a new GraphicsPipeline object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created GraphicsPipeline object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createImage()

virtual GPUImagePtr CeresEngine::GPUDevice::createImage ( const GPUImageDescriptor descriptor)
pure virtual

Creates a new Image object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created Image object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createImageAsync()

virtual Async< GPUImagePtr > CeresEngine::GPUDevice::createImageAsync ( const GPUImageDescriptor descriptor)
virtual

Creates a new Image object asynchronously.

Parameters
descriptorA structure that describes the object to be created
Returns
A promise that returns the created Image object.

◆ createOcclusionQuery()

virtual GPUOcclusionQueryPtr CeresEngine::GPUDevice::createOcclusionQuery ( const GPUOcclusionQueryDescriptor descriptor)
pure virtual

Creates a new OcclusionQuery object.

Parameters
descriptorA structure that describes the object to be created.
Returns
The created OcclusionQuery object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, and CeresEngine::VKDevice.

◆ createPipelineLayout()

virtual GPUPipelineLayoutPtr CeresEngine::GPUDevice::createPipelineLayout ( const GPUPipelineLayoutDescriptor descriptor)
pure virtual

Creates a new PipelineLayout object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created PipelineLayout object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createRenderPass()

virtual GPURenderPassPtr CeresEngine::GPUDevice::createRenderPass ( const GPURenderPassDescriptor descriptor)
pure virtual

Creates a new RenderPass object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created RenderPass object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createRenderTarget()

virtual GPURenderTargetPtr CeresEngine::GPUDevice::createRenderTarget ( const GPURenderTargetDescriptor descriptor)
pure virtual

Creates a new RenderTarget object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created RenderTarget object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createSampler()

virtual GPUSamplerPtr CeresEngine::GPUDevice::createSampler ( const GPUSamplerDescriptor descriptor)
pure virtual

Creates a new Sampler object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created Sampler object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createShader()

virtual GPUShaderPtr CeresEngine::GPUDevice::createShader ( const GPUShaderDescriptor descriptor)
pure virtual

Creates a new Shader object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created Shader object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createShaderProgram()

virtual GPUShaderProgramPtr CeresEngine::GPUDevice::createShaderProgram ( const GPUShaderProgramDescriptor descriptor)
pure virtual

Creates a new ShaderProgram object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created ShaderProgram object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createSwapchain()

virtual GPUSwapchainPtr CeresEngine::GPUDevice::createSwapchain ( const GPUSwapchainDescriptor descriptor)
pure virtual

Creates a new Swapchain object.

Parameters
descriptorA structure that describes the object to be created.
Returns
The created TimerQuery object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ createTimerQuery()

virtual GPUTimerQueryPtr CeresEngine::GPUDevice::createTimerQuery ( const GPUTimerQueryDescriptor descriptor)
pure virtual

Creates a new TimerQuery object.

Parameters
descriptorA structure that describes the object to be created
Returns
The created TimerQuery object.

Implemented in CeresEngine::MTDevice, CeresEngine::MKDevice, CeresEngine::NLDevice, CeresEngine::GLDevice, CeresEngine::VKDevice, and CeresEngine::WGDevice.

◆ getComputeQueue()

virtual GPUCommandQueuePtr CeresEngine::GPUDevice::getComputeQueue ( )
pure virtual

◆ getGraphicsQueue()

virtual GPUCommandQueuePtr CeresEngine::GPUDevice::getGraphicsQueue ( )
pure virtual

◆ getTransferQueue()

virtual GPUCommandQueuePtr CeresEngine::GPUDevice::getTransferQueue ( )
pure virtual

◆ operator=() [1/2]

GPUDevice & CeresEngine::GPUDevice::operator= ( const GPUDevice )
delete

◆ operator=() [2/2]

GPUDevice & CeresEngine::GPUDevice::operator= ( GPUDevice &&  )
delete

Member Data Documentation

◆ capabilities

const GPURenderingCapabilities& CeresEngine::GPUDevice::capabilities

The device capabilities structure.

◆ information

const GPUDeviceInfo& CeresEngine::GPUDevice::information

The The device information structure.

◆ transferExecutionContext

ExecutionContext& CeresEngine::GPUDevice::transferExecutionContext

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