6#include <unordered_map>
9#include <unordered_set>
12#include "render/general/pipeline/Pipeline.h"
13#include "shader/general/ShaderMacro.h"
14#include "render/general/pipeline/PipelineSharedPtr.h"
15#include "shader/ComputeShaderInterface.h"
16#include "render/general/pipeline/PipelineType.hpp"
17#include "render/general/pipeline/PipelineCreationSettings.h"
23 class ComputeShaderInterface;
82 std::unordered_map<Pipeline*, std::unordered_set<ComputeShaderInterface*>>,
83 static_cast<size_t>(ComputeExecutionGroup::SIZE)>,
84 static_cast<size_t>(ComputeExecutionStage::SIZE)>
110 std::unordered_map<std::set<ShaderMacro>, std::shared_ptr<Pipeline>,
ShaderMacroSetHash>
118 std::unordered_map<std::string, ShaderPipelines>,
119 static_cast<size_t>(PipelineType::SIZE)>
162 std::unique_ptr<PipelineCreationSettings> pPipelineCreationSettings,
Material* pMaterial);
171 inline std::pair<std::recursive_mutex*, QueuedForExecutionComputeShaders*>
214 std::unordered_map<std::string, std::shared_ptr<Pipeline>>
pipelines;
269 [[nodiscard]] std::optional<Error>
286 inline std::pair<std::recursive_mutex*, QueuedForExecutionComputeShaders*>
303 std::unordered_map<
Pipeline*, std::unordered_set<ComputeShaderInterface*>>& pipelineShaders,
353 std::unordered_map<std::string, ShaderPipelines>& pipelines,
354 const std::string& sShaderNames,
355 const std::set<ShaderMacro>& macrosToUse,
356 std::unique_ptr<PipelineCreationSettings> pPipelineCreationSettings,
388 std::unordered_map<std::string, ShaderPipelines>& pipelines,
389 const std::string& sKeyToLookFor,
390 const std::set<ShaderMacro>& macrosToLookFor,
391 std::unique_ptr<PipelineCreationSettings> pPipelineCreationSettings,
Definition: ComputeShaderInterface.h:46
Definition: PipelineManager.h:29
PipelineManager * pPipelineManager
Definition: PipelineManager.h:60
void initialize()
Definition: PipelineManager.cpp:372
DelayedPipelineResourcesCreation(PipelineManager *pPipelineManager)
Definition: PipelineManager.h:45
void destroy()
Definition: PipelineManager.cpp:393
Definition: Material.h:84
Definition: PipelineManager.h:89
void onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:360
void onPipelineNoLongerUsedByMaterial(const std::string &sPipelineIdentifier)
Definition: PipelineManager.cpp:330
std::variant< PipelineSharedPtr, Error > getGraphicsPipelineForMaterial(std::unique_ptr< PipelineCreationSettings > pPipelineCreationSettings, Material *pMaterial)
Definition: PipelineManager.cpp:42
Renderer * getRenderer() const
Definition: PipelineManager.cpp:225
Renderer * pRenderer
Definition: PipelineManager.h:401
std::variant< PipelineSharedPtr, Error > findOrCreatePipeline(std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sKeyToLookFor, const std::set< ShaderMacro > ¯osToLookFor, std::unique_ptr< PipelineCreationSettings > pPipelineCreationSettings, Material *pMaterial)
Definition: PipelineManager.cpp:16
std::variant< PipelineSharedPtr, Error > createGraphicsPipelineForMaterial(std::unordered_map< std::string, ShaderPipelines > &pipelines, const std::string &sShaderNames, const std::set< ShaderMacro > ¯osToUse, std::unique_ptr< PipelineCreationSettings > pPipelineCreationSettings, Material *pMaterial)
Definition: PipelineManager.cpp:145
std::optional< Error > restoreInternalGraphicsPipelinesResources()
Definition: PipelineManager.cpp:251
DelayedPipelineResourcesCreation clearGraphicsPipelinesInternalResourcesAndDelayRestoring()
Definition: PipelineManager.cpp:12
size_t getCurrentGraphicsPipelineCount()
Definition: PipelineManager.cpp:206
ComputePipelines computePipelines
Definition: PipelineManager.h:398
virtual ~PipelineManager()
Definition: PipelineManager.cpp:93
std::optional< Error > releaseInternalGraphicsPipelinesResources()
Definition: PipelineManager.cpp:227
std::pair< std::recursive_mutex, GraphicsPipelineRegistry > * getGraphicsPipelines()
Definition: PipelineManager.h:183
size_t getCurrentComputePipelineCount()
Definition: PipelineManager.cpp:221
std::pair< std::recursive_mutex, GraphicsPipelineRegistry > mtxGraphicsPipelines
Definition: PipelineManager.h:395
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > getComputeShadersForGraphicsQueueExecution()
Definition: PipelineManager.h:172
Definition: Pipeline.h:20
Definition: Renderer.h:39
Definition: PipelineManager.h:212
QueuedForExecutionComputeShaders queuedComputeShaders
Definition: PipelineManager.h:217
std::unordered_map< std::string, std::shared_ptr< Pipeline > > pipelines
Definition: PipelineManager.h:214
Definition: PipelineManager.h:210
size_t getComputePipelineCount()
Definition: PipelineManager.cpp:404
std::variant< PipelineSharedPtr, Error > getComputePipelineForShader(PipelineManager *pPipelineManager, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:409
std::optional< Error > onPipelineNoLongerUsedByComputeShaderInterface(const std::string &sComputeShaderName, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:440
static std::optional< Error > queueComputeShaderInterfaceForExecution(std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > > &pipelineShaders, ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:502
std::optional< Error > queueShaderExecutionOnGraphicsQueue(ComputeShaderInterface *pComputeShaderInterface)
Definition: PipelineManager.cpp:478
std::pair< std::recursive_mutex, Resources > mtxResources
Definition: PipelineManager.h:307
std::pair< std::recursive_mutex *, QueuedForExecutionComputeShaders * > getComputeShadersForGraphicsQueueExecution()
Definition: PipelineManager.h:287
Definition: PipelineManager.h:115
std::array< std::unordered_map< std::string, ShaderPipelines >, static_cast< size_t >(PipelineType::SIZE)> vPipelineTypes
Definition: PipelineManager.h:120
Definition: PipelineManager.h:101
std::unordered_map< std::set< ShaderMacro >, std::shared_ptr< Pipeline >, ShaderMacroSetHash > shaderPipelines
Definition: PipelineManager.h:111
Definition: PipelineManager.h:71
std::array< std::array< std::unordered_map< Pipeline *, std::unordered_set< ComputeShaderInterface * > >, static_cast< size_t >(ComputeExecutionGroup::SIZE)>, static_cast< size_t >(ComputeExecutionStage::SIZE)> vGraphicsQueueStagesGroups
Definition: PipelineManager.h:85
Definition: ShaderMacro.h:196