SpiecsEngine
 
Loading...
Searching...
No Matches
Spices::Renderer::ComputeRenderBehaveBuilder Class Reference

This class helps to bind pipeline and bind buffer. Specific for pure Compute Renderer. Only instanced during Render(). More...

#include <Renderer.h>

Inheritance diagram for Spices::Renderer::ComputeRenderBehaveBuilder:
Spices::Renderer::RenderBehaveBuilder

Public Member Functions

 ComputeRenderBehaveBuilder (Renderer *renderer, uint32_t currentFrame, uint32_t currentImage, const std::array< VkCommandBuffer, MaxFrameInFlight > &cmdBuffers)
 Constructor Function. Bind pipeline and all buffer type descriptor set.
 
virtual ~ComputeRenderBehaveBuilder () override=default
 Destructor Function.
 
virtual std::shared_ptr< RendererSubPass > & GetStatisticsRendererPass () override
 Get RenderPass in statistics. @reutrn Return RenderPass.
 
virtual void BeginRenderPass () override
 Begin this Renderer's RenderPass.
 
virtual void EndRenderPass () override
 End this Renderer's RenderPass.
 
virtual void BeginNextSubPass (const std::string &subPassName) override
 End a preview sub pass and stat next sub pass.
 
virtual void BindPipeline (const std::string &materialName, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_COMPUTE) override
 Bind the pipeline created by CreatePipeline(). Called on RenderBehaveBuilder instanced.
 
virtual void BindDescriptorSet (const DescriptorSetInfo &infos, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_COMPUTE) override
 Binding DescriptorSet with DescriptorSetInfo. For Binding a Renderer DescriptorSet.
 
virtual void BindDescriptorSet (const DescriptorSetInfo &infos, const std::string &name, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_COMPUTE) override
 Binding DescriptorSet with DescriptorSetInfo and name. For Binding a Material DescriptorSet.
 
void Dispatch (uint32_t x, uint32_t y, uint32_t z) const
 Dispatch Compute Shader.
 
virtual void AddBarriers (VulkanImage *image, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t srcQueueFamilyIndex=VulkanRenderBackend::GetState().m_GraphicQueueFamily, uint32_t dstQueueFamilyIndex=VulkanRenderBackend::GetState().m_ComputeQueueFamily, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Image Barrier from graphic queue to this compute queue.
 
virtual void ReleaseBarriers (VulkanImage *image, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t srcQueueFamilyIndex=VulkanRenderBackend::GetState().m_ComputeQueueFamily, uint32_t dstQueueFamilyIndex=VulkanRenderBackend::GetState().m_GraphicQueueFamily, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Image Barrier from this compute queue to graphic queue.
 
virtual void InternalBarriers (VulkanImage *image, VkAccessFlags srcAccessMask=VK_ACCESS_SHADER_WRITE_BIT, VkAccessFlags dstAccessMask=VK_ACCESS_SHADER_READ_BIT, VkPipelineStageFlags srcStageMask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VkPipelineStageFlags dstStageMask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Image Barrier from this queue to this queue.
 
virtual void AddBarriers (VkBuffer buffer, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t srcQueueFamilyIndex=VulkanRenderBackend::GetState().m_GraphicQueueFamily, uint32_t dstQueueFamilyIndex=VulkanRenderBackend::GetState().m_ComputeQueueFamily, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Buffer Barrier from graphic queue to this compute queue.
 
virtual void ReleaseBarriers (VkBuffer buffer, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t srcQueueFamilyIndex=VulkanRenderBackend::GetState().m_ComputeQueueFamily, uint32_t dstQueueFamilyIndex=VulkanRenderBackend::GetState().m_GraphicQueueFamily, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Buffer Barrier from this compute queue to graphic queue.
 
virtual void InternalBarriers (VkBuffer buffer, VkAccessFlags srcAccessMask=VK_ACCESS_SHADER_WRITE_BIT, VkAccessFlags dstAccessMask=VK_ACCESS_SHADER_READ_BIT, VkPipelineStageFlags srcStageMask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VkPipelineStageFlags dstStageMask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Buffer Barrier from this queue to this queue.
 
virtual void InternalBarriers (VkAccessFlags srcAccessMask=VK_ACCESS_SHADER_WRITE_BIT, VkAccessFlags dstAccessMask=VK_ACCESS_SHADER_READ_BIT, VkPipelineStageFlags srcStageMask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VkPipelineStageFlags dstStageMask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) override
 Add a Memory Barrier from this queue to this queue.
 
void Recording (const std::string &caption) const
 Recording all this behaves does.
 
void EndRecording () const
 End recording all this behaveS does.
 
std::future< VkCommandBuffer > Async (std::function< void(const VkCommandBuffer &cmdBuffer)> func) const
 Async Commands.
 
void Await (std::function< void(const VkCommandBuffer &cmdBuffer)> func) const
 Await Async Commands.
 
void Wait (std::future< VkCommandBuffer > &futureCmdBuffer) const
 Wait for merge secondary commandBuffers.
 
void Wait (std::vector< std::future< VkCommandBuffer > > &futureCmdBuffers) const
 Wait for merge secondary commandBuffer.
 
virtual void BindPipeline (VkPipeline pipeline, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_GRAPHICS)
 Bind the pipeline created by CreatePipeline(). Called on RenderBehaveBuilder instanced.
 
virtual void BindPipelineAsync (const std::string &materialName, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_GRAPHICS)
 Bind the pipeline created by CreatePipeline() Async. Called on RenderBehaveBuilder instanced.
 
void SetViewPort (const VkCommandBuffer &cmdBuffer=VK_NULL_HANDLE) const
 DynamicState Set Viewport and Scissor.
 
void SetViewPortAsync () const
 DynamicState Set Viewport and Scissor Async.
 
virtual void BindDescriptorSetAsync (const DescriptorSetInfo &infos, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_GRAPHICS)
 Binding DescriptorSet with DescriptorSetInfo Async. For Binding a Renderer DescriptorSet.
 
virtual void BindDescriptorSetAsync (const DescriptorSetInfo &infos, const std::string &name, VkPipelineBindPoint bindPoint=VK_PIPELINE_BIND_POINT_GRAPHICS)
 Binding DescriptorSet with DescriptorSetInfo and name Async. For Binding a Material DescriptorSet.
 
void RunDGC (VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) const
 Run DGC Buffer.
 
void RunDGCAsync () const
 Run DGC Buffer Async.
 
void PreprocessDGC_NV (VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) const
 Preprocess Device Generated CommandsBuffer.
 
void PreprocessDGCAsync_NV () const
 Preprocess Device Generated CommandsBuffer Async.
 
void ExecuteDGC_NV (const VkCommandBuffer &cmdBuffer=VK_NULL_HANDLE) const
 Execute Device Generated CommandsBuffer.
 
void ExecuteDGCAsync_NV () const
 Execute Device Generated CommandsBuffer Async.
 
void DrawFullScreenTriangle (const VkCommandBuffer &cmdBuffer=VK_NULL_HANDLE) const
 Draw a Triangle full screen.
 
void DrawFullScreenTriangleAsync () const
 Draw a Triangle full screen Async.
 
template<typename T , typename F >
void UpdatePushConstant (F func, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE)
 Update local push constant buffer.
 
template<typename T >
void UpdatePushConstant (void *data, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) const
 Update local push constant buffer.
 
template<typename T , typename F >
void UpdatePushConstantAsync (F func)
 Update local push constant buffer Async.
 
template<typename T >
void UpdatePushConstantAsync (void *data) const
 Update local push constant buffer Async.
 
template<typename T , typename F >
void UpdateUniformBuffer (uint32_t set, uint32_t binding, F func)
 Update a local buffer.
 
void UpdateUniformBuffer (uint32_t set, uint32_t binding, void *data) const
 Update a local buffer.
 
template<typename T , typename F >
void UpdateStorageBuffer (uint32_t set, uint32_t binding, F func)
 Update a local buffer.
 
void UpdateStorageBuffer (uint32_t set, uint32_t binding, void *data, uint64_t size=VK_WHOLE_SIZE, uint64_t offset=0) const
 Update a local buffer.
 
void UpdateStorageBuffer (uint32_t set, uint32_t binding, std::shared_ptr< VulkanBuffer > buffer) const
 Update a local buffer.
 
void UpdateAccelerationStructure (uint32_t set, uint32_t binding, const VkAccelerationStructureKHR &accel) const
 Update AccelerationStructure in descriptorSet.
 
void BeginNextSubPassAsync (const std::string &subPassName)
 End a preview sub pass and stat next sub pass.
 
void BeginRenderPassAsync ()
 Begin this Renderer's RenderPass Async.
 
void InternalRegionBarrier (VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkCommandBuffer cmdBuffer=VK_NULL_HANDLE) const
 Add a memory Barrier.
 
void InternalRegionBarrierAsync (VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask) const
 Add a memory Barrier.
 
uint32_t GetSubPassIndex () const
 Get current subPass index in renderPass.
 

Public Attributes

Rendererm_Renderer
 Specific Renderer pointer. Passed while this class instanced.
 
uint32_t m_CurrentFrame
 Current frame index. Passed while this class instanced.
 
uint32_t m_CurrentImage
 Current frame index. Passed while this class instanced.
 
uint32_t m_SubPassIndex = 0
 Current subPass Index.
 
VkCommandBuffer m_CommandBuffer
 Current CommandBuffer.
 
std::shared_ptr< RendererSubPassm_HandledSubPass
 Handled Sub pass.
 
std::shared_ptr< VulkanDeviceGeneratedCommandsNVm_HandledDGCData
 Current subPass DGCData.
 

Detailed Description

This class helps to bind pipeline and bind buffer. Specific for pure Compute Renderer. Only instanced during Render().

Definition at line 1738 of file Renderer.h.


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