MNN/source/backend/vulkan/component/VulkanBuffer.hpp

45 lines
1.1 KiB
C++
Raw Normal View History

2019-04-17 10:49:11 +08:00
//
// VulkanBuffer.hpp
// MNN
//
// Created by MNN on 2019/01/31.
// Copyright © 2018, Alibaba Group Holding Limited
//
#ifndef VulkanBuffer_hpp
#define VulkanBuffer_hpp
2019-12-27 22:16:57 +08:00
#include "backend/vulkan/component/VulkanMemoryPool.hpp"
2019-04-17 10:49:11 +08:00
namespace MNN {
class VulkanBuffer : public NonCopyable {
public:
VulkanBuffer(const VulkanMemoryPool& pool, bool seperate, size_t size, const void* hostData = nullptr,
VkBufferUsageFlags usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
VkSharingMode shared = VK_SHARING_MODE_EXCLUSIVE,
VkFlags requirements_mask = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
virtual ~VulkanBuffer();
VkBuffer buffer() const {
return mBuffer;
}
size_t size() const {
return mSize;
}
void* map(int start = 0, int size = -1) const;
void unmap() const;
void flush(bool write, int start, int size) const;
void release();
private:
const VulkanMemoryPool& mPool;
const VulkanMemory* mMemory;
VkBuffer mBuffer;
size_t mSize;
bool mReleased = false;
};
} // namespace MNN
#endif /* VulkanBuffer_hpp */