Added OpMemoryBarrier to the available operations
This commit is contained in:
parent
c9bd406c8b
commit
d7b98f149b
4 changed files with 219 additions and 0 deletions
69
src/OpMemoryBarrier.cpp
Normal file
69
src/OpMemoryBarrier.cpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
#pragma once
|
||||
|
||||
#include "kompute/operations/OpMemoryBarrier.hpp"
|
||||
|
||||
namespace kp {
|
||||
|
||||
OpMemoryBarrier::OpMemoryBarrier(
|
||||
const std::vector<std::shared_ptr<Tensor>>& tensors,
|
||||
const vk::AccessFlagBits& srcAccessMask,
|
||||
const vk::AccessFlagBits& dstAccessMask,
|
||||
const vk::PipelineStageFlagBits& srcStageMask,
|
||||
const vk::PipelineStageFlagBits& dstStageMask,
|
||||
bool barrierOnPrimary)
|
||||
: mTensors(tensors),
|
||||
mSrcAccessMask(srcAccessMask),
|
||||
mDstAccessMask(dstAccessMask),
|
||||
mSrcStageMask(srcStageMask),
|
||||
mDstStageMask(dstStageMask),
|
||||
mBarrierOnPrimary(barrierOnPrimary)
|
||||
{
|
||||
KP_LOG_DEBUG("Kompute OpMemoryBarrier constructor");
|
||||
|
||||
}
|
||||
|
||||
OpMemoryBarrier::~OpMemoryBarrier()
|
||||
{
|
||||
KP_LOG_DEBUG("Kompute OpMemoryBarrier destructor started");
|
||||
}
|
||||
|
||||
void
|
||||
OpMemoryBarrier::record(const vk::CommandBuffer& commandBuffer)
|
||||
{
|
||||
KP_LOG_DEBUG("Kompute OpMemoryBarrier record called");
|
||||
|
||||
// Barrier to ensure the data is finished writing to buffer memory
|
||||
if (this->mBarrierOnPrimary) {
|
||||
for (const std::shared_ptr<Tensor>& tensor : this->mTensors) {
|
||||
tensor->recordPrimaryBufferMemoryBarrier(
|
||||
commandBuffer,
|
||||
this->mSrcAccessMask,
|
||||
this->mDstAccessMask,
|
||||
this->mSrcStageMask,
|
||||
this->mDstStageMask);
|
||||
}
|
||||
} else {
|
||||
for (const std::shared_ptr<Tensor>& tensor : this->mTensors) {
|
||||
tensor->recordStagingBufferMemoryBarrier(
|
||||
commandBuffer,
|
||||
this->mSrcAccessMask,
|
||||
this->mDstAccessMask,
|
||||
this->mSrcStageMask,
|
||||
this->mDstStageMask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
OpMemoryBarrier::preEval(const vk::CommandBuffer& commandBuffer)
|
||||
{
|
||||
KP_LOG_DEBUG("Kompute OpMemoryBarrier preEval called");
|
||||
}
|
||||
|
||||
void
|
||||
OpMemoryBarrier::postEval(const vk::CommandBuffer& commandBuffer)
|
||||
{
|
||||
KP_LOG_DEBUG("Kompute OpMemoryBarrier postSubmit called");
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue