Kompute
Loading...
Searching...
No Matches
OpMemoryBarrier.hpp
1// SPDX-License-Identifier: Apache-2.0
2#pragma once
3
4#include "kompute/Algorithm.hpp"
5#include "kompute/Core.hpp"
6#include "kompute/Tensor.hpp"
7#include "kompute/operations/OpBase.hpp"
8
9namespace kp {
10
18class OpMemoryBarrier : public OpBase
19{
20 public:
37 OpMemoryBarrier(const std::vector<std::shared_ptr<Memory>>& memObjects,
38 const vk::AccessFlagBits& srcAccessMask,
39 const vk::AccessFlagBits& dstAccessMask,
40 const vk::PipelineStageFlagBits& srcStageMask,
41 const vk::PipelineStageFlagBits& dstStageMask,
42 bool barrierOnPrimary = true) noexcept;
43
49 OpMemoryBarrier(const OpMemoryBarrier&&) = delete;
50 OpMemoryBarrier& operator=(const OpMemoryBarrier&) = delete;
51 OpMemoryBarrier& operator=(const OpMemoryBarrier&&) = delete;
52
57 virtual ~OpMemoryBarrier() noexcept override;
58
65 virtual void record(const vk::CommandBuffer& commandBuffer) override;
66
72 virtual void preEval(const vk::CommandBuffer& commandBuffer) override;
73
79 virtual void postEval(const vk::CommandBuffer& commandBuffer) override;
80
81 private:
82 const vk::AccessFlagBits mSrcAccessMask;
83 const vk::AccessFlagBits mDstAccessMask;
84 const vk::PipelineStageFlagBits mSrcStageMask;
85 const vk::PipelineStageFlagBits mDstStageMask;
86 const bool mBarrierOnPrimary;
87 const std::vector<std::shared_ptr<Memory>> mMemObjects;
88};
89
90} // End namespace kp
Definition Memory.hpp:16
Definition OpBase.hpp:20
Definition OpMemoryBarrier.hpp:19
OpMemoryBarrier(const std::vector< std::shared_ptr< Memory > > &memObjects, const vk::AccessFlagBits &srcAccessMask, const vk::AccessFlagBits &dstAccessMask, const vk::PipelineStageFlagBits &srcStageMask, const vk::PipelineStageFlagBits &dstStageMask, bool barrierOnPrimary=true) noexcept
virtual void record(const vk::CommandBuffer &commandBuffer) override
virtual void preEval(const vk::CommandBuffer &commandBuffer) override
virtual void postEval(const vk::CommandBuffer &commandBuffer) override