-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAcceleratorBuffer_8h.html
More file actions
357 lines (345 loc) · 28.9 KB
/
AcceleratorBuffer_8h.html
File metadata and controls
357 lines (345 loc) · 28.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ngscopeclient: lib/scopehal/AcceleratorBuffer.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ngscopeclient<span id="projectnumber"> v0.1.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="dir_34225d73dd217f0f7ac441e6d84037ec.html">scopehal</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> |
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">AcceleratorBuffer.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Declaration of <a class="el" href="classAcceleratorBuffer.html" title="A buffer of memory which may be used by GPU acceleration.">AcceleratorBuffer</a>.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include "<a class="el" href="AlignedAllocator_8h_source.html">AlignedAllocator.h</a>"</code><br />
<code>#include "<a class="el" href="QueueManager_8h_source.html">QueueManager.h</a>"</code><br />
<code>#include <sys/mman.h></code><br />
<code>#include <unistd.h></code><br />
<code>#include <type_traits></code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for AcceleratorBuffer.h:</div>
<div class="dyncontent">
<div class="center"><img src="AcceleratorBuffer_8h__incl.png" border="0" usemap="#alib_2scopehal_2AcceleratorBuffer_8h" alt=""/></div>
<map name="alib_2scopehal_2AcceleratorBuffer_8h" id="alib_2scopehal_2AcceleratorBuffer_8h">
<area shape="rect" title="Declaration of AcceleratorBuffer." alt="" coords="308,5,487,47"/>
<area shape="rect" href="AlignedAllocator_8h.html" title="Declaration of AlignedAllocator." alt="" coords="23,95,164,121"/>
<area shape="rect" href="QueueManager_8h.html" title="Declaration of QueueManager and QueueHandle." alt="" coords="188,95,321,121"/>
<area shape="rect" title=" " alt="" coords="346,95,449,121"/>
<area shape="rect" title=" " alt="" coords="473,95,548,121"/>
<area shape="rect" title=" " alt="" coords="573,95,665,121"/>
<area shape="rect" title=" " alt="" coords="5,169,56,196"/>
<area shape="rect" title=" " alt="" coords="80,169,157,196"/>
<area shape="rect" title=" " alt="" coords="181,169,245,196"/>
<area shape="rect" title=" " alt="" coords="270,169,325,196"/>
<area shape="rect" title=" " alt="" coords="349,169,411,196"/>
<area shape="rect" title=" " alt="" coords="436,169,607,196"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="AcceleratorBuffer_8h__dep__incl.png" border="0" usemap="#alib_2scopehal_2AcceleratorBuffer_8hdep" alt=""/></div>
<map name="alib_2scopehal_2AcceleratorBuffer_8hdep" id="alib_2scopehal_2AcceleratorBuffer_8hdep">
<area shape="rect" title="Declaration of AcceleratorBuffer." alt="" coords="5803,5,5981,47"/>
<area shape="rect" href="ComputePipeline_8h.html" title="Declaration of ComputePipeline." alt="" coords="4905,266,5132,293"/>
<area shape="rect" href="scopehal_8h.html" title="Main library include file." alt="" coords="4781,355,4955,382"/>
<area shape="rect" href="VulkanFFTPlan_8h.html" title="Declaration of VulkanFFTPlan." alt="" coords="7715,177,7928,203"/>
<area shape="rect" href="Waveform_8h.html" title="Declaration of WaveformBase, SparseWaveformBase, UniformWaveformBase." alt="" coords="6545,95,6729,121"/>
<area shape="rect" href="ActionProvider_8cpp.html" title="Implementation of ActionProvider." alt="" coords="7632,445,7859,471"/>
<area shape="rect" href="AgilentOscilloscope_8cpp.html" title="Implementation of AgilentOscilloscope." alt="" coords="7883,445,8141,471"/>
<area shape="rect" href="AlientekPowerSupply_8cpp.html" title="Implementation of AlientekPowerSupply." alt="" coords="8165,437,8363,479"/>
<area shape="rect" href="AntikernelLabsOscilloscope_8cpp.html" title="Declaration of AntikernelLabsOscilloscope." alt="" coords="5,437,205,479"/>
<area shape="rect" href="AntikernelLabsTriggerCrossbar_8cpp.html" title="Implementation of AntikernelLabsTriggerCrossbar." alt="" coords="229,437,429,479"/>
<area shape="rect" href="AntikernelLogicAnalyzer_8cpp.html" title="Implementation of AntikernelLogicAnalyzer." alt="" coords="454,437,658,479"/>
<area shape="rect" href="AseqSpectrometer_8cpp.html" title="Implementation of AseqSpectrometer." alt="" coords="683,445,933,471"/>
<area shape="rect" href="Averager_8cpp.html" title="Implementation of Averager." alt="" coords="958,445,1149,471"/>
<area shape="rect" href="BERT_8cpp.html" title="Implementation of BERT." alt="" coords="1173,445,1336,471"/>
<area shape="rect" href="BERTInputChannel_8cpp.html" title="Implementation of BERTInputChannel." alt="" coords="1360,445,1611,471"/>
<area shape="rect" href="BERTInputChannelWithDataCapture_8cpp.html" title="Implementation of BERTInputChannelWithDataCapture." alt="" coords="1635,437,1859,479"/>
<area shape="rect" href="BERTOutputChannel_8cpp.html" title="Implementation of BERTOutputChannel." alt="" coords="1883,445,2146,471"/>
<area shape="rect" href="BinaryDriver_8cpp.html" title="Helper class for binary drivers." alt="" coords="2171,445,2384,471"/>
<area shape="rect" href="CANChannel_8cpp.html" title="Implementation of CANChannel, CANSymbol, and CANWaveform." alt="" coords="2409,445,2621,471"/>
<area shape="rect" href="CDR8B10BTrigger_8cpp.html" title="Implementation of CDR8B10BTrigger." alt="" coords="2645,445,2891,471"/>
<area shape="rect" href="CDRNRZPatternTrigger_8cpp.html" title="Implementation of CDRNRZPatternTrigger." alt="" coords="2915,437,3122,479"/>
<area shape="rect" href="CDRTrigger_8cpp.html" title="Implementation of CDRTrigger." alt="" coords="3146,445,3350,471"/>
<area shape="rect" href="CSVStreamInstrument_8cpp.html" title="Implementation of CSVStreamInstrument." alt="" coords="3375,445,3649,471"/>
<area shape="rect" href="CommandLineDriver_8cpp.html" title="Helper class for command line drivers: provides helper methods for command line based communication w..." alt="" coords="3674,437,3873,479"/>
<area shape="rect" href="ComputePipeline_8cpp.html" title="Implementation of ComputePipeline." alt="" coords="3897,445,4140,471"/>
<area shape="rect" href="ConstellationWaveform_8cpp.html" title="Implementation of ConstellationWaveform." alt="" coords="4165,437,4355,479"/>
<area shape="rect" href="CopperMountainVNA_8cpp.html" title="Implementation of CopperMountainVNA." alt="" coords="4380,437,4591,479"/>
<area shape="rect" href="DCAEdgeTrigger_8cpp.html" title="Implementation of DCAEdgeTrigger." alt="" coords="4614,445,4850,471"/>
<area shape="rect" href="DSLabsOscilloscope_8cpp.html" title="Implementation of DSLabsOscilloscope." alt="" coords="4873,445,5135,471"/>
<area shape="rect" href="DemoOscilloscope_8cpp.html" title="Implementation of DemoOscilloscope." alt="" coords="5159,445,5411,471"/>
<area shape="rect" href="DemoPowerSupply_8cpp.html" title="Implementation of DemoPowerSupply." alt="" coords="5435,445,5687,471"/>
<area shape="rect" href="DensityFunctionWaveform_8cpp.html" title="Implementation of DensityFunctionWaveform." alt="" coords="8610,437,8819,479"/>
<area shape="rect" href="DigilentOscilloscope_8cpp.html" title="Implementation of DigilentOscilloscope." alt="" coords="5712,445,5976,471"/>
<area shape="rect" href="DigitalIOChannel_8cpp.html" title="Implementation of DigitalIOChannel." alt="" coords="6001,445,6242,471"/>
<area shape="rect" href="DigitalInputChannel_8cpp.html" title="Implementation of DigitalInputChannel." alt="" coords="6266,437,6446,479"/>
<area shape="rect" href="DigitalOutputChannel_8cpp.html" title="Implementation of DigitalOutputChannel." alt="" coords="6470,437,6661,479"/>
<area shape="rect" href="DropoutTrigger_8cpp.html" title="Implementation of DropoutTrigger." alt="" coords="6685,445,6913,471"/>
<area shape="rect" href="EdgeTrigger_8cpp.html" title="Implementation of EdgeTrigger." alt="" coords="6937,445,7145,471"/>
<area shape="rect" href="EyeMask_8cpp.html" title="Implementation of EyeMask." alt="" coords="7170,445,7361,471"/>
<area shape="rect" href="EyeWaveform_8cpp.html" title="Implementation of EyeWaveform." alt="" coords="7385,445,7607,471"/>
<area shape="rect" href="VulkanFFTPlan_8cpp.html" title="Implementation of VulkanFFTPlan." alt="" coords="8843,445,9071,471"/>
<area shape="rect" href="Waveform_8cpp.html" title="Implementation of WaveformBase." alt="" coords="8387,445,8586,471"/>
<area shape="rect" href="TestWaveformSource_8h.html" title="Declaration of TestWaveformSource." alt="" coords="7529,259,7727,300"/>
<area shape="rect" href="ComplexSpectrogramFilter_8h.html" title="Declaration of ComplexSpectrogramFilter." alt="" coords="7323,348,7533,389"/>
<area shape="rect" href="FFTFilter_8h.html" title="Declaration of FFTFilter." alt="" coords="7751,259,7891,300"/>
<area shape="rect" href="SpectrogramFilter_8h.html" title="Declaration of SpectrogramFilter." alt="" coords="7351,259,7505,300"/>
<area shape="rect" href="VulkanWindow_8cpp.html" title="Implementation of VulkanWindow." alt="" coords="7916,259,8100,300"/>
<area shape="rect" href="DensityFunctionWaveform_8h.html" title="Declaration of DensityFunctionWaveform." alt="" coords="7183,169,7393,211"/>
<area shape="rect" href="FlowGraphNode_8h.html" title="Declaration of FlowGraphNode." alt="" coords="6409,266,6629,293"/>
<area shape="rect" href="Stream_8h.html" title="Declaration of Stream." alt="" coords="6437,177,6600,203"/>
</map>
</div>
</div>
<p><a href="AcceleratorBuffer_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classAcceleratorBufferIterator.html">AcceleratorBufferIterator< T ></a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classAcceleratorBuffer.html">AcceleratorBuffer< T ></a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A buffer of memory which may be used by GPU acceleration. <a href="classAcceleratorBuffer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a072b7e5ff273679e7ea11c3cbd234657"><td class="memItemLeft" align="right" valign="top"><a id="a072b7e5ff273679e7ea11c3cbd234657" name="a072b7e5ff273679e7ea11c3cbd234657"></a>
typedef bool(* </td><td class="memItemRight" valign="bottom"><b>MemoryPressureHandler</b>) (<a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3">MemoryPressureLevel</a> level, <a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671">MemoryPressureType</a> type, size_t requestedSize)</td></tr>
<tr class="memdesc:a072b7e5ff273679e7ea11c3cbd234657"><td class="mdescLeft"> </td><td class="mdescRight">Memory pressure handler type, called when free memory reaches a warning level or a Vulkan allocation fails. <br /></td></tr>
<tr class="separator:a072b7e5ff273679e7ea11c3cbd234657"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a2d7ad7813addb1ef2f748f096f4a4cb3"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3">MemoryPressureLevel</a> { <a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3a3656183169810334a96b91129dc9d881">Hard</a>
, <a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3a682160fc6ad12f783f70608a9b46b9b9">Soft</a>
}</td></tr>
<tr class="memdesc:a2d7ad7813addb1ef2f748f096f4a4cb3"><td class="mdescLeft"> </td><td class="mdescRight">Levels of memory pressure. <a href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3">More...</a><br /></td></tr>
<tr class="separator:a2d7ad7813addb1ef2f748f096f4a4cb3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a99e512813b3585a558f7370ba8a67671"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671">MemoryPressureType</a> { <a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671ac2ca16d048ec66e04bca283eab048ec2">Host</a>
, <a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671ae0ac20adce6ffee48c7151b070aa5737">Device</a>
}</td></tr>
<tr class="memdesc:a99e512813b3585a558f7370ba8a67671"><td class="mdescLeft"> </td><td class="mdescRight">Types of memory pressure. <a href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671">More...</a><br /></td></tr>
<tr class="separator:a99e512813b3585a558f7370ba8a67671"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a63fc0feff4fbbd253d63be974ab72c17"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="AcceleratorBuffer_8h.html#a63fc0feff4fbbd253d63be974ab72c17">OnMemoryPressure</a> (<a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3">MemoryPressureLevel</a> level, <a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671">MemoryPressureType</a> type, size_t requestedSize)</td></tr>
<tr class="memdesc:a63fc0feff4fbbd253d63be974ab72c17"><td class="mdescLeft"> </td><td class="mdescRight">Called when we run low on memory. <a href="AcceleratorBuffer_8h.html#a63fc0feff4fbbd253d63be974ab72c17">More...</a><br /></td></tr>
<tr class="separator:a63fc0feff4fbbd253d63be974ab72c17"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae609eb6568c9c9e037d82a1008db6e54"><td class="memTemplParams" colspan="2"><a id="ae609eb6568c9c9e037d82a1008db6e54" name="ae609eb6568c9c9e037d82a1008db6e54"></a>
template<class T > </td></tr>
<tr class="memitem:ae609eb6568c9c9e037d82a1008db6e54"><td class="memTemplItemLeft" align="right" valign="top">std::ptrdiff_t </td><td class="memTemplItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="classAcceleratorBufferIterator.html">AcceleratorBufferIterator</a>< T > &a, const <a class="el" href="classAcceleratorBufferIterator.html">AcceleratorBufferIterator</a>< T > &b)</td></tr>
<tr class="separator:ae609eb6568c9c9e037d82a1008db6e54"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga0399c400a07f35d8a39eb1c28104fbcd"><td class="memItemLeft" align="right" valign="top">
uint32_t </td><td class="memItemRight" valign="bottom"><b>g_vkPinnedMemoryType</b></td></tr>
<tr class="memdesc:ga0399c400a07f35d8a39eb1c28104fbcd"><td class="mdescLeft"> </td><td class="mdescRight">Vulkan memory type for CPU-based memory that is also GPU-readable. <br /></td></tr>
<tr class="separator:ga0399c400a07f35d8a39eb1c28104fbcd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae7f19146c8e4e58818b248291a46f087"><td class="memItemLeft" align="right" valign="top">
uint32_t </td><td class="memItemRight" valign="bottom"><b>g_vkLocalMemoryType</b></td></tr>
<tr class="memdesc:gae7f19146c8e4e58818b248291a46f087"><td class="mdescLeft"> </td><td class="mdescRight">Vulkan memory type for GPU-based memory (generally not CPU-readable, except on unified memory systems) <br /></td></tr>
<tr class="separator:gae7f19146c8e4e58818b248291a46f087"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga945c2c77ece3cb4606a1adcd4d2dd25e"><td class="memItemLeft" align="right" valign="top">
std::shared_ptr< <a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671ae0ac20adce6ffee48c7151b070aa5737">vk::raii::Device</a> > </td><td class="memItemRight" valign="bottom"><b>g_vkComputeDevice</b></td></tr>
<tr class="memdesc:ga945c2c77ece3cb4606a1adcd4d2dd25e"><td class="mdescLeft"> </td><td class="mdescRight">The Vulkan device selected for compute operations (may or may not be same device as rendering) <br /></td></tr>
<tr class="separator:ga945c2c77ece3cb4606a1adcd4d2dd25e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa112df5e5ac07738551aaf117d49130a"><td class="memItemLeft" align="right" valign="top">std::unique_ptr< vk::raii::CommandBuffer > </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vksupport.html#gaa112df5e5ac07738551aaf117d49130a">g_vkTransferCommandBuffer</a></td></tr>
<tr class="memdesc:gaa112df5e5ac07738551aaf117d49130a"><td class="mdescLeft"> </td><td class="mdescRight">Command buffer for <a class="el" href="classAcceleratorBuffer.html" title="A buffer of memory which may be used by GPU acceleration.">AcceleratorBuffer</a> transfers. <a href="group__vksupport.html#gaa112df5e5ac07738551aaf117d49130a">More...</a><br /></td></tr>
<tr class="separator:gaa112df5e5ac07738551aaf117d49130a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabd2ceb9b89b40431159e2a081352647f"><td class="memItemLeft" align="right" valign="top">std::shared_ptr< <a class="el" href="classQueueHandle.html">QueueHandle</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vksupport.html#gabd2ceb9b89b40431159e2a081352647f">g_vkTransferQueue</a></td></tr>
<tr class="memdesc:gabd2ceb9b89b40431159e2a081352647f"><td class="mdescLeft"> </td><td class="mdescRight">Queue for <a class="el" href="classAcceleratorBuffer.html" title="A buffer of memory which may be used by GPU acceleration.">AcceleratorBuffer</a> transfers. <a href="group__vksupport.html#gabd2ceb9b89b40431159e2a081352647f">More...</a><br /></td></tr>
<tr class="separator:gabd2ceb9b89b40431159e2a081352647f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5ce9839b056cc290f6064e10f4a70ce8"><td class="memItemLeft" align="right" valign="top">
std::mutex </td><td class="memItemRight" valign="bottom"><b>g_vkTransferMutex</b></td></tr>
<tr class="memdesc:ga5ce9839b056cc290f6064e10f4a70ce8"><td class="mdescLeft"> </td><td class="mdescRight">Mutex for interlocking access to g_vkTransferCommandBuffer and g_vkTransferCommandPool. <br /></td></tr>
<tr class="separator:ga5ce9839b056cc290f6064e10f4a70ce8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6ff80e4412ae7b88ae9c1d492e2161d7"><td class="memItemLeft" align="right" valign="top">
bool </td><td class="memItemRight" valign="bottom"><b>g_hasDebugUtils</b></td></tr>
<tr class="memdesc:ga6ff80e4412ae7b88ae9c1d492e2161d7"><td class="mdescLeft"> </td><td class="mdescRight">Indicates whether the VK_EXT_debug_utils extension is available. <br /></td></tr>
<tr class="separator:ga6ff80e4412ae7b88ae9c1d492e2161d7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf19e835716764bd983d2ba65c6d451e7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vksupport.html#gaf19e835716764bd983d2ba65c6d451e7">g_vulkanDeviceHasUnifiedMemory</a></td></tr>
<tr class="memdesc:gaf19e835716764bd983d2ba65c6d451e7"><td class="mdescLeft"> </td><td class="mdescRight">Indicates whether the Vulkan device is unified memory. <a href="group__vksupport.html#gaf19e835716764bd983d2ba65c6d451e7">More...</a><br /></td></tr>
<tr class="separator:gaf19e835716764bd983d2ba65c6d451e7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aece2e72176883f5f587d387b2ae5a29b"><td class="memItemLeft" align="right" valign="top"><a id="aece2e72176883f5f587d387b2ae5a29b" name="aece2e72176883f5f587d387b2ae5a29b"></a>
std::set< <a class="el" href="AcceleratorBuffer_8h.html#a072b7e5ff273679e7ea11c3cbd234657">MemoryPressureHandler</a> > </td><td class="memItemRight" valign="bottom"><b>g_memoryPressureHandlers</b></td></tr>
<tr class="memdesc:aece2e72176883f5f587d387b2ae5a29b"><td class="mdescLeft"> </td><td class="mdescRight">List of handlers for low memory registered by various subsystems. <br /></td></tr>
<tr class="separator:aece2e72176883f5f587d387b2ae5a29b"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Declaration of <a class="el" href="classAcceleratorBuffer.html" title="A buffer of memory which may be used by GPU acceleration.">AcceleratorBuffer</a>. </p>
<dl class="section author"><dt>Author</dt><dd>Andrew D. Zonenberg </dd></dl>
</div><h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a2d7ad7813addb1ef2f748f096f4a4cb3" name="a2d7ad7813addb1ef2f748f096f4a4cb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d7ad7813addb1ef2f748f096f4a4cb3">◆ </a></span>MemoryPressureLevel</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum class <a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3">MemoryPressureLevel</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Levels of memory pressure. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2d7ad7813addb1ef2f748f096f4a4cb3a3656183169810334a96b91129dc9d881" name="a2d7ad7813addb1ef2f748f096f4a4cb3a3656183169810334a96b91129dc9d881"></a>Hard </td><td class="fielddoc"><p >A memory allocation has failed and we need to free memory immediately to continue execution. </p>
</td></tr>
<tr><td class="fieldname"><a id="a2d7ad7813addb1ef2f748f096f4a4cb3a682160fc6ad12f783f70608a9b46b9b9" name="a2d7ad7813addb1ef2f748f096f4a4cb3a682160fc6ad12f783f70608a9b46b9b9"></a>Soft </td><td class="fielddoc"><p >Free memory has reached a warning threshold. </p>
<p >We should trim caches or otherwise try to make space but don't need to be too aggressive about it.</p>
<p >This level is only available if we have VK_EXT_memory_budget; without this extension we do not know about memory pressure until a hard allocation failure occurs. </p>
</td></tr>
</table>
</div>
</div>
<a id="a99e512813b3585a558f7370ba8a67671" name="a99e512813b3585a558f7370ba8a67671"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99e512813b3585a558f7370ba8a67671">◆ </a></span>MemoryPressureType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum class <a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671">MemoryPressureType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Types of memory pressure. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a99e512813b3585a558f7370ba8a67671ac2ca16d048ec66e04bca283eab048ec2" name="a99e512813b3585a558f7370ba8a67671ac2ca16d048ec66e04bca283eab048ec2"></a>Host </td><td class="fielddoc"><p >Pinned CPU-side memory. </p>
</td></tr>
<tr><td class="fieldname"><a id="a99e512813b3585a558f7370ba8a67671ae0ac20adce6ffee48c7151b070aa5737" name="a99e512813b3585a558f7370ba8a67671ae0ac20adce6ffee48c7151b070aa5737"></a>Device </td><td class="fielddoc"><p >GPU-side memory. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a63fc0feff4fbbd253d63be974ab72c17" name="a63fc0feff4fbbd253d63be974ab72c17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63fc0feff4fbbd253d63be974ab72c17">◆ </a></span>OnMemoryPressure()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool OnMemoryPressure </td>
<td>(</td>
<td class="paramtype"><a class="el" href="AcceleratorBuffer_8h.html#a2d7ad7813addb1ef2f748f096f4a4cb3">MemoryPressureLevel</a> </td>
<td class="paramname"><em>level</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="AcceleratorBuffer_8h.html#a99e512813b3585a558f7370ba8a67671">MemoryPressureType</a> </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>requestedSize</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called when we run low on memory. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">level</td><td>Indicates if this is a soft or hard memory exhaustion condition </td></tr>
<tr><td class="paramname">type</td><td>Indicates if we are low on CPU or GPU memory </td></tr>
<tr><td class="paramname">requestedSize</td><td>For hard memory exhaustion, the size of the failing allocation. For soft exhaustion, ignored and set to zero</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if memory was freed, false if no space could be freed </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>