Nameless Engine
|
Classes | |
struct | Resources |
Public Member Functions | |
ComputePipelines (const ComputePipelines &)=delete | |
ComputePipelines & | operator= (const ComputePipelines &)=delete |
std::variant< PipelineSharedPtr, Error > | getComputePipelineForShader (PipelineManager *pPipelineManager, ComputeShaderInterface *pComputeShaderInterface) |
std::optional< Error > | onPipelineNoLongerUsedByComputeShaderInterface (const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface) |
std::optional< Error > | queueShaderExecutionOnGraphicsQueue (ComputeShaderInterface *pComputeShaderInterface) |
size_t | getComputePipelineCount () |
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > | getComputeShadersForGraphicsQueueExecution () |
Static Private Member Functions | |
static std::optional< Error > | queueComputeShaderInterfaceForExecution (std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &pipelineShaders, ComputeShaderInterface *pComputeShaderInterface) |
Private Attributes | |
std::pair< std::recursive_mutex, Resources > | mtxResources |
Groups information about compute pipelines.
size_t ne::PipelineManager::ComputePipelines::getComputePipelineCount | ( | ) |
Returns the total number of existing compute pipelines.
std::variant< PipelineSharedPtr, Error > ne::PipelineManager::ComputePipelines::getComputePipelineForShader | ( | PipelineManager * | pPipelineManager, |
ComputeShaderInterface * | pComputeShaderInterface | ||
) |
Look for already created pipeline that uses the specified shader and returns it, otherwise creates a new pipeline.
pPipelineManager | Pipeline manager. |
pComputeShaderInterface | Compute shader interface to add. |
|
inline |
Returns all compute shaders and their pipelines to be executed on the graphics queue.
std::optional< Error > ne::PipelineManager::ComputePipelines::onPipelineNoLongerUsedByComputeShaderInterface | ( | const std::string & | sComputeShaderName, |
ComputeShaderInterface * | pComputeShaderInterface | ||
) |
Removes the specified compute shader interface and if no other interface references the compute pipeline (that the shader used) also destroys the pipeline.
PipelineSharedPtr
's destructor.sComputeShaderName | Name of the compute shader that compute pipeline uses. |
pComputeShaderInterface | Compute shader interface to remove. |
|
staticprivate |
Adds a compute shader interface to the specified map to be executed.
pipelineShaders | Map to add the new interface to. |
pComputeShaderInterface | Interface to add. |
std::optional< Error > ne::PipelineManager::ComputePipelines::queueShaderExecutionOnGraphicsQueue | ( | ComputeShaderInterface * | pComputeShaderInterface | ) |
Adds a compute shader interface to be executed on the graphics queue according to shader's execution stage and group.
pComputeShaderInterface | Compute shader interface to queue for execution. |
|
private |
Pipeline data.