jGL
Loading...
Searching...
No Matches
buffer.h
Go to the documentation of this file.
1#ifndef BUFFER
2#define BUFFER
3
6
7#include <cstring>
8
9namespace jGL::Vulkan
10{
11 class Buffer
12 {
13
14 public:
15
17 (
18 const Device & d,
19 VkDeviceSize s,
20 VkBufferUsageFlags usage,
21 VkMemoryPropertyFlags properties
22 )
23 : device(d), size(s)
24 {
25 createBuffer(size, usage, properties);
26 }
27
29 {
30 vkDestroyBuffer(device.getVkDevice(), buffer, nullptr);
31 vkFreeMemory(device.getVkDevice(), memory, nullptr);
32 }
33
34 void copy(const Buffer & src, const Command & command);
35
36 const VkDeviceSize & getVkDeviceSize() const { return size; }
37
38 void copyMemory
39 (
40 const VkDeviceSize offset,
41 const VkDeviceSize size,
42 void * data,
43 const VkMemoryMapFlags = 0
44 );
45
46 const VkBuffer & getVkBuffer() const { return buffer; }
47 const VkDeviceMemory & getVkDeviceMemory() const { return memory; }
48
49 private:
50
51 const Device & device;
52
53 VkBuffer buffer;
54 VkDeviceMemory memory;
55 VkDeviceSize size;
56
57 void copyBuffer
58 (
59 VkBuffer src,
60 VkBuffer dst,
61 VkDeviceSize size,
62 const Command & command
63 );
64
65 void createBuffer
66 (
67 VkDeviceSize size,
68 VkBufferUsageFlags usage,
69 VkMemoryPropertyFlags properties
70 );
71
72
73 };
74
75 uint32_t findMemoryType
76 (
77 const Device & device,
78 uint32_t typeFilter,
79 VkMemoryPropertyFlags properties
80 );
81
82}
83
84#endif /* BUFFER */
Definition buffer.h:12
~Buffer()
Definition buffer.h:28
void copyMemory(const VkDeviceSize offset, const VkDeviceSize size, void *data, const VkMemoryMapFlags=0)
Definition buffer.cpp:12
const VkDeviceSize & getVkDeviceSize() const
Definition buffer.h:36
Buffer(const Device &d, VkDeviceSize s, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties)
Definition buffer.h:17
const VkBuffer & getVkBuffer() const
Definition buffer.h:46
void copy(const Buffer &src, const Command &command)
Definition buffer.cpp:6
const VkDeviceMemory & getVkDeviceMemory() const
Definition buffer.h:47
Definition command.h:12
Definition device.h:10
const VkDevice & getVkDevice() const
Definition device.h:24
Definition buffer.h:10
uint32_t findMemoryType(const Device &device, uint32_t typeFilter, VkMemoryPropertyFlags properties)
Definition buffer.cpp:26