Browse Source

Vk: Improve pipelineBarrier and beginRenderPass commands

Signed-off-by: Squareys <squareys@googlemail.com>
pull/202/head
Squareys 10 years ago committed by Squareys
parent
commit
5b531f4f8a
  1. 12
      src/Magnum/Vk/Command.h
  2. 6
      src/Magnum/Vk/CommandBuffer.h
  3. 2
      src/Magnum/Vk/Pipeline.h

12
src/Magnum/Vk/Command.h

@ -77,18 +77,18 @@ auto pipelineBarrier(PipelineStageFlags srcStageMask,
const std::vector<VkMemoryBarrier>& memoryBarriers, const std::vector<VkMemoryBarrier>& memoryBarriers,
const std::vector<VkBufferMemoryBarrier>& bufferMemoryBarriers, const std::vector<VkBufferMemoryBarrier>& bufferMemoryBarriers,
const std::vector<ImageMemoryBarrier>& imageMemoryBarriers) { const std::vector<ImageMemoryBarrier>& imageMemoryBarriers) {
return [&memoryBarriers, &bufferMemoryBarriers, &imageMemoryBarriers](VkCommandBuffer cmdBuffer){ return [srcStageMask, dstStageMask, &memoryBarriers, &bufferMemoryBarriers, &imageMemoryBarriers](VkCommandBuffer cmdBuffer){
vkCmdPipelineBarrier(cmdBuffer, vkCmdPipelineBarrier(cmdBuffer,
VkPipelineStageFlags(srcStageFlags), VkPipelineStageFlags(dstStageMask), VkPipelineStageFlags(srcStageMask), VkPipelineStageFlags(dstStageMask),
0, memoryBarriers.size(), 0, memoryBarriers.size(),
Containers::StaticArrayView<VkMemoryBarrier>(memoryBarriers), memoryBarriers.data(),
bufferMemoryBarriers.size(), bufferMemoryBarriers.size(),
Containers::StaticArrayView<VkBufferMemoryBarrier>(bufferMemoryBarriers), bufferMemoryBarriers.data(),
imageMemoryBarriers.size(), imageMemoryBarriers.size(),
Containers::StaticArrayView<VkImageMemoryBarrier>(imageMemoryBarriers) reinterpret_cast<const VkImageMemoryBarrier*>(imageMemoryBarriers.data())
); );
} };
} }
}}} }}}

6
src/Magnum/Vk/CommandBuffer.h

@ -33,6 +33,8 @@
#include "Magnum/Magnum.h" #include "Magnum/Magnum.h"
#include "Magnum/Math/Range.h" #include "Magnum/Math/Range.h"
#include "Magnum/Vk/Context.h" #include "Magnum/Vk/Context.h"
#include "Magnum/Vk/RenderPass.h"
#include "Magnum/Vk/Framebuffer.h"
#include "Magnum/Vk/visibility.h" #include "Magnum/Vk/visibility.h"
#include "vulkan.h" #include "vulkan.h"
@ -98,8 +100,8 @@ class MAGNUM_VK_EXPORT CommandBuffer {
return *this; return *this;
} }
CommandBuffer& beginRenderPass(SubpassContents subpassContents, VkRenderPass renderPass, CommandBuffer& beginRenderPass(SubpassContents subpassContents, RenderPass& renderPass,
VkFramebuffer framebuffer, Range2Di renderArea, Vk::Framebuffer& framebuffer, Range2Di renderArea,
const std::vector<VkClearValue>& clearValues) { const std::vector<VkClearValue>& clearValues) {
VkRenderPassBeginInfo renderPassBeginInfo { VkRenderPassBeginInfo renderPassBeginInfo {
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,

2
src/Magnum/Vk/Pipeline.h

@ -104,6 +104,8 @@ enum class PipelineStage: UnsignedInt {
typedef Containers::EnumSet<PipelineStage> PipelineStageFlags; typedef Containers::EnumSet<PipelineStage> PipelineStageFlags;
CORRADE_ENUMSET_OPERATORS(PipelineStageFlags)
enum class BindPoint: UnsignedInt { enum class BindPoint: UnsignedInt {
Graphics = VK_PIPELINE_BIND_POINT_GRAPHICS, Graphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
Compute = VK_PIPELINE_BIND_POINT_COMPUTE, Compute = VK_PIPELINE_BIND_POINT_COMPUTE,

Loading…
Cancel
Save