Nebula
Toggle main menu visibility
Loading...
Searching...
No Matches
vkdeferredcommand.h
Go to the documentation of this file.
1
#pragma once
2
//------------------------------------------------------------------------------
8
//------------------------------------------------------------------------------
9
#include "
util/fixedarray.h
"
10
#include "
coregraphics/config.h
"
11
#include "
coregraphics/barrier.h
"
12
#include <vulkan/vulkan.h>
13
namespace
Vulkan
14
{
15
struct
VkDeferredCommand
16
{
18
VkDeferredCommand
();
20
~VkDeferredCommand
();
21
22
enum
DelegateType
23
{
24
FreeCmdBuffers
,
25
FreeMemory
,
26
FreeBuffer
,
27
FreeImage
,
28
__RunAfterFence
,
// don't use this flag, but all delegates prior to this flag requires a frame to be complete before it can occur
29
30
BindDescriptorSets
,
// this can actually be done outside of a frame (views, custom code, etc)
31
32
UpdateBuffer
,
33
UpdateImage
,
34
35
DestroyPipeline
,
36
37
ClearColorImage
,
38
ClearDepthStencilImage
,
39
ImageOwnershipChange
,
40
ImageLayoutTransition
41
};
42
43
struct
Delegate
44
{
45
DelegateType
type
;
46
CoreGraphics::QueueType
queue
;
47
VkFence
fence
;
48
union
49
{
50
struct
// FreeCmdBuffers
51
{
52
VkCommandBuffer
buffers
[64];
53
VkCommandPool
pool
;
54
uint32_t
numBuffers
;
55
}
cmdbufferfree
;
56
57
struct
// FreeMemory
58
{
59
void
*
data
;
60
}
memory
;
61
62
struct
// FreeBuffer
63
{
64
VkBuffer
buf
;
65
VkDeviceMemory
mem
;
66
}
buffer
;
67
68
struct
// FreeImage
69
{
70
VkImage
img
;
71
VkDeviceMemory
mem
;
72
}
image
;
73
74
struct
// UpdateBuffer
75
{
76
VkBuffer
buf
;
77
VkDeviceSize
offset
;
78
VkDeviceSize
size
;
79
uint32_t*
data
;
80
}
bufferUpd
;
81
82
struct
// UpdateImage
83
{
84
VkImage
img
;
85
VkImageCreateInfo
info
;
86
uint32_t
mip
;
87
uint32_t
face
;
88
VkDeviceSize
size
;
89
uint32_t*
data
;
90
}
imageUpd
;
91
92
struct
// DestroyPipeline
93
{
94
VkPipeline
pipeline
;
95
}
pipelineDestroy
;
96
97
struct
// ImageLayoutTransition
98
{
99
VkPipelineStageFlags
left
;
100
VkPipelineStageFlags
right
;
101
VkImageMemoryBarrier
barrier
;
102
}
imgBarrier
;
103
104
struct
// ClearColorImage
105
{
106
VkImage
img
;
107
VkImageLayout
layout
;
108
VkClearColorValue
clearValue
;
109
VkImageSubresourceRange
region
;
110
}
imgColorClear
;
111
112
struct
// ClearDepthStencilImage
113
{
114
VkImage
img
;
115
VkImageLayout
layout
;
116
VkClearDepthStencilValue
clearValue
;
117
VkImageSubresourceRange
region
;
118
}
imgDepthStencilClear
;
119
120
struct
// ImageOwnershipChange
121
{
122
VkPipelineStageFlags
left
;
123
VkPipelineStageFlags
right
;
124
VkImageMemoryBarrier
barrier
;
125
}
imgOwnerChange
;
126
127
struct
// BindDescriptorSets
128
{
129
VkPipelineBindPoint
type
;
130
uint32_t
baseSet
;
131
uint32_t
numSets
;
132
const
VkDescriptorSet*
sets
;
133
uint32_t
numOffsets
;
134
const
uint32_t*
offsets
;
135
}
descSetBind
;
136
};
137
}
del
;
138
139
VkDevice
dev
;
140
142
void
RunDelegate
();
143
};
144
145
146
}
// namespace Vulkan
fixedarray.h
CoreGraphics::QueueType
QueueType
Definition
config.h:40
Vulkan
Vulkan implementation of GPU acceleration structure.
Definition
vkaccelerationstructure.cc:15
barrier.h
config.h
Compile time configuration options for the CoreGraphics subsystem.
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.buffer::buf
VkBuffer buf
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.buffer::mem
VkDeviceMemory mem
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.bufferUpd::offset
VkDeviceSize offset
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.bufferUpd::size
VkDeviceSize size
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.bufferUpd::buf
VkBuffer buf
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.bufferUpd::data
uint32_t * data
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.cmdbufferfree::buffers
VkCommandBuffer buffers[64]
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.cmdbufferfree::pool
VkCommandPool pool
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.cmdbufferfree::numBuffers
uint32_t numBuffers
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.descSetBind::numOffsets
uint32_t numOffsets
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.descSetBind::baseSet
uint32_t baseSet
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.descSetBind::numSets
uint32_t numSets
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.descSetBind::type
VkPipelineBindPoint type
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.descSetBind::sets
const VkDescriptorSet * sets
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.descSetBind::offsets
const uint32_t * offsets
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.image::img
VkImage img
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.image::mem
VkDeviceMemory mem
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imageUpd::info
VkImageCreateInfo info
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imageUpd::size
VkDeviceSize size
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imageUpd::img
VkImage img
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imageUpd::mip
uint32_t mip
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imageUpd::data
uint32_t * data
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imageUpd::face
uint32_t face
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgBarrier::barrier
VkImageMemoryBarrier barrier
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgBarrier::left
VkPipelineStageFlags left
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgBarrier::right
VkPipelineStageFlags right
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgColorClear::clearValue
VkClearColorValue clearValue
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgColorClear::img
VkImage img
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgColorClear::region
VkImageSubresourceRange region
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgColorClear::layout
VkImageLayout layout
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgDepthStencilClear::region
VkImageSubresourceRange region
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgDepthStencilClear::img
VkImage img
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgDepthStencilClear::layout
VkImageLayout layout
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgDepthStencilClear::clearValue
VkClearDepthStencilValue clearValue
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgOwnerChange::right
VkPipelineStageFlags right
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgOwnerChange::left
VkPipelineStageFlags left
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.imgOwnerChange::barrier
VkImageMemoryBarrier barrier
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.memory::data
void * data
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::[struct].__unnamed0__.pipelineDestroy::pipeline
VkPipeline pipeline
Vulkan::VkDeferredCommand::Delegate
Definition
vkdeferredcommand.h:44
Vulkan::VkDeferredCommand::Delegate::queue
CoreGraphics::QueueType queue
Definition
vkdeferredcommand.h:46
Vulkan::VkDeferredCommand::Delegate::fence
VkFence fence
Definition
vkdeferredcommand.h:47
Vulkan::VkDeferredCommand::Delegate::type
DelegateType type
Definition
vkdeferredcommand.h:45
Vulkan::VkDeferredCommand::RunDelegate
void RunDelegate()
run delegate action
Definition
vkdeferredcommand.cc:34
Vulkan::VkDeferredCommand::VkDeferredCommand
VkDeferredCommand()
constructor
Definition
vkdeferredcommand.cc:16
Vulkan::VkDeferredCommand::DelegateType
DelegateType
Definition
vkdeferredcommand.h:23
Vulkan::VkDeferredCommand::FreeBuffer
@ FreeBuffer
Definition
vkdeferredcommand.h:26
Vulkan::VkDeferredCommand::FreeMemory
@ FreeMemory
Definition
vkdeferredcommand.h:25
Vulkan::VkDeferredCommand::UpdateImage
@ UpdateImage
Definition
vkdeferredcommand.h:33
Vulkan::VkDeferredCommand::ClearColorImage
@ ClearColorImage
Definition
vkdeferredcommand.h:37
Vulkan::VkDeferredCommand::ClearDepthStencilImage
@ ClearDepthStencilImage
Definition
vkdeferredcommand.h:38
Vulkan::VkDeferredCommand::ImageOwnershipChange
@ ImageOwnershipChange
Definition
vkdeferredcommand.h:39
Vulkan::VkDeferredCommand::ImageLayoutTransition
@ ImageLayoutTransition
Definition
vkdeferredcommand.h:40
Vulkan::VkDeferredCommand::BindDescriptorSets
@ BindDescriptorSets
Definition
vkdeferredcommand.h:30
Vulkan::VkDeferredCommand::__RunAfterFence
@ __RunAfterFence
Definition
vkdeferredcommand.h:28
Vulkan::VkDeferredCommand::FreeImage
@ FreeImage
Definition
vkdeferredcommand.h:27
Vulkan::VkDeferredCommand::UpdateBuffer
@ UpdateBuffer
Definition
vkdeferredcommand.h:32
Vulkan::VkDeferredCommand::DestroyPipeline
@ DestroyPipeline
Definition
vkdeferredcommand.h:35
Vulkan::VkDeferredCommand::FreeCmdBuffers
@ FreeCmdBuffers
Definition
vkdeferredcommand.h:24
Vulkan::VkDeferredCommand::dev
VkDevice dev
Definition
vkdeferredcommand.h:139
Vulkan::VkDeferredCommand::del
struct Vulkan::VkDeferredCommand::Delegate del
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::cmdbufferfree
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@217053007243042142123236001170046002054005006310 cmdbufferfree
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::descSetBind
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@374046266027077374337046311340070117121027252210 descSetBind
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::bufferUpd
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@311221204262053110255237125347334225052202302334 bufferUpd
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::imgDepthStencilClear
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@271370040350016245167371007161072107302133260300 imgDepthStencilClear
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::pipelineDestroy
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@123000324217163320000160115373240073303057001203 pipelineDestroy
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::imgOwnerChange
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@337346041245210023076311232362103237273066260060 imgOwnerChange
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::imgColorClear
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@364070153236126243361002374055232063135146354224 imgColorClear
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::image
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@141140315345357101040146250043277246002200061133 image
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::imgBarrier
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@251027051240353271300215324231206012306026073322 imgBarrier
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::buffer
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@006365072044042225070054176104056360326050142352 buffer
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::memory
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@254025377136174200237247165324263212161051157001 memory
Vulkan::VkDeferredCommand::Delegate::[union].__unnamed0__::imageUpd
struct Vulkan::VkDeferredCommand::Delegate::@324170153210201007016210107310204006353277003016::@163335225335077332136050030323304136204031163344 imageUpd
code
render
coregraphics
vk
vkdeferredcommand.h
Generated on
for Nebula. Dark theme by
Tilen Majerle
. All rights reserved.