PeriDyno 1.0.0
Loading...
Searching...
No Matches
VkHostArray.inl
Go to the documentation of this file.
1namespace dyno {
2
3 template<typename T>
7
8 template<typename T>
9 void VkHostArray<T>::resize(uint32_t num, const T* data)
10 {
11 uint32_t newSize = num * sizeof(T);
12 uint32_t bufferSize = this->bufferSize();
13
14 if (newSize > bufferSize)
15 {
16 m_num = num;
17
18 buffer->destroy();
19
20 if (num > 0) {
21 if (ctx->useMemoryPool) {
22 buffer->size = newSize;
23 buffer->usageFlags = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
24 buffer->memoryPropertyFlags =
25 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
26 ctx->createBuffer(VkContext::HostPool, buffer, data);
27 }
28 else {
29 ctx->createBuffer(
30 VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
31 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
32 buffer,
33 newSize,
34 data);
35 }
36 }
37 }
38 else
39 {
40 m_num = num;
41 }
42 }
43
44 template<typename T>
49
50 template<typename T>
52 {
53 buffer->destroy();
54 }
55
56 template<typename T>
58 {
59 VK_CHECK_RESULT(buffer->map());
60 return buffer->mapped;
61 }
62
63 template<typename T>
65 {
66 buffer->unmap();
67 }
68}
#define VK_CHECK_RESULT(f)
Definition VulkanTools.h:55
uint32_t bufferSize() override
Definition VkHostArray.h:21
VariableType type() override
void resize(uint32_t num, const T *data=nullptr)
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