4#include "kompute/Core.hpp"
5#include "logger/Logger.hpp"
57 static std::string toString(DataTypes
dt);
60 std::shared_ptr<vk::Device>
device,
227 vk::DescriptorType getDescriptorType() {
return mDescriptorType; }
251 KP_LOG_DEBUG(
"Kompute Memory setting data with data size {}",
252 data.size() *
sizeof(
T));
267 if (this->mRawData ==
nullptr) {
271 return (
T*)this->mRawData;
284 if (this->mRawData ==
nullptr) {
288 return { (
T*)this->mRawData, ((
T*)this->mRawData) + this->
size() };
296 uint32_t getX() {
return this->mX; }
303 uint32_t getY() {
return this->mY; };
318 void* mRawData =
nullptr;
319 vk::DescriptorType mDescriptorType;
320 bool mUnmapMemory =
false;
325 std::shared_ptr<vk::PhysicalDevice> mPhysicalDevice;
326 std::shared_ptr<vk::Device> mDevice;
329 std::shared_ptr<vk::DeviceMemory> mPrimaryMemory;
330 bool mFreePrimaryMemory =
false;
331 std::shared_ptr<vk::DeviceMemory> mStagingMemory;
332 bool mFreeStagingMemory =
false;
337 void updateRawData(
void*
data);
338 vk::MemoryPropertyFlags getPrimaryMemoryPropertyFlags();
339 vk::MemoryPropertyFlags getStagingMemoryPropertyFlags();
348constexpr Memory::DataTypes
351 return DataTypes::eBool;
355constexpr Memory::DataTypes
358 return DataTypes::eChar;
362constexpr Memory::DataTypes
365 return DataTypes::eUnsignedChar;
369constexpr Memory::DataTypes
372 return DataTypes::eShort;
376constexpr Memory::DataTypes
379 return DataTypes::eUnsignedShort;
383constexpr Memory::DataTypes
386 return DataTypes::eInt;
390constexpr Memory::DataTypes
393 return DataTypes::eUnsignedInt;
397constexpr Memory::DataTypes
400 return DataTypes::eFloat;
404constexpr Memory::DataTypes
407 return DataTypes::eDouble;
void setData(const void *data, size_t size)
uint32_t dataTypeMemorySize()
void setData(const std::vector< T > &data)
Definition Memory.hpp:249
virtual void recordStagingMemoryBarrier(const vk::CommandBuffer &commandBuffer, vk::AccessFlagBits srcAccessMask, vk::AccessFlagBits dstAccessMask, vk::PipelineStageFlagBits srcStageMask, vk::PipelineStageFlagBits dstStageMask)=0
Memory(const Memory &)=delete
Make Memory uncopyable.
virtual vk::WriteDescriptorSet constructDescriptorSet(vk::DescriptorSet descriptorSet, uint32_t binding)=0
virtual void recordCopyFromStagingToDevice(const vk::CommandBuffer &commandBuffer)=0
virtual ~Memory()
Definition Memory.hpp:80
virtual void recordPrimaryMemoryBarrier(const vk::CommandBuffer &commandBuffer, vk::AccessFlagBits srcAccessMask, vk::AccessFlagBits dstAccessMask, vk::PipelineStageFlagBits srcStageMask, vk::PipelineStageFlagBits dstStageMask)=0
static uint32_t dataTypeMemorySize(DataTypes dataType)
static constexpr DataTypes dataType()
std::vector< T > vector()
Definition Memory.hpp:282
virtual void recordCopyFromDeviceToStaging(const vk::CommandBuffer &commandBuffer)=0
T * data()
Definition Memory.hpp:265
MemoryTypes
Definition Memory.hpp:28
@ eDeviceAndHost
Type is host-visible and host-coherent device memory.
@ eDevice
Type is device memory, source and destination.
@ eHost
Type is host memory, source and destination.
@ eStorage
Type is Device memory (only)
void recordCopyFrom(const vk::CommandBuffer &commandBuffer, std::shared_ptr< Memory > copyFromMemory)