PeriDyno 1.0.0
Loading...
Searching...
No Matches
VulkanBuffer.h
Go to the documentation of this file.
1/*
2* Vulkan buffer class
3*
4* Encapsulates a Vulkan buffer
5*
6* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de
7*
8* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
9*/
10
11#pragma once
12
13#include <vector>
14
15#include "vulkan/vulkan.h"
16//#include "VkContext.h"
17
18VK_DEFINE_HANDLE(VmaAllocation)
19VK_DEFINE_HANDLE(VmaAllocator)
20
21namespace vks
22{
27 class Buffer
28 {
29 public:
30 Buffer(VkDevice dev = nullptr);
31 ~Buffer();
32 VkResult map(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0);
33 void unmap();
34 VkResult bind(VkDeviceSize offset = 0);
35 void setupDescriptor(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0);
36 void copyTo(void* data, VkDeviceSize size);
37 VkResult flush(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0);
38 VkResult invalidate(VkDeviceSize size = VK_WHOLE_SIZE, VkDeviceSize offset = 0);
39 void destroy();
40
41 VkDevice device;
42 VkBuffer buffer = VK_NULL_HANDLE;
43 VkDeviceMemory memory = VK_NULL_HANDLE;
44 VkDescriptorBufferInfo descriptor;
45 VkDeviceSize size = 0;
46 VkDeviceSize alignment = 0;
47 VkDeviceSize offset = 0;
48 VmaAllocation allocation = VK_NULL_HANDLE;
49 VmaAllocator allocator = VK_NULL_HANDLE;
50 VkBool32 usePool = VK_FALSE;
51 void* mapped = nullptr;
53 VkBufferUsageFlags usageFlags;
55 VkMemoryPropertyFlags memoryPropertyFlags;
56
57// px::VkContext* ctx;
58 };
59}
VkMemoryPropertyFlags memoryPropertyFlags
Memory property flags to be filled by external source at buffer creation (to query at some later poin...
VkResult bind(VkDeviceSize offset=0)
VmaAllocation allocation
VkDeviceSize size
void copyTo(void *data, VkDeviceSize size)
VkBufferUsageFlags usageFlags
Usage flags to be filled by external source at buffer creation (to query at some later point)
VkResult flush(VkDeviceSize size=VK_WHOLE_SIZE, VkDeviceSize offset=0)
VkResult map(VkDeviceSize size=VK_WHOLE_SIZE, VkDeviceSize offset=0)
VkDeviceSize alignment
VkBuffer buffer
VkDeviceMemory memory
Buffer(VkDevice dev=nullptr)
VkResult invalidate(VkDeviceSize size=VK_WHOLE_SIZE, VkDeviceSize offset=0)
VkDevice device
VkDeviceSize offset
VkBool32 usePool
void * mapped
VkDescriptorBufferInfo descriptor
VmaAllocator allocator
void setupDescriptor(VkDeviceSize size=VK_WHOLE_SIZE, VkDeviceSize offset=0)