diff options
Diffstat (limited to 'src/buffer.hpp')
| -rw-r--r-- | src/buffer.hpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/buffer.hpp b/src/buffer.hpp new file mode 100644 index 0000000..58ed5dd --- /dev/null +++ b/src/buffer.hpp @@ -0,0 +1,52 @@ +/* +* Vulkan buffer class +* +* Encapsulates a Vulkan buffer +* +* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de +* +* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) +*/ + +#pragma once + +#include "vke.hpp" +#include "resource.hpp" + +namespace vke +{ + struct buffer_t : public Resource + { + VkBuffer buffer = VK_NULL_HANDLE; + + VkBufferCreateInfo infos = {VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO}; + + VkDescriptorBufferInfo descriptor; + VkDeviceSize size = 0; + VkDeviceSize alignment = 0; + VkBufferUsageFlags usageFlags; + VkMemoryPropertyFlags memoryPropertyFlags; + void* mapped = nullptr; + + buffer_t(device_t* _device, VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags _memoryPropertyFlags, VkDeviceSize size, void *data = nullptr); + ~buffer_t(); + + VkResult map(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0); + void unmap(); + + VkResult bind(VkDeviceSize offset = 0); + + void setupDescriptor(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0); + + virtual VkWriteDescriptorSet getWriteDescriptorSet(VkDescriptorSet ds, uint32_t binding, VkDescriptorType descriptorType); + + void copyTo(void* data, VkDeviceSize size); + + VkResult flush(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0); + + VkResult invalidate(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0); + + void destroy(); + + }; +} |