PeriDyno 1.0.0
Loading...
Searching...
No Matches
VkDeviceArray2D.inl
Go to the documentation of this file.
1namespace dyno {
2
3 template<typename T>
7
8 template<typename T>
10 {
11 this->resize(nx, ny);
12 }
13
14 template<typename T>
15 void VkDeviceArray2D<T>::resize(uint32_t nx, uint32_t ny, VkBufferUsageFlags usageFlags)
16 {
17 buffer->destroy();
18
19 m_nx = nx;
20 m_ny = ny;
21
22 m_num = nx * ny;
23
24 if (m_num > 0)
25 {
26 if (ctx->useMemoryPool) {
27 buffer->size = m_num * sizeof(T);
28 buffer->usageFlags = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
29 VK_BUFFER_USAGE_TRANSFER_SRC_BIT | usageFlags;
30 buffer->memoryPropertyFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
31 ctx->createBuffer(VkContext::DevicePool, buffer);
32 }
33 else {
34 ctx->createBuffer(
35 usageFlags | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
36 VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
37 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
38 buffer,
39 m_num * sizeof(T));
40 }
41 }
42 }
43
44 template<typename T>
49
50 template<typename T>
52 {
53 m_num = 0;
54 m_nx = 0;
55 m_ny = 0;
56 buffer->destroy();
57 }
58
59 template<typename T>
61 {
62 Array2DInfo info;
63 info.nx = m_nx;
64 info.ny = m_ny;
65
66 return info;
67 }
68}
uint32_t nx() const
uint32_t ny() const
VariableType type() override
void resize(uint32_t nx, uint32_t ny, VkBufferUsageFlags usageFlags=0)
VkContext * ctx
Definition VkVariable.h:48
std::shared_ptr< vks::Buffer > buffer
Definition VkVariable.h:50
#define T(t)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
VariableType
Definition VkVariable.h:14
@ DeviceBuffer
Device buffer.
Definition VkVariable.h:15