SpiecsEngine
 
Loading...
Searching...
No Matches

◆ ReleaseBarriers() [1/2]

void Spices::Renderer::RenderBehaveBuilder::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 )
virtual

Add a Buffer Barrier from this graphic queue to compute queue.

Parameters
[in]bufferVulkanImage.
[in]srcAccessMaskVkAccessFlags.
[in]dstAccessMaskVkAccessFlags.
[in]srcStageMaskVkPipelineStageFlags.
[in]dstStageMaskVkPipelineStageFlags.
[in]srcQueueFamilyIndexsource queue family.
[in]dstQueueFamilyIndexdest queue family.
[in]cmdBufferInput a VkCommandBuffer if needs, otherwise use self variable.

Reimplemented in Spices::Renderer::ComputeRenderBehaveBuilder.

Definition at line 2083 of file Renderer.cpp.

2093 {
2095
2096 VkBufferMemoryBarrier bufferBarrier {};
2097 bufferBarrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
2098 bufferBarrier.srcAccessMask = srcAccessMask;
2099 bufferBarrier.dstAccessMask = dstAccessMask;
2100 bufferBarrier.srcQueueFamilyIndex = srcQueueFamilyIndex; // Release From Compute to Graphic
2101 bufferBarrier.dstQueueFamilyIndex = dstQueueFamilyIndex;
2102 bufferBarrier.size = VK_WHOLE_SIZE;
2103 bufferBarrier.buffer = buffer;
2104
2105 vkCmdPipelineBarrier(
2106 cmdBuffer ? cmdBuffer : m_CommandBuffer,
2107 srcStageMask,
2108 dstStageMask,
2109 0,
2110 0, nullptr,
2111 1, &bufferBarrier,
2112 0, nullptr
2113 );
2114 }
#define SPICES_PROFILE_ZONE
VkCommandBuffer m_CommandBuffer
Current CommandBuffer.
Definition Renderer.h:1539