Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
BarrierBundle.cpp
Go to the documentation of this file.
3#include "plog/Log.h"
4
5namespace Vulkan {
8
9 void BarrierBundle::addBufferBarrier(const VkBufferMemoryBarrier2 &barrier) {
10 bufferMemoryBarriers.push_back(barrier);
11 }
12
13 void BarrierBundle::addMemoryBarrier(const VkMemoryBarrier2 &barrier) {
14 memoryBarriers.push_back(barrier);
15 }
16
17 void BarrierBundle::addComputeBufferBarrier(VkPipelineStageFlags2 srcStageMask, VkAccessFlags2 srcAccessMask, VkPipelineStageFlags2 dstStageMask, VkAccessFlags2 dstAccessMask, const EngineCore::VulkanBuffer& buffer)
18 {
19 bufferMemoryBarriers.push_back( {
20 .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,
21 .pNext = nullptr,
22 .srcStageMask = srcStageMask,
23 .srcAccessMask = srcAccessMask,
24 .dstStageMask = dstStageMask,
25 .dstAccessMask = dstAccessMask,
26 .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
27 .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
28 .buffer = buffer.getBuffer(),
29 .offset = 0,
30 .size = buffer.getBufferSize()
31 } );
32 }
33
34 VkDependencyInfo BarrierBundle::getDependencyInfo() const {
35 return {
36 .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO,
37 .dependencyFlags = 0,
38 .memoryBarrierCount = static_cast<uint32_t>( memoryBarriers.size() ),
39 .pMemoryBarriers = memoryBarriers.data(),
40 .bufferMemoryBarrierCount = static_cast<uint32_t>( bufferMemoryBarriers.size() ),
41 .pBufferMemoryBarriers = bufferMemoryBarriers.data(),
42 };
43 }
44
46 memoryBarriers.clear();
48 }
49}
RAII wrapper for Vulkan buffer and device memory.
VkDeviceSize getBufferSize() const
VkBuffer getBuffer() const
void addBufferBarrier(const VkBufferMemoryBarrier2 &barrier)
VkDependencyInfo getDependencyInfo() const
std::vector< VkBufferMemoryBarrier2 > bufferMemoryBarriers
void addMemoryBarrier(const VkMemoryBarrier2 &barrier)
void addComputeBufferBarrier(VkPipelineStageFlags2 srcStageMask, VkAccessFlags2 srcAccessMask, VkPipelineStageFlags2 dstStageMask, VkAccessFlags2 dstAccessMask, const EngineCore::VulkanBuffer &buffer)
std::vector< VkMemoryBarrier2 > memoryBarriers
Used for vulkan specific helpers like something to chain pNexts together.