CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::RendererComputePipelineManager Class Reference

The renderer compute pipeline manager that is responsible for managing and re-using GPU compute pipelines. More...

#include <CeresEngine/Renderer/Resources/RendererComputePipeline.hpp>

Classes

struct  ComputePipelineInfo
 

Public Member Functions

 RendererComputePipelineManager (Renderer &renderer)
 Creates a new ComputePipeline Manager instance.
 
RendererComputePipelinePtr get (StringView name, const RendererShaderPtr &shader, const GPUPipelineLayoutPtr &pipelineLayout=nullptr)
 Gets (or creates) a new RendererComputePipeline from a compute pipeline state descriptor.
 
RendererComputePipelinePtr get (const RendererShaderPtr &shader, const GPUPipelineLayoutPtr &pipelineLayout=nullptr)
 Gets (or creates) a new RendererComputePipeline from a compute pipeline compute pipeline program descriptor.
 

Private Member Functions

RendererComputePipelinePtr getOrCreate (StringView name, const RendererShaderPtr &shader, const GPUPipelineLayoutPtr &pipelineLayout)
 Gets an existing or creates a new renderer compute pipeline instance for the given base descriptor.
 
void notifyDestroy (const RendererComputePipeline *computePipeline) noexcept
 Notifies the manager that the renderer compute pipeline is being destroyed.
 

Private Attributes

RenderermRenderer
 The renderer that owns this manager instance.
 
HashMap< UInt64, ComputePipelineInfomComputePipelines
 A map that holds compute pipeline information for each base compute pipeline descriptor.
 

Friends

class RendererComputePipeline
 

Detailed Description

The renderer compute pipeline manager that is responsible for managing and re-using GPU compute pipelines.

Constructor & Destructor Documentation

◆ RendererComputePipelineManager()

CeresEngine::RendererComputePipelineManager::RendererComputePipelineManager ( Renderer renderer)
explicit

Creates a new ComputePipeline Manager instance.

Parameters
rendererThe renderer that owns this manager instance.

Member Function Documentation

◆ get() [1/2]

RendererComputePipelinePtr CeresEngine::RendererComputePipelineManager::get ( const RendererShaderPtr shader,
const GPUPipelineLayoutPtr pipelineLayout = nullptr 
)
inline

Gets (or creates) a new RendererComputePipeline from a compute pipeline compute pipeline program descriptor.

Parameters
shaderThe shader program that should be used when specializing the compute pipeline.
pipelineLayoutThe pipeline layout object. If nullptr, one will be deduced from the shader and render pass.

◆ get() [2/2]

RendererComputePipelinePtr CeresEngine::RendererComputePipelineManager::get ( StringView  name,
const RendererShaderPtr shader,
const GPUPipelineLayoutPtr pipelineLayout = nullptr 
)

Gets (or creates) a new RendererComputePipeline from a compute pipeline state descriptor.

Parameters
nameA human-readable name to use on the pipeline.
shaderThe shader program that should be used when specializing the compute pipeline.
pipelineLayoutThe pipeline layout object. If nullptr, one will be deduced from the shader and render pass.

◆ getOrCreate()

RendererComputePipelinePtr CeresEngine::RendererComputePipelineManager::getOrCreate ( StringView  name,
const RendererShaderPtr shader,
const GPUPipelineLayoutPtr pipelineLayout 
)
private

Gets an existing or creates a new renderer compute pipeline instance for the given base descriptor.

◆ notifyDestroy()

void CeresEngine::RendererComputePipelineManager::notifyDestroy ( const RendererComputePipeline computePipeline)
privatenoexcept

Notifies the manager that the renderer compute pipeline is being destroyed.

Friends And Related Symbol Documentation

◆ RendererComputePipeline

Member Data Documentation

◆ mComputePipelines

HashMap<UInt64, ComputePipelineInfo> CeresEngine::RendererComputePipelineManager::mComputePipelines
private

A map that holds compute pipeline information for each base compute pipeline descriptor.

◆ mRenderer

Renderer& CeresEngine::RendererComputePipelineManager::mRenderer
private

The renderer that owns this manager instance.


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