PeriDyno
1.0.0
Loading...
Searching...
No Matches
D:
Peridyno
peridyno
src
Core
Backend
Vulkan
VkDeviceArray3D.inl
Go to the documentation of this file.
1
namespace
dyno
{
2
3
template
<
typename
T>
4
VkDeviceArray3D<T>::~VkDeviceArray3D
()
5
{
6
}
7
8
template
<
typename
T>
9
VkDeviceArray3D<T>::VkDeviceArray3D
(uint32_t
nx
, uint32_t
ny
, uint32_t
nz
)
10
{
11
this->
resize
(
nx
,
ny
,
nz
);
12
}
13
14
template
<
typename
T>
15
void
VkDeviceArray3D<T>::resize
(uint32_t
nx
, uint32_t
ny
, uint32_t
nz
, VkBufferUsageFlags usageFlags)
16
{
17
buffer
->destroy();
18
19
m_nx
=
nx
;
20
m_ny
=
ny
;
21
m_nz
=
nz
;
22
m_num
=
nx
*
ny
*
nz
;
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
}
else
{
33
ctx
->createBuffer(
34
usageFlags | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
35
VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
36
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
37
buffer
,
38
m_num
*
sizeof
(
T
));
39
}
40
}
41
}
42
43
template
<
typename
T>
44
uint32_t
VkDeviceArray3D<T>::index
(uint32_t i, uint32_t j, uint32_t k)
45
{
46
return
i + j *
m_nx
+ k *
m_nx
*
m_ny
;
47
}
48
49
template
<
typename
T>
50
VariableType
VkDeviceArray3D<T>::type
()
51
{
52
return
VariableType::DeviceBuffer
;
53
}
54
55
template
<
typename
T>
56
void
VkDeviceArray3D<T>::clear
()
57
{
58
m_nx
= 0;
59
m_ny
= 0;
60
m_nz
= 0;
61
m_num
= 0;
62
buffer
->destroy();
63
}
64
65
template
<
typename
T>
66
Array3DInfo
VkDeviceArray3D<T>::getInfo
()
67
{
68
Array3DInfo
info;
69
info.
nx
=
m_nx
;
70
info.
ny
=
m_ny
;
71
info.
nz
=
m_nz
;
72
info.
nxy
=
m_nx
*
m_ny
;
73
74
return
info;
75
}
76
}
dyno::VkContext::DevicePool
@ DevicePool
Definition
VkContext.h:96
dyno::VkDeviceArray3D::VkDeviceArray3D
VkDeviceArray3D()
Definition
VkDeviceArray3D.h:19
dyno::VkDeviceArray3D::nx
uint32_t nx() const
Definition
VkDeviceArray3D.h:38
dyno::VkDeviceArray3D::getInfo
Array3DInfo getInfo()
Definition
VkDeviceArray3D.inl:66
dyno::VkDeviceArray3D::type
VariableType type() override
Definition
VkDeviceArray3D.inl:50
dyno::VkDeviceArray3D::m_ny
uint32_t m_ny
Definition
VkDeviceArray3D.h:44
dyno::VkDeviceArray3D::resize
void resize(uint32_t nx, uint32_t ny, uint32_t nz, VkBufferUsageFlags usageFlags=0)
Definition
VkDeviceArray3D.inl:15
dyno::VkDeviceArray3D::m_nx
uint32_t m_nx
Definition
VkDeviceArray3D.h:43
dyno::VkDeviceArray3D::clear
void clear()
Definition
VkDeviceArray3D.inl:56
dyno::VkDeviceArray3D< float >::m_nz
uint32_t m_nz
Definition
VkDeviceArray3D.h:45
dyno::VkDeviceArray3D::~VkDeviceArray3D
~VkDeviceArray3D()
Definition
VkDeviceArray3D.inl:4
dyno::VkDeviceArray3D::nz
uint32_t nz() const
Definition
VkDeviceArray3D.h:40
dyno::VkDeviceArray3D::ny
uint32_t ny() const
Definition
VkDeviceArray3D.h:39
dyno::VkDeviceArray3D::index
uint32_t index(uint32_t i, uint32_t j, uint32_t k)
Definition
VkDeviceArray3D.inl:44
dyno::VkDeviceArray3D< float >::m_num
uint32_t m_num
Definition
VkDeviceArray3D.h:47
dyno::VkVariable::ctx
VkContext * ctx
Definition
VkVariable.h:48
dyno::VkVariable::buffer
std::shared_ptr< vks::Buffer > buffer
Definition
VkVariable.h:50
T
#define T(t)
dyno
This is an implementation of AdditiveCCD based on peridyno.
Definition
Array.h:25
dyno::VariableType
VariableType
Definition
VkVariable.h:14
dyno::DeviceBuffer
@ DeviceBuffer
Device buffer.
Definition
VkVariable.h:15
dyno::Array3DInfo
Definition
VkDeviceArray3D.h:8
dyno::Array3DInfo::nxy
uint32_t nxy
Definition
VkDeviceArray3D.h:12
dyno::Array3DInfo::nx
uint32_t nx
Definition
VkDeviceArray3D.h:9
dyno::Array3DInfo::ny
uint32_t ny
Definition
VkDeviceArray3D.h:10
dyno::Array3DInfo::nz
uint32_t nz
Definition
VkDeviceArray3D.h:11
Generated by
1.13.2