PeriDyno 1.0.0
Loading...
Searching...
No Matches
VkHostArray2D.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 uint32_t VkHostArray2D<T>::index(uint32_t i, uint32_t j)
16 {
17 return i + j * m_nx;
18 }
19
20 template<typename T>
21 void VkHostArray2D<T>::resize(uint32_t nx, uint32_t ny, const T* data)
22 {
23 buffer->destroy();
24
25 m_nx = nx;
26 m_ny = ny;
27 m_num = nx * ny;
28
29 if (m_num > 0) {
30 if (ctx->useMemoryPool) {
31 buffer->size = m_num * sizeof(T);
32 buffer->usageFlags = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
33 buffer->memoryPropertyFlags =
34 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
35 ctx->createBuffer(VkContext::HostPool, buffer, data);
36 }
37 else {
38 ctx->createBuffer(
39 VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
40 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
41 buffer,
42 m_num * sizeof(T),
43 data);
44 }
45 }
46 }
47
48 template<typename T>
53
54 template<typename T>
56 {
57 m_nx = 0;
58 m_ny = 0;
59 m_num = 0;
60 buffer->destroy();
61 }
62
63 template<typename T>
65 {
66 VK_CHECK_RESULT(buffer->map());
67 return buffer->mapped;
68 }
69
70 template<typename T>
72 {
73 buffer->unmap();
74 }
75
76 template<typename T>
78 {
79 HostArray2DInfo info;
80 info.nx = m_nx;
81 info.ny = m_ny;
82 info.nxy = m_nx * m_ny;
83
84 return info;
85 }
86}
#define VK_CHECK_RESULT(f)
Definition VulkanTools.h:55
uint32_t ny() const
void resize(uint32_t nx, uint32_t ny, const T *data=nullptr)
HostArray2DInfo getInfo()
uint32_t index(uint32_t i, uint32_t j)
uint32_t nx() const
VariableType type() override
virtual void * data() const
Definition VkVariable.h:45
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
@ HostBuffer
Host buffer.
Definition VkVariable.h:16