Moved main documentation text from the beginning to the end of header file

Disabled VERBATIM_HEADERS in Doxyfile. Regenerated the docs.
This commit is contained in:
Adam Sawicki 2021-07-28 15:44:27 +02:00
parent c1001f79ea
commit f985d4ac8f
27 changed files with 700 additions and 1438 deletions

View File

@ -75,9 +75,7 @@ $(function() {
<div class="contents">
<div class="textblock"><code>#include &lt;d3d12.h&gt;</code><br />
<code>#include &lt;dxgi1_4.h&gt;</code><br />
</div>
<p><a href="_d3_d12_mem_alloc_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">D3D12MA::ALLOCATION_CALLBACKS</a></td></tr>

View File

@ -1,700 +0,0 @@
<!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=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Direct3D 12 Memory Allocator: D3D12MemAlloc.h Source File</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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Direct3D 12 Memory Allocator
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">D3D12MemAlloc.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="_d3_d12_mem_alloc_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2019-2021 Advanced Micro Devices, Inc. All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in the Software without restriction, including without limitation the rights</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// copies of the Software, and to permit persons to whom the Software is</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// The above copyright notice and this permission notice shall be included in</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// all copies or substantial portions of the Software.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// THE SOFTWARE.</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment">// If using this library on a platform different than Windows PC or want to use different version of DXGI,</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment">// you should include D3D12-compatible headers before this library on your own and define this macro.</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor">#ifndef D3D12MA_D3D12_HEADERS_ALREADY_INCLUDED</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor"> #include &lt;d3d12.h&gt;</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="preprocessor"> #include &lt;dxgi1_4.h&gt;</span></div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; </div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="comment">// Define this macro to 0 to disable usage of DXGI 1.4 (needed for IDXGIAdapter3 and query for memory budget).</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="preprocessor">#ifndef D3D12MA_DXGI_1_4</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor"> #ifdef __IDXGIAdapter3_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="preprocessor"> #define D3D12MA_DXGI_1_4 1</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="_d3_d12_mem_alloc_8h.html#aa623643886b8481adb32017e5c748b50"> 698</a></span>&#160;<span class="preprocessor"> #define D3D12MA_DXGI_1_4 0</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; </div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment">When defined to value other than 0, the library will try to use</span></div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="comment">D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT or D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT</span></div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="comment">for created textures when possible, which can save memory because some small textures</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="comment">may get their alignment 4K and their size a multiply of 4K instead of 64K.</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="comment">#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 0</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="comment"> Disables small texture alignment.</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="comment">#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 1</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="comment"> Enables conservative algorithm that will use small alignment only for some textures</span></div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="comment"> that are surely known to support it.</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="comment">#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 2</span></div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="comment"> Enables query for small alignment to D3D12 (based on Microsoft sample) which will</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;<span class="comment"> enable small alignment for more textures, but will also generate D3D Debug Layer</span></div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="comment"> error #721 on call to ID3D12Device::GetResourceAllocationInfo, which you should just</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="comment"> ignore.</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor">#ifndef D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT</span></div>
<div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="_d3_d12_mem_alloc_8h.html#ad04069a2e2bbc53b7d65f85a04a2dcbc"> 720</a></span>&#160;<span class="preprocessor"> #define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 1</span></div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; </div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; </div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor">#define D3D12MA_CLASS_NO_COPY(className) \</span></div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor"> private: \</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="preprocessor"> className(const className&amp;) = delete; \</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor"> className(className&amp;&amp;) = delete; \</span></div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="preprocessor"> className&amp; operator=(const className&amp;) = delete; \</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="preprocessor"> className&amp; operator=(className&amp;&amp;) = delete;</span></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; </div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="comment">// To be used with MAKE_HRESULT to define custom error codes.</span></div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="preprocessor">#define FACILITY_D3D12MA 3542</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; </div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;<span class="comment">If providing your own implementation, you need to implement a subset of std::atomic.</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="preprocessor">#if !defined(D3D12MA_ATOMIC_UINT32) || !defined(D3D12MA_ATOMIC_UINT64)</span></div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="preprocessor"> #include &lt;atomic&gt;</span></div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; </div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="preprocessor">#ifndef D3D12MA_ATOMIC_UINT32</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="preprocessor"> #define D3D12MA_ATOMIC_UINT32 std::atomic&lt;UINT&gt;</span></div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="preprocessor">#ifndef D3D12MA_ATOMIC_UINT64</span></div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="preprocessor"> #define D3D12MA_ATOMIC_UINT64 std::atomic&lt;UINT64&gt;</span></div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; </div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_d3_d12_m_a.html">D3D12MA</a></div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;{</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="keyword">class </span>IUnknownImpl : <span class="keyword">public</span> IUnknown</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;{</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">virtual</span> HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, _COM_Outptr_ <span class="keywordtype">void</span> __RPC_FAR *__RPC_FAR *ppvObject);</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keyword">virtual</span> ULONG STDMETHODCALLTYPE AddRef();</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keyword">virtual</span> ULONG STDMETHODCALLTYPE Release();</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReleaseThis() { <span class="keyword">delete</span> <span class="keyword">this</span>; }</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; D3D12MA_ATOMIC_UINT32 m_RefCount = 1;</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;};</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;} <span class="comment">// namespace D3D12MA</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; </div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; </div>
<div class="line"><a name="l00767"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html"> 767</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_d3_d12_m_a.html">D3D12MA</a></div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;{</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; </div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="keyword">class </span>AllocatorPimpl;</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;<span class="keyword">class </span>PoolPimpl;</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="keyword">class </span>NormalBlock;</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;<span class="keyword">class </span>BlockVector;</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="keyword">class </span>CommittedAllocationList;</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;<span class="keyword">class </span>JsonWriter;</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;<span class="keyword">class </span>VirtualBlockPimpl;</div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; </div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>;</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>;</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html">StatInfo</a>;</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; </div>
<div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a27ddd7db5650bc1d2afa009bebb6a53b"> 785</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">void</span>* (*ALLOCATE_FUNC_PTR)(<span class="keywordtype">size_t</span> Size, <span class="keywordtype">size_t</span> Alignment, <span class="keywordtype">void</span>* pUserData);</div>
<div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a3a473f88974f9312dbb6ff9f18228d76"> 791</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="namespace_d3_d12_m_a.html#a3a473f88974f9312dbb6ff9f18228d76">FREE_FUNC_PTR</a>)(<span class="keywordtype">void</span>* pMemory, <span class="keywordtype">void</span>* pUserData);</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; </div>
<div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html"> 794</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;{</div>
<div class="line"><a name="l00797"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af4d6436455728696fefd503869226436"> 797</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#a27ddd7db5650bc1d2afa009bebb6a53b">ALLOCATE_FUNC_PTR</a> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af4d6436455728696fefd503869226436">pAllocate</a>;</div>
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#a114e6c4d63d6b020e01f526a975d6849"> 799</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#a3a473f88974f9312dbb6ff9f18228d76">FREE_FUNC_PTR</a> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#a114e6c4d63d6b020e01f526a975d6849">pFree</a>;</div>
<div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af75391788c1241a06bb0de792c02c335"> 801</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af75391788c1241a06bb0de792c02c335">pUserData</a>;</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;};</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; </div>
<div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e"> 805</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e">ALLOCATION_FLAGS</a></div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;{</div>
<div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea0bf578b096d6ea73cea86b031541733e"> 808</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea0bf578b096d6ea73cea86b031541733e">ALLOCATION_FLAG_NONE</a> = 0,</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
<div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675"> 815</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675">ALLOCATION_FLAG_COMMITTED</a> = 0x1,</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; </div>
<div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea9a52c6ae694eadcd20896091e77c0628"> 826</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea9a52c6ae694eadcd20896091e77c0628">ALLOCATION_FLAG_NEVER_ALLOCATE</a> = 0x2,</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; </div>
<div class="line"><a name="l00831"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645eab374417c1f22a833ead268a6c21424e6"> 831</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645eab374417c1f22a833ead268a6c21424e6">ALLOCATION_FLAG_WITHIN_BUDGET</a> = 0x4,</div>
<div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a4dede482eac9111d56d4b1b35eb13ae4"> 832</a></span>&#160;} <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e">ALLOCATION_FLAGS</a>;</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; </div>
<div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html"> 835</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">ALLOCATION_DESC</a></div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;{</div>
<div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a92dec49b788a334fc91c55340dfbace6"> 838</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e">ALLOCATION_FLAGS</a> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a92dec49b788a334fc91c55340dfbace6">Flags</a>;</div>
<div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7"> 845</a></span>&#160; D3D12_HEAP_TYPE <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7">HeapType</a>;</div>
<div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a97878838f976b2d1e6b1a76881035690"> 861</a></span>&#160; D3D12_HEAP_FLAGS <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a97878838f976b2d1e6b1a76881035690">ExtraHeapFlags</a>;</div>
<div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#ab06b85f3cf3254f855b29264477e3934"> 867</a></span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>* <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#ab06b85f3cf3254f855b29264477e3934">CustomPool</a>;</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;};</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; </div>
<div class="line"><a name="l00884"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html"> 884</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a> : <span class="keyword">public</span> IUnknownImpl</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;{</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a47be9557d441797b65de177a3d5cdf60"> 895</a></span>&#160; UINT64 <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a47be9557d441797b65de177a3d5cdf60">GetOffset</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; </div>
<div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a92c2fb6f22b28817eb83a59407d7dd30"> 905</a></span>&#160; UINT64 <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a92c2fb6f22b28817eb83a59407d7dd30">GetSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_Size; }</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; </div>
<div class="line"><a name="l00911"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a649a3bb1be1a981cbf3f61f3819addca"> 911</a></span>&#160; ID3D12Resource* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a649a3bb1be1a981cbf3f61f3819addca">GetResource</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_Resource; }</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; </div>
<div class="line"><a name="l00917"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#ac15798741797425b4e9e67bfc991e06b"> 917</a></span>&#160; ID3D12Heap* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#ac15798741797425b4e9e67bfc991e06b">GetHeap</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; </div>
<div class="line"><a name="l00926"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#af9e643276b577aa7f21937f75d4b82ac"> 926</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#af9e643276b577aa7f21937f75d4b82ac">SetName</a>(LPCWSTR Name);</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; </div>
<div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a65fab0c479df1b6b72c9300e68dc6770"> 934</a></span>&#160; LPCWSTR <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a65fab0c479df1b6b72c9300e68dc6770">GetName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_Name; }</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; </div>
<div class="line"><a name="l00953"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a1b1ef2717beed503fcb3cb7e6a171762"> 953</a></span>&#160; BOOL <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a1b1ef2717beed503fcb3cb7e6a171762">WasZeroInitialized</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_PackedData.WasZeroInitialized(); }</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; </div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReleaseThis();</div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; </div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a72b45054123ec465caca5531f5d17998"> 959</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a72b45054123ec465caca5531f5d17998">AllocatorPimpl</a>;</div>
<div class="line"><a name="l00960"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a0a6fda50a9ecf4658ac175497a72152b"> 960</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a0a6fda50a9ecf4658ac175497a72152b">BlockVector</a>;</div>
<div class="line"><a name="l00961"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06"> 961</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06">CommittedAllocationList</a>;</div>
<div class="line"><a name="l00962"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#aae4c97f0734d50e5a4697557f566a83b"> 962</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html#aae4c97f0734d50e5a4697557f566a83b">JsonWriter</a>;</div>
<div class="line"><a name="l00963"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a3b9c2e32309e3855528dfe2dda5db549"> 963</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a3b9c2e32309e3855528dfe2dda5db549">CommittedAllocationListItemTraits</a>;</div>
<div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a968f13f23d03e50cc50b87835b6d5a85"> 964</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA_DELETE</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>&amp;, T*);</div>
<div class="line"><a name="l00965"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#afcc5dff8e6d4a24365ab9c92865d1bc3"> 965</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html#afcc5dff8e6d4a24365ab9c92865d1bc3">PoolAllocator</a>;</div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; </div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keyword">enum</span> Type</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; {</div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; TYPE_COMMITTED,</div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; TYPE_PLACED,</div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; TYPE_HEAP,</div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; TYPE_COUNT</div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; };</div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; </div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a72b45054123ec465caca5531f5d17998">AllocatorPimpl</a>* m_Allocator;</div>
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; UINT64 m_Size;</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; ID3D12Resource* m_Resource;</div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; UINT m_CreationFrameIndex;</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordtype">wchar_t</span>* m_Name;</div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; </div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keyword">union</span></div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; {</div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keyword">struct</span></div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
<div class="line"><a name="l00985"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97"> 985</a></span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06">CommittedAllocationList</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97">list</a>;</div>
<div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#adc3ac89758a915a409e047f9b89aa160"> 986</a></span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#adc3ac89758a915a409e047f9b89aa160">prev</a>;</div>
<div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a6f31560bc71451410a2a907b6d81b48f"> 987</a></span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a6f31560bc71451410a2a907b6d81b48f">next</a>;</div>
<div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a5b3d5b189021973d9934cbe9f5f266f0"> 988</a></span>&#160; } <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a5b3d5b189021973d9934cbe9f5f266f0">m_Committed</a>;</div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; </div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keyword">struct</span></div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
<div class="line"><a name="l00992"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a73c55decc2485b907f678d95aac24b6b"> 992</a></span>&#160; UINT64 <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a73c55decc2485b907f678d95aac24b6b">offset</a>;</div>
<div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a413aec64eba9f4ec57e912511591b3b8"> 993</a></span>&#160; NormalBlock* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a413aec64eba9f4ec57e912511591b3b8">block</a>;</div>
<div class="line"><a name="l00994"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a35fca5f0b1c5eb46d0bb33cdb7ccc198"> 994</a></span>&#160; } <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a35fca5f0b1c5eb46d0bb33cdb7ccc198">m_Placed</a>;</div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; </div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keyword">struct</span></div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; {</div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="comment">// Beginning must be compatible with m_Committed.</span></div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06">CommittedAllocationList</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97">list</a>;</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#adc3ac89758a915a409e047f9b89aa160">prev</a>;</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a6f31560bc71451410a2a907b6d81b48f">next</a>;</div>
<div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a4e7380aabcac5b0a1cd833c5c84459c6"> 1002</a></span>&#160; ID3D12Heap* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a4e7380aabcac5b0a1cd833c5c84459c6">heap</a>;</div>
<div class="line"><a name="l01003"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#adc7cf6224b7ca6205d1099a013f40424"> 1003</a></span>&#160; } <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#adc7cf6224b7ca6205d1099a013f40424">m_Heap</a>;</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; };</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; </div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keyword">struct </span>PackedData</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; {</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; PackedData() :</div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; m_Type(0), m_ResourceDimension(0), m_ResourceFlags(0), m_TextureLayout(0), m_WasZeroInitialized(0) { }</div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; </div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; Type GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (Type)m_Type; }</div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; D3D12_RESOURCE_DIMENSION GetResourceDimension()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (D3D12_RESOURCE_DIMENSION)m_ResourceDimension; }</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; D3D12_RESOURCE_FLAGS GetResourceFlags()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (D3D12_RESOURCE_FLAGS)m_ResourceFlags; }</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; D3D12_TEXTURE_LAYOUT GetTextureLayout()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (D3D12_TEXTURE_LAYOUT)m_TextureLayout; }</div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; BOOL <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a1b1ef2717beed503fcb3cb7e6a171762">WasZeroInitialized</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (BOOL)m_WasZeroInitialized; }</div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; </div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordtype">void</span> SetType(Type type);</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordtype">void</span> SetResourceDimension(D3D12_RESOURCE_DIMENSION resourceDimension);</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordtype">void</span> SetResourceFlags(D3D12_RESOURCE_FLAGS resourceFlags);</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordtype">void</span> SetTextureLayout(D3D12_TEXTURE_LAYOUT textureLayout);</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordtype">void</span> SetWasZeroInitialized(BOOL wasZeroInitialized) { m_WasZeroInitialized = wasZeroInitialized ? 1 : 0; }</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; </div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; UINT m_Type : 2; <span class="comment">// enum Type</span></div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; UINT m_ResourceDimension : 3; <span class="comment">// enum D3D12_RESOURCE_DIMENSION</span></div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; UINT m_ResourceFlags : 24; <span class="comment">// flags D3D12_RESOURCE_FLAGS</span></div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; UINT m_TextureLayout : 9; <span class="comment">// enum D3D12_TEXTURE_LAYOUT</span></div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; UINT m_WasZeroInitialized : 1; <span class="comment">// BOOL</span></div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; } m_PackedData;</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; </div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; Allocation(<a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a72b45054123ec465caca5531f5d17998">AllocatorPimpl</a>* allocator, UINT64 size, BOOL wasZeroInitialized);</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; ~Allocation();</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordtype">void</span> InitCommitted(<a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06">CommittedAllocationList</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97">list</a>);</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordtype">void</span> InitPlaced(UINT64 <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a73c55decc2485b907f678d95aac24b6b">offset</a>, UINT64 alignment, NormalBlock* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a413aec64eba9f4ec57e912511591b3b8">block</a>);</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordtype">void</span> InitHeap(<a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06">CommittedAllocationList</a>* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97">list</a>, ID3D12Heap* <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#a4e7380aabcac5b0a1cd833c5c84459c6">heap</a>);</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> D3D12_RESOURCE_DESC_T&gt;</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordtype">void</span> SetResource(ID3D12Resource* resource, <span class="keyword">const</span> D3D12_RESOURCE_DESC_T* pResourceDesc);</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordtype">void</span> FreeName();</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; </div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; D3D12MA_CLASS_NO_COPY(Allocation)</div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;};</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; </div>
<div class="line"><a name="l01045"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html"> 1045</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html">POOL_DESC</a></div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;{</div>
<div class="line"><a name="l01052"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a06e06813bcb5206e9f7a8b0564bf1d6a"> 1052</a></span>&#160; D3D12_HEAP_PROPERTIES <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a06e06813bcb5206e9f7a8b0564bf1d6a">HeapProperties</a>;</div>
<div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a3795956e4fbfe7c3a23546e02e5d28dc"> 1063</a></span>&#160; D3D12_HEAP_FLAGS <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a3795956e4fbfe7c3a23546e02e5d28dc">HeapFlags</a>;</div>
<div class="line"><a name="l01070"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#af7284cc51a8ed5b551075584256de23c"> 1070</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#af7284cc51a8ed5b551075584256de23c">BlockSize</a>;</div>
<div class="line"><a name="l01075"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a6f10db3911a3bea1becfc9a0dfa5bac8"> 1075</a></span>&#160; UINT <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a6f10db3911a3bea1becfc9a0dfa5bac8">MinBlockCount</a>;</div>
<div class="line"><a name="l01083"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#abbce3a99f253928f9c3c09fa16015f9e"> 1083</a></span>&#160; UINT <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#abbce3a99f253928f9c3c09fa16015f9e">MaxBlockCount</a>;</div>
<div class="line"><a name="l01088"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a0a6283eeb1f3f99d8c4ae264aec7f749"> 1088</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a0a6283eeb1f3f99d8c4ae264aec7f749">MinAllocationAlignment</a>;</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;};</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; </div>
<div class="line"><a name="l01099"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html"> 1099</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a> : <span class="keyword">public</span> IUnknownImpl</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;{</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01106"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#aaab59af46d922d6b81fce8d8be987028"> 1106</a></span>&#160; <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html">POOL_DESC</a> <a class="code" href="class_d3_d12_m_a_1_1_pool.html#aaab59af46d922d6b81fce8d8be987028">GetDesc</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; </div>
<div class="line"><a name="l01110"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a8e4cc5fb13aa33398d391296336c457e"> 1110</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_pool.html#a8e4cc5fb13aa33398d391296336c457e">CalculateStats</a>(<a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html">StatInfo</a>* pStats);</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; </div>
<div class="line"><a name="l01119"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a20617cfec0461cf8c2b92115b5140c5b"> 1119</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_pool.html#a20617cfec0461cf8c2b92115b5140c5b">SetName</a>(LPCWSTR Name);</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; </div>
<div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a63c91d92a9ca48b98866a5cc1aea333b"> 1127</a></span>&#160; LPCWSTR <a class="code" href="class_d3_d12_m_a_1_1_pool.html#a63c91d92a9ca48b98866a5cc1aea333b">GetName</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; </div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReleaseThis();</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; </div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01133"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a4f7f62a2e2ba965a2aec21613708b95b"> 1133</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>;</div>
<div class="line"><a name="l01134"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a72b45054123ec465caca5531f5d17998"> 1134</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_pool.html#a72b45054123ec465caca5531f5d17998">AllocatorPimpl</a>;</div>
<div class="line"><a name="l01135"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a968f13f23d03e50cc50b87835b6d5a85"> 1135</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_pool.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA_DELETE</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>&amp;, T*);</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; </div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; PoolPimpl* m_Pimpl;</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; </div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>(<a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>* allocator, <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html">POOL_DESC</a> &amp;desc);</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; ~<a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>();</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; </div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; D3D12MA_CLASS_NO_COPY(<a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>)</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;};</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; </div>
<div class="line"><a name="l01146"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916"> 1146</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916">ALLOCATOR_FLAGS</a></div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;{</div>
<div class="line"><a name="l01149"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a2fb30967b492c27823a80b5de3aea26f"> 1149</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a2fb30967b492c27823a80b5de3aea26f">ALLOCATOR_FLAG_NONE</a> = 0,</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; </div>
<div class="line"><a name="l01158"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a1b06bb21df006f76a9ed1bc41838bc52"> 1158</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a1b06bb21df006f76a9ed1bc41838bc52">ALLOCATOR_FLAG_SINGLETHREADED</a> = 0x1,</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; </div>
<div class="line"><a name="l01164"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a068863dc0538ff4ea153b046b31e94fb"> 1164</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a068863dc0538ff4ea153b046b31e94fb">ALLOCATOR_FLAG_ALWAYS_COMMITTED</a> = 0x2,</div>
<div class="line"><a name="l01165"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a5d0bdfc28b81b4a1ee40c9c3ae1b1449"> 1165</a></span>&#160;} <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916">ALLOCATOR_FLAGS</a>;</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; </div>
<div class="line"><a name="l01168"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html"> 1168</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">ALLOCATOR_DESC</a></div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;{</div>
<div class="line"><a name="l01171"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ad8abad7c80ea0d8df27c85243ce720f3"> 1171</a></span>&#160; <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916">ALLOCATOR_FLAGS</a> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ad8abad7c80ea0d8df27c85243ce720f3">Flags</a>;</div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; </div>
<div class="line"><a name="l01177"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c"> 1177</a></span>&#160; ID3D12Device* <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c">pDevice</a>;</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; </div>
<div class="line"><a name="l01183"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a97149c9559deae943c2cfa49aeeff8a6"> 1183</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a97149c9559deae943c2cfa49aeeff8a6">PreferredBlockSize</a>;</div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; </div>
<div class="line"><a name="l01189"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a773ecc1945eb47c20e06455c3759e4ef"> 1189</a></span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>* <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a773ecc1945eb47c20e06455c3759e4ef">pAllocationCallbacks</a>;</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; </div>
<div class="line"><a name="l01195"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b"> 1195</a></span>&#160; IDXGIAdapter* <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b">pAdapter</a>;</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;};</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; </div>
<div class="line"><a name="l01201"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abad7f40135648f8d0871be36f2919982"> 1201</a></span>&#160;<span class="keyword">const</span> UINT <a class="code" href="namespace_d3_d12_m_a.html#abad7f40135648f8d0871be36f2919982">HEAP_TYPE_COUNT</a> = 4;</div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; </div>
<div class="line"><a name="l01206"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html"> 1206</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html">StatInfo</a></div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;{</div>
<div class="line"><a name="l01209"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a8284ef3310c9de1600071285448b62c9"> 1209</a></span>&#160; UINT <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a8284ef3310c9de1600071285448b62c9">BlockCount</a>;</div>
<div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e"> 1211</a></span>&#160; UINT <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e">AllocationCount</a>;</div>
<div class="line"><a name="l01213"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#adfc245a84fb8fba7936b67bd879ffefb"> 1213</a></span>&#160; UINT <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#adfc245a84fb8fba7936b67bd879ffefb">UnusedRangeCount</a>;</div>
<div class="line"><a name="l01215"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7"> 1215</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7">UsedBytes</a>;</div>
<div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a1df359c2e9ad4c7763122d1ccd86b168"> 1217</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a1df359c2e9ad4c7763122d1ccd86b168">UnusedBytes</a>;</div>
<div class="line"><a name="l01218"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a9d9e69e9cad231fea3a41b06e7eeee35"> 1218</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a9d9e69e9cad231fea3a41b06e7eeee35">AllocationSizeMin</a>;</div>
<div class="line"><a name="l01219"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#acf3339540ff01d93b6a6f5dc68d83f60"> 1219</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#acf3339540ff01d93b6a6f5dc68d83f60">AllocationSizeAvg</a>;</div>
<div class="line"><a name="l01220"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#acd3c6f72ffb61a8d39b65a3dab317eb6"> 1220</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#acd3c6f72ffb61a8d39b65a3dab317eb6">AllocationSizeMax</a>;</div>
<div class="line"><a name="l01221"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a180be027720ca98ff3a7470e18a79622"> 1221</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a180be027720ca98ff3a7470e18a79622">UnusedRangeSizeMin</a>;</div>
<div class="line"><a name="l01222"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a249d7969bf3f836c13a0f111d6ed886d"> 1222</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a249d7969bf3f836c13a0f111d6ed886d">UnusedRangeSizeAvg</a>;</div>
<div class="line"><a name="l01223"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a1337269f8777b6b5176c72ca410fbe36"> 1223</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a1337269f8777b6b5176c72ca410fbe36">UnusedRangeSizeMax</a>;</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;};</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; </div>
<div class="line"><a name="l01229"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stats.html"> 1229</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_stats.html">Stats</a></div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;{</div>
<div class="line"><a name="l01232"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stats.html#ada54d9f0385fcdba491adcfd91f29c28"> 1232</a></span>&#160; <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html">StatInfo</a> <a class="code" href="struct_d3_d12_m_a_1_1_stats.html#ada54d9f0385fcdba491adcfd91f29c28">Total</a>;</div>
<div class="line"><a name="l01237"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stats.html#a6e433945a118a34f7f6565811e62d718"> 1237</a></span>&#160; <a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html">StatInfo</a> <a class="code" href="struct_d3_d12_m_a_1_1_stats.html#a6e433945a118a34f7f6565811e62d718">HeapType</a>[<a class="code" href="namespace_d3_d12_m_a.html#abad7f40135648f8d0871be36f2919982">HEAP_TYPE_COUNT</a>];</div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;};</div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; </div>
<div class="line"><a name="l01242"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html"> 1242</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_budget.html">Budget</a></div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;{</div>
<div class="line"><a name="l01246"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#ad1ad5d8521993cb623255ee1709a1c4c"> 1246</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_budget.html#ad1ad5d8521993cb623255ee1709a1c4c">BlockBytes</a>;</div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; </div>
<div class="line"><a name="l01254"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#abcb043908bd528852f8ef3867ad76099"> 1254</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_budget.html#abcb043908bd528852f8ef3867ad76099">AllocationBytes</a>;</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
<div class="line"><a name="l01264"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#a77a8c9e32d6602f95b7d1c285cddd253"> 1264</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_budget.html#a77a8c9e32d6602f95b7d1c285cddd253">UsageBytes</a>;</div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; </div>
<div class="line"><a name="l01275"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#a326515f08d89ee2e31dcfdd5c1e8ac71"> 1275</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_budget.html#a326515f08d89ee2e31dcfdd5c1e8ac71">BudgetBytes</a>;</div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;};</div>
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; </div>
<div class="line"><a name="l01287"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html"> 1287</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a> : <span class="keyword">public</span> IUnknownImpl</div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;{</div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a8ce95f85e5f2a1d41b81d676b21c04ae"> 1291</a></span>&#160; <span class="keyword">const</span> D3D12_FEATURE_DATA_D3D12_OPTIONS&amp; <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a8ce95f85e5f2a1d41b81d676b21c04ae">GetD3D12Options</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01299"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a9e742884bd45dd7f01193d13fcd05af0"> 1299</a></span>&#160; BOOL <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a9e742884bd45dd7f01193d13fcd05af0">IsUMA</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01307"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a08210561b92c4bd7ede9dd7beba4bb80"> 1307</a></span>&#160; BOOL <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a08210561b92c4bd7ede9dd7beba4bb80">IsCacheCoherentUMA</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; </div>
<div class="line"><a name="l01337"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aa37d6b9fe8ea0864f7a35b9d68e8345a"> 1337</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#aa37d6b9fe8ea0864f7a35b9d68e8345a">CreateResource</a>(</div>
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">ALLOCATION_DESC</a>* pAllocDesc,</div>
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC* pResourceDesc,</div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation,</div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; </div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="preprocessor">#ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01354"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#afa0de85c76ce1f86fe9b0bd94dad5e8b"> 1354</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#afa0de85c76ce1f86fe9b0bd94dad5e8b">CreateResource1</a>(</div>
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">ALLOCATION_DESC</a>* pAllocDesc,</div>
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC* pResourceDesc,</div>
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; ID3D12ProtectedResourceSession *pProtectedSession,</div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation,</div>
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// #ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; </div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;<span class="preprocessor">#ifdef __ID3D12Device8_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01372"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#ad9616c8e8e59ede99214b9c7cea97e5a"> 1372</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#ad9616c8e8e59ede99214b9c7cea97e5a">CreateResource2</a>(</div>
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">ALLOCATION_DESC</a>* pAllocDesc,</div>
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC1* pResourceDesc,</div>
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; ID3D12ProtectedResourceSession *pProtectedSession,</div>
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation,</div>
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// #ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; </div>
<div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#acb8a10a5ea30171ce60128286aec5ee2"> 1402</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#acb8a10a5ea30171ce60128286aec5ee2">AllocateMemory</a>(</div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">ALLOCATION_DESC</a>* pAllocDesc,</div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_ALLOCATION_INFO* pAllocInfo,</div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation);</div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; </div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="preprocessor">#ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01415"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a6c1fbc673e2559ead34dbf039dd47d60"> 1415</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a6c1fbc673e2559ead34dbf039dd47d60">AllocateMemory1</a>(</div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">ALLOCATION_DESC</a>* pAllocDesc,</div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_ALLOCATION_INFO* pAllocInfo,</div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; ID3D12ProtectedResourceSession *pProtectedSession,</div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation);</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// #ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; </div>
<div class="line"><a name="l01444"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#ab45536f92410aedb7be44ea36b1b4717"> 1444</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#ab45536f92410aedb7be44ea36b1b4717">CreateAliasingResource</a>(</div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>* pAllocation,</div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; UINT64 AllocationLocalOffset,</div>
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC* pResourceDesc,</div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; </div>
<div class="line"><a name="l01455"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aac7b1f6bf53cbf4c4ce2264cb72ca515"> 1455</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#aac7b1f6bf53cbf4c4ce2264cb72ca515">CreatePool</a>(</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html">POOL_DESC</a>* pPoolDesc,</div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>** ppPool);</div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; </div>
<div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a468ba0c93121eaaee402b08775f1dd11"> 1463</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a468ba0c93121eaaee402b08775f1dd11">SetCurrentFrameIndex</a>(UINT frameIndex);</div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; </div>
<div class="line"><a name="l01467"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#addedcd0067319ec566042f5cb520843b"> 1467</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#addedcd0067319ec566042f5cb520843b">CalculateStats</a>(<a class="code" href="struct_d3_d12_m_a_1_1_stats.html">Stats</a>* pStats);</div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; </div>
<div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#abe927bd3ad6930111d4d9408515b9601"> 1480</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#abe927bd3ad6930111d4d9408515b9601">GetBudget</a>(<a class="code" href="struct_d3_d12_m_a_1_1_budget.html">Budget</a>* pGpuBudget, <a class="code" href="struct_d3_d12_m_a_1_1_budget.html">Budget</a>* pCpuBudget);</div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; </div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; </div>
<div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a29716b3084916abed7793bf2ec4b65db"> 1486</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a29716b3084916abed7793bf2ec4b65db">BuildStatsString</a>(WCHAR** ppStatsString, BOOL DetailedMap) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; </div>
<div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a8392663494384c16d8bfa12b827b4f9c"> 1489</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a8392663494384c16d8bfa12b827b4f9c">FreeStatsString</a>(WCHAR* pStatsString) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; </div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReleaseThis();</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; </div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a7cc10fd0b328a512165cf636cb795090"> 1495</a></span>&#160; <span class="keyword">friend</span> HRESULT <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a7cc10fd0b328a512165cf636cb795090">CreateAllocator</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">ALLOCATOR_DESC</a>*, <a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>**);</div>
<div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a968f13f23d03e50cc50b87835b6d5a85"> 1496</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA_DELETE</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>&amp;, T*);</div>
<div class="line"><a name="l01497"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aaa45caad0db0173735281fcdf9aa5e8b"> 1497</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>;</div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; </div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>&amp; allocationCallbacks, <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">ALLOCATOR_DESC</a>&amp; desc);</div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; ~<a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>();</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; </div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; AllocatorPimpl* m_Pimpl;</div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; </div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; D3D12MA_CLASS_NO_COPY(<a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>)</div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;};</div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; </div>
<div class="line"><a name="l01508"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html"> 1508</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">VIRTUAL_BLOCK_DESC</a></div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;{</div>
<div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#ac56491679f276a5a9956ed99bc4654e4"> 1515</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#ac56491679f276a5a9956ed99bc4654e4">Size</a>;</div>
<div class="line"><a name="l01520"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#aa8ea08ad0ee64cb2d29c03b85008317f"> 1520</a></span>&#160; <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>* <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#aa8ea08ad0ee64cb2d29c03b85008317f">pAllocationCallbacks</a>;</div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;};</div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; </div>
<div class="line"><a name="l01524"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html"> 1524</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">VIRTUAL_ALLOCATION_DESC</a></div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;{</div>
<div class="line"><a name="l01530"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a976b649e45abdd0769da0d79acde4bac"> 1530</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a976b649e45abdd0769da0d79acde4bac">Size</a>;</div>
<div class="line"><a name="l01535"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aaa95e62f2f399339a09dcbb312a42de0"> 1535</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aaa95e62f2f399339a09dcbb312a42de0">Alignment</a>;</div>
<div class="line"><a name="l01540"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#ab8ec8dd20b4b9dc2aaa79d7da024170b"> 1540</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#ab8ec8dd20b4b9dc2aaa79d7da024170b">pUserData</a>;</div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;};</div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; </div>
<div class="line"><a name="l01544"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html"> 1544</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html">VIRTUAL_ALLOCATION_INFO</a></div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;{</div>
<div class="line"><a name="l01550"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#ab8ede12141594a69230afeb34664fc34"> 1550</a></span>&#160; UINT64 <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#ab8ede12141594a69230afeb34664fc34">size</a>;</div>
<div class="line"><a name="l01555"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#a4b23ad296ab6cd425fb3b6c83c13b4ff"> 1555</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#a4b23ad296ab6cd425fb3b6c83c13b4ff">pUserData</a>;</div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;};</div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; </div>
<div class="line"><a name="l01567"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html"> 1567</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a> : <span class="keyword">public</span> IUnknownImpl</div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;{</div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a7b23fd2da6f0343095fb14b31395678b"> 1572</a></span>&#160; BOOL <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a7b23fd2da6f0343095fb14b31395678b">IsEmpty</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l01575"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a287b8f0e455ffc7f302094671f922afb"> 1575</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a287b8f0e455ffc7f302094671f922afb">GetAllocationInfo</a>(UINT64 offset, <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html">VIRTUAL_ALLOCATION_INFO</a>* pInfo) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; </div>
<div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c"> 1582</a></span>&#160; HRESULT <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c">Allocate</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">VIRTUAL_ALLOCATION_DESC</a>* pDesc, UINT64* pOffset);</div>
<div class="line"><a name="l01585"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a02dfae4c0856f22da885a332de7821fa"> 1585</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a02dfae4c0856f22da885a332de7821fa">FreeAllocation</a>(UINT64 offset);</div>
<div class="line"><a name="l01588"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#ae22b18c0b7c31b44c1d740f886369189"> 1588</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#ae22b18c0b7c31b44c1d740f886369189">Clear</a>();</div>
<div class="line"><a name="l01591"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a0af4aec3d2efc913ee43b0725e8a0289"> 1591</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a0af4aec3d2efc913ee43b0725e8a0289">SetAllocationUserData</a>(UINT64 offset, <span class="keywordtype">void</span>* pUserData);</div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; </div>
<div class="line"><a name="l01595"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a039ee8426818d0126cf7f44c1c658526"> 1595</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a039ee8426818d0126cf7f44c1c658526">CalculateStats</a>(<a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html">StatInfo</a>* pInfo) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; </div>
<div class="line"><a name="l01600"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a828a27070bfa762cae796d4c8f2ef703"> 1600</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a828a27070bfa762cae796d4c8f2ef703">BuildStatsString</a>(WCHAR** ppStatsString) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; </div>
<div class="line"><a name="l01604"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a6f78ddaa7da194e239089e52093e68a9"> 1604</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a6f78ddaa7da194e239089e52093e68a9">FreeStatsString</a>(WCHAR* pStatsString) <span class="keyword">const</span>;</div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; </div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReleaseThis();</div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; </div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01610"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#ab8bb16e20c691720aad26ecbf105aa6f"> 1610</a></span>&#160; <span class="keyword">friend</span> HRESULT <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#ab8bb16e20c691720aad26ecbf105aa6f">CreateVirtualBlock</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">VIRTUAL_BLOCK_DESC</a>*, <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a>**);</div>
<div class="line"><a name="l01611"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a968f13f23d03e50cc50b87835b6d5a85"> 1611</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA_DELETE</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>&amp;, T*);</div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; </div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; VirtualBlockPimpl* m_Pimpl;</div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; </div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">ALLOCATION_CALLBACKS</a>&amp; allocationCallbacks, <span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">VIRTUAL_BLOCK_DESC</a>&amp; desc);</div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; ~<a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a>();</div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; </div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; D3D12MA_CLASS_NO_COPY(<a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a>)</div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;};</div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; </div>
<div class="line"><a name="l01625"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332"> 1625</a></span>&#160;HRESULT <a class="code" href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332">CreateAllocator</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">ALLOCATOR_DESC</a>* pDesc, <a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>** ppAllocator);</div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; </div>
<div class="line"><a name="l01631"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317"> 1631</a></span>&#160;HRESULT <a class="code" href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317">CreateVirtualBlock</a>(<span class="keyword">const</span> <a class="code" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">VIRTUAL_BLOCK_DESC</a>* pDesc, <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a>** ppVirtualBlock);</div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; </div>
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;} <span class="comment">// namespace D3D12MA</span></div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; </div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;DEFINE_ENUM_FLAG_OPERATORS(<a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e">D3D12MA::ALLOCATION_FLAGS</a>);</div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;DEFINE_ENUM_FLAG_OPERATORS(<a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916">D3D12MA::ALLOCATOR_FLAGS</a>);</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html">D3D12MA::Allocation</a></div><div class="ttdoc">Represents single memory allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:885</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a0a6fda50a9ecf4658ac175497a72152b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a0a6fda50a9ecf4658ac175497a72152b">D3D12MA::Allocation::BlockVector</a></div><div class="ttdeci">friend class BlockVector</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:960</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a1b1ef2717beed503fcb3cb7e6a171762"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a1b1ef2717beed503fcb3cb7e6a171762">D3D12MA::Allocation::WasZeroInitialized</a></div><div class="ttdeci">BOOL WasZeroInitialized() const</div><div class="ttdoc">Returns TRUE if the memory of the allocation was filled with zeros when the allocation was created.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:953</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a35fca5f0b1c5eb46d0bb33cdb7ccc198"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a35fca5f0b1c5eb46d0bb33cdb7ccc198">D3D12MA::Allocation::m_Placed</a></div><div class="ttdeci">struct D3D12MA::Allocation::@0::@3 m_Placed</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a3b9c2e32309e3855528dfe2dda5db549"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a3b9c2e32309e3855528dfe2dda5db549">D3D12MA::Allocation::CommittedAllocationListItemTraits</a></div><div class="ttdeci">friend struct CommittedAllocationListItemTraits</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:963</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a413aec64eba9f4ec57e912511591b3b8"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a413aec64eba9f4ec57e912511591b3b8">D3D12MA::Allocation::block</a></div><div class="ttdeci">NormalBlock * block</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:993</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a47be9557d441797b65de177a3d5cdf60"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a47be9557d441797b65de177a3d5cdf60">D3D12MA::Allocation::GetOffset</a></div><div class="ttdeci">UINT64 GetOffset() const</div><div class="ttdoc">Returns offset in bytes from the start of memory heap.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a49c0b7395d40df48949fc68599058a06"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06">D3D12MA::Allocation::CommittedAllocationList</a></div><div class="ttdeci">friend class CommittedAllocationList</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:961</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a4e7380aabcac5b0a1cd833c5c84459c6"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a4e7380aabcac5b0a1cd833c5c84459c6">D3D12MA::Allocation::heap</a></div><div class="ttdeci">ID3D12Heap * heap</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1002</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a5b3d5b189021973d9934cbe9f5f266f0"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a5b3d5b189021973d9934cbe9f5f266f0">D3D12MA::Allocation::m_Committed</a></div><div class="ttdeci">struct D3D12MA::Allocation::@0::@2 m_Committed</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a649a3bb1be1a981cbf3f61f3819addca"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a649a3bb1be1a981cbf3f61f3819addca">D3D12MA::Allocation::GetResource</a></div><div class="ttdeci">ID3D12Resource * GetResource() const</div><div class="ttdoc">Returns D3D12 resource associated with this object.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:911</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a65fab0c479df1b6b72c9300e68dc6770"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a65fab0c479df1b6b72c9300e68dc6770">D3D12MA::Allocation::GetName</a></div><div class="ttdeci">LPCWSTR GetName() const</div><div class="ttdoc">Returns the name associated with the allocation object.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:934</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a6f31560bc71451410a2a907b6d81b48f"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a6f31560bc71451410a2a907b6d81b48f">D3D12MA::Allocation::next</a></div><div class="ttdeci">Allocation * next</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:987</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a72b45054123ec465caca5531f5d17998"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a72b45054123ec465caca5531f5d17998">D3D12MA::Allocation::AllocatorPimpl</a></div><div class="ttdeci">friend class AllocatorPimpl</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:959</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a73c55decc2485b907f678d95aac24b6b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a73c55decc2485b907f678d95aac24b6b">D3D12MA::Allocation::offset</a></div><div class="ttdeci">UINT64 offset</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:992</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a92c2fb6f22b28817eb83a59407d7dd30"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a92c2fb6f22b28817eb83a59407d7dd30">D3D12MA::Allocation::GetSize</a></div><div class="ttdeci">UINT64 GetSize() const</div><div class="ttdoc">Returns size in bytes of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:905</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_a968f13f23d03e50cc50b87835b6d5a85"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA::Allocation::D3D12MA_DELETE</a></div><div class="ttdeci">friend void D3D12MA_DELETE(const ALLOCATION_CALLBACKS &amp;, T *)</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_aae4c97f0734d50e5a4697557f566a83b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#aae4c97f0734d50e5a4697557f566a83b">D3D12MA::Allocation::JsonWriter</a></div><div class="ttdeci">friend class JsonWriter</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:962</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_ab1f59d849add2cdbfbebf4eb98db5c97"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97">D3D12MA::Allocation::list</a></div><div class="ttdeci">CommittedAllocationList * list</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:985</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_ac15798741797425b4e9e67bfc991e06b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#ac15798741797425b4e9e67bfc991e06b">D3D12MA::Allocation::GetHeap</a></div><div class="ttdeci">ID3D12Heap * GetHeap() const</div><div class="ttdoc">Returns memory heap that the resource is created in.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_adc3ac89758a915a409e047f9b89aa160"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#adc3ac89758a915a409e047f9b89aa160">D3D12MA::Allocation::prev</a></div><div class="ttdeci">Allocation * prev</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:986</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_adc7cf6224b7ca6205d1099a013f40424"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#adc7cf6224b7ca6205d1099a013f40424">D3D12MA::Allocation::m_Heap</a></div><div class="ttdeci">struct D3D12MA::Allocation::@0::@4 m_Heap</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_af9e643276b577aa7f21937f75d4b82ac"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#af9e643276b577aa7f21937f75d4b82ac">D3D12MA::Allocation::SetName</a></div><div class="ttdeci">void SetName(LPCWSTR Name)</div><div class="ttdoc">Associates a name with the allocation object. This name is for use in debug diagnostics and tools.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_afcc5dff8e6d4a24365ab9c92865d1bc3"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#afcc5dff8e6d4a24365ab9c92865d1bc3">D3D12MA::Allocation::PoolAllocator</a></div><div class="ttdeci">friend class PoolAllocator</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:965</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a></div><div class="ttdoc">Represents main object of this library initialized for particular ID3D12Device.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1288</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a08210561b92c4bd7ede9dd7beba4bb80"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a08210561b92c4bd7ede9dd7beba4bb80">D3D12MA::Allocator::IsCacheCoherentUMA</a></div><div class="ttdeci">BOOL IsCacheCoherentUMA() const</div><div class="ttdoc">Returns true if D3D12_FEATURE_DATA_ARCHITECTURE1::CacheCoherentUMA was found to be true.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a29716b3084916abed7793bf2ec4b65db"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a29716b3084916abed7793bf2ec4b65db">D3D12MA::Allocator::BuildStatsString</a></div><div class="ttdeci">void BuildStatsString(WCHAR **ppStatsString, BOOL DetailedMap) const</div><div class="ttdoc">Builds and returns statistics as a string in JSON format.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a468ba0c93121eaaee402b08775f1dd11"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a468ba0c93121eaaee402b08775f1dd11">D3D12MA::Allocator::SetCurrentFrameIndex</a></div><div class="ttdeci">void SetCurrentFrameIndex(UINT frameIndex)</div><div class="ttdoc">Sets the index of the current frame.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a6c1fbc673e2559ead34dbf039dd47d60"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a6c1fbc673e2559ead34dbf039dd47d60">D3D12MA::Allocator::AllocateMemory1</a></div><div class="ttdeci">HRESULT AllocateMemory1(const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_ALLOCATION_INFO *pAllocInfo, ID3D12ProtectedResourceSession *pProtectedSession, Allocation **ppAllocation)</div><div class="ttdoc">Similar to Allocator::AllocateMemory, but supports additional parameter pProtectedSession.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a7cc10fd0b328a512165cf636cb795090"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a7cc10fd0b328a512165cf636cb795090">D3D12MA::Allocator::CreateAllocator</a></div><div class="ttdeci">friend HRESULT CreateAllocator(const ALLOCATOR_DESC *, Allocator **)</div><div class="ttdoc">Creates new main D3D12MA::Allocator object and returns it through ppAllocator.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a8392663494384c16d8bfa12b827b4f9c"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a8392663494384c16d8bfa12b827b4f9c">D3D12MA::Allocator::FreeStatsString</a></div><div class="ttdeci">void FreeStatsString(WCHAR *pStatsString) const</div><div class="ttdoc">Frees memory of a string returned from Allocator::BuildStatsString.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a8ce95f85e5f2a1d41b81d676b21c04ae"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a8ce95f85e5f2a1d41b81d676b21c04ae">D3D12MA::Allocator::GetD3D12Options</a></div><div class="ttdeci">const D3D12_FEATURE_DATA_D3D12_OPTIONS &amp; GetD3D12Options() const</div><div class="ttdoc">Returns cached options retrieved from D3D12 device.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a968f13f23d03e50cc50b87835b6d5a85"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA::Allocator::D3D12MA_DELETE</a></div><div class="ttdeci">friend void D3D12MA_DELETE(const ALLOCATION_CALLBACKS &amp;, T *)</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_a9e742884bd45dd7f01193d13fcd05af0"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#a9e742884bd45dd7f01193d13fcd05af0">D3D12MA::Allocator::IsUMA</a></div><div class="ttdeci">BOOL IsUMA() const</div><div class="ttdoc">Returns true if D3D12_FEATURE_DATA_ARCHITECTURE1::UMA was found to be true.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_aa37d6b9fe8ea0864f7a35b9d68e8345a"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#aa37d6b9fe8ea0864f7a35b9d68e8345a">D3D12MA::Allocator::CreateResource</a></div><div class="ttdeci">HRESULT CreateResource(const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)</div><div class="ttdoc">Allocates memory and creates a D3D12 resource (buffer or texture). This is the main allocation functi...</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_aac7b1f6bf53cbf4c4ce2264cb72ca515"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#aac7b1f6bf53cbf4c4ce2264cb72ca515">D3D12MA::Allocator::CreatePool</a></div><div class="ttdeci">HRESULT CreatePool(const POOL_DESC *pPoolDesc, Pool **ppPool)</div><div class="ttdoc">Creates custom pool.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_ab45536f92410aedb7be44ea36b1b4717"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#ab45536f92410aedb7be44ea36b1b4717">D3D12MA::Allocator::CreateAliasingResource</a></div><div class="ttdeci">HRESULT CreateAliasingResource(Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource)</div><div class="ttdoc">Creates a new resource in place of an existing allocation. This is useful for memory aliasing.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_abe927bd3ad6930111d4d9408515b9601"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#abe927bd3ad6930111d4d9408515b9601">D3D12MA::Allocator::GetBudget</a></div><div class="ttdeci">void GetBudget(Budget *pGpuBudget, Budget *pCpuBudget)</div><div class="ttdoc">Retrieves information about current memory budget.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_acb8a10a5ea30171ce60128286aec5ee2"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#acb8a10a5ea30171ce60128286aec5ee2">D3D12MA::Allocator::AllocateMemory</a></div><div class="ttdeci">HRESULT AllocateMemory(const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_ALLOCATION_INFO *pAllocInfo, Allocation **ppAllocation)</div><div class="ttdoc">Allocates memory without creating any resource placed in it.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_ad9616c8e8e59ede99214b9c7cea97e5a"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#ad9616c8e8e59ede99214b9c7cea97e5a">D3D12MA::Allocator::CreateResource2</a></div><div class="ttdeci">HRESULT CreateResource2(const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, ID3D12ProtectedResourceSession *pProtectedSession, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)</div><div class="ttdoc">Similar to Allocator::CreateResource1, but supports new structure D3D12_RESOURCE_DESC1.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_addedcd0067319ec566042f5cb520843b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#addedcd0067319ec566042f5cb520843b">D3D12MA::Allocator::CalculateStats</a></div><div class="ttdeci">void CalculateStats(Stats *pStats)</div><div class="ttdoc">Retrieves statistics from the current state of the allocator.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_afa0de85c76ce1f86fe9b0bd94dad5e8b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#afa0de85c76ce1f86fe9b0bd94dad5e8b">D3D12MA::Allocator::CreateResource1</a></div><div class="ttdeci">HRESULT CreateResource1(const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, ID3D12ProtectedResourceSession *pProtectedSession, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)</div><div class="ttdoc">Similar to Allocator::CreateResource, but supports additional parameter pProtectedSession.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html">D3D12MA::Pool</a></div><div class="ttdoc">Custom memory pool.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1100</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html_a20617cfec0461cf8c2b92115b5140c5b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#a20617cfec0461cf8c2b92115b5140c5b">D3D12MA::Pool::SetName</a></div><div class="ttdeci">void SetName(LPCWSTR Name)</div><div class="ttdoc">Associates a name with the pool. This name is for use in debug diagnostics and tools.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html_a63c91d92a9ca48b98866a5cc1aea333b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#a63c91d92a9ca48b98866a5cc1aea333b">D3D12MA::Pool::GetName</a></div><div class="ttdeci">LPCWSTR GetName() const</div><div class="ttdoc">Returns the name associated with the pool object.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html_a72b45054123ec465caca5531f5d17998"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#a72b45054123ec465caca5531f5d17998">D3D12MA::Pool::AllocatorPimpl</a></div><div class="ttdeci">friend class AllocatorPimpl</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1134</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html_a8e4cc5fb13aa33398d391296336c457e"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#a8e4cc5fb13aa33398d391296336c457e">D3D12MA::Pool::CalculateStats</a></div><div class="ttdeci">void CalculateStats(StatInfo *pStats)</div><div class="ttdoc">Retrieves statistics from the current state of this pool.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html_a968f13f23d03e50cc50b87835b6d5a85"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA::Pool::D3D12MA_DELETE</a></div><div class="ttdeci">friend void D3D12MA_DELETE(const ALLOCATION_CALLBACKS &amp;, T *)</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_pool_html_aaab59af46d922d6b81fce8d8be987028"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#aaab59af46d922d6b81fce8d8be987028">D3D12MA::Pool::GetDesc</a></div><div class="ttdeci">POOL_DESC GetDesc() const</div><div class="ttdoc">Returns copy of parameters of the pool.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html">D3D12MA::VirtualBlock</a></div><div class="ttdoc">Represents pure allocation algorithm and a data structure with allocations in some memory block,...</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1568</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a02dfae4c0856f22da885a332de7821fa"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a02dfae4c0856f22da885a332de7821fa">D3D12MA::VirtualBlock::FreeAllocation</a></div><div class="ttdeci">void FreeAllocation(UINT64 offset)</div><div class="ttdoc">Frees the allocation at given offset.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a039ee8426818d0126cf7f44c1c658526"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a039ee8426818d0126cf7f44c1c658526">D3D12MA::VirtualBlock::CalculateStats</a></div><div class="ttdeci">void CalculateStats(StatInfo *pInfo) const</div><div class="ttdoc">Retrieves statistics from the current state of the block.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a0af4aec3d2efc913ee43b0725e8a0289"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a0af4aec3d2efc913ee43b0725e8a0289">D3D12MA::VirtualBlock::SetAllocationUserData</a></div><div class="ttdeci">void SetAllocationUserData(UINT64 offset, void *pUserData)</div><div class="ttdoc">Changes custom pointer for an allocation at given offset to a new value.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a287b8f0e455ffc7f302094671f922afb"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a287b8f0e455ffc7f302094671f922afb">D3D12MA::VirtualBlock::GetAllocationInfo</a></div><div class="ttdeci">void GetAllocationInfo(UINT64 offset, VIRTUAL_ALLOCATION_INFO *pInfo) const</div><div class="ttdoc">Returns information about an allocation at given offset - its size and custom pointer.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a6f78ddaa7da194e239089e52093e68a9"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a6f78ddaa7da194e239089e52093e68a9">D3D12MA::VirtualBlock::FreeStatsString</a></div><div class="ttdeci">void FreeStatsString(WCHAR *pStatsString) const</div><div class="ttdoc">Frees memory of a string returned from VirtualBlock::BuildStatsString.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a7b23fd2da6f0343095fb14b31395678b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a7b23fd2da6f0343095fb14b31395678b">D3D12MA::VirtualBlock::IsEmpty</a></div><div class="ttdeci">BOOL IsEmpty() const</div><div class="ttdoc">Returns true if the block is empty - contains 0 allocations.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a828a27070bfa762cae796d4c8f2ef703"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a828a27070bfa762cae796d4c8f2ef703">D3D12MA::VirtualBlock::BuildStatsString</a></div><div class="ttdeci">void BuildStatsString(WCHAR **ppStatsString) const</div><div class="ttdoc">Builds and returns statistics as a string in JSON format, including the list of allocations with thei...</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a968f13f23d03e50cc50b87835b6d5a85"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a968f13f23d03e50cc50b87835b6d5a85">D3D12MA::VirtualBlock::D3D12MA_DELETE</a></div><div class="ttdeci">friend void D3D12MA_DELETE(const ALLOCATION_CALLBACKS &amp;, T *)</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_aa57575f1af18461012bde8c4b6f3c56c"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c">D3D12MA::VirtualBlock::Allocate</a></div><div class="ttdeci">HRESULT Allocate(const VIRTUAL_ALLOCATION_DESC *pDesc, UINT64 *pOffset)</div><div class="ttdoc">Creates new allocation.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_ab8bb16e20c691720aad26ecbf105aa6f"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#ab8bb16e20c691720aad26ecbf105aa6f">D3D12MA::VirtualBlock::CreateVirtualBlock</a></div><div class="ttdeci">friend HRESULT CreateVirtualBlock(const VIRTUAL_BLOCK_DESC *, VirtualBlock **)</div><div class="ttdoc">Creates new D3D12MA::VirtualBlock object and returns it through ppVirtualBlock.</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_ae22b18c0b7c31b44c1d740f886369189"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#ae22b18c0b7c31b44c1d740f886369189">D3D12MA::VirtualBlock::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Frees all the allocations.</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html"><div class="ttname"><a href="namespace_d3_d12_m_a.html">D3D12MA</a></div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:768</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_a27ddd7db5650bc1d2afa009bebb6a53b"><div class="ttname"><a href="namespace_d3_d12_m_a.html#a27ddd7db5650bc1d2afa009bebb6a53b">D3D12MA::ALLOCATE_FUNC_PTR</a></div><div class="ttdeci">void *(* ALLOCATE_FUNC_PTR)(size_t Size, size_t Alignment, void *pUserData)</div><div class="ttdoc">Pointer to custom callback function that allocates CPU memory.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:785</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_a3a473f88974f9312dbb6ff9f18228d76"><div class="ttname"><a href="namespace_d3_d12_m_a.html#a3a473f88974f9312dbb6ff9f18228d76">D3D12MA::FREE_FUNC_PTR</a></div><div class="ttdeci">void(* FREE_FUNC_PTR)(void *pMemory, void *pUserData)</div><div class="ttdoc">Pointer to custom callback function that deallocates CPU memory.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:791</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_aa341b796fdffb16c976e659ccce80332"><div class="ttname"><a href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332">D3D12MA::CreateAllocator</a></div><div class="ttdeci">HRESULT CreateAllocator(const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)</div><div class="ttdoc">Creates new main D3D12MA::Allocator object and returns it through ppAllocator.</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abad7f40135648f8d0871be36f2919982"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abad7f40135648f8d0871be36f2919982">D3D12MA::HEAP_TYPE_COUNT</a></div><div class="ttdeci">const UINT HEAP_TYPE_COUNT</div><div class="ttdoc">Number of D3D12 memory heap types supported.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1201</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645e"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e">D3D12MA::ALLOCATION_FLAGS</a></div><div class="ttdeci">ALLOCATION_FLAGS</div><div class="ttdoc">Bit flags to be used with ALLOCATION_DESC::Flags.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:806</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645ea0bf578b096d6ea73cea86b031541733e"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea0bf578b096d6ea73cea86b031541733e">D3D12MA::ALLOCATION_FLAG_NONE</a></div><div class="ttdeci">@ ALLOCATION_FLAG_NONE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:808</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675">D3D12MA::ALLOCATION_FLAG_COMMITTED</a></div><div class="ttdeci">@ ALLOCATION_FLAG_COMMITTED</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:815</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645ea9a52c6ae694eadcd20896091e77c0628"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea9a52c6ae694eadcd20896091e77c0628">D3D12MA::ALLOCATION_FLAG_NEVER_ALLOCATE</a></div><div class="ttdeci">@ ALLOCATION_FLAG_NEVER_ALLOCATE</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:826</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645eab374417c1f22a833ead268a6c21424e6"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645eab374417c1f22a833ead268a6c21424e6">D3D12MA::ALLOCATION_FLAG_WITHIN_BUDGET</a></div><div class="ttdeci">@ ALLOCATION_FLAG_WITHIN_BUDGET</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:831</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_ad5ae5a5e42b878f2e18ab5d1fbfb9916"><div class="ttname"><a href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916">D3D12MA::ALLOCATOR_FLAGS</a></div><div class="ttdeci">ALLOCATOR_FLAGS</div><div class="ttdoc">Bit flags to be used with ALLOCATOR_DESC::Flags.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1147</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_ad5ae5a5e42b878f2e18ab5d1fbfb9916a068863dc0538ff4ea153b046b31e94fb"><div class="ttname"><a href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a068863dc0538ff4ea153b046b31e94fb">D3D12MA::ALLOCATOR_FLAG_ALWAYS_COMMITTED</a></div><div class="ttdeci">@ ALLOCATOR_FLAG_ALWAYS_COMMITTED</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1164</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_ad5ae5a5e42b878f2e18ab5d1fbfb9916a1b06bb21df006f76a9ed1bc41838bc52"><div class="ttname"><a href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a1b06bb21df006f76a9ed1bc41838bc52">D3D12MA::ALLOCATOR_FLAG_SINGLETHREADED</a></div><div class="ttdeci">@ ALLOCATOR_FLAG_SINGLETHREADED</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1158</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_ad5ae5a5e42b878f2e18ab5d1fbfb9916a2fb30967b492c27823a80b5de3aea26f"><div class="ttname"><a href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a2fb30967b492c27823a80b5de3aea26f">D3D12MA::ALLOCATOR_FLAG_NONE</a></div><div class="ttdeci">@ ALLOCATOR_FLAG_NONE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1149</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_aefde6264e7a88bebe8e193df343af317"><div class="ttname"><a href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317">D3D12MA::CreateVirtualBlock</a></div><div class="ttdeci">HRESULT CreateVirtualBlock(const VIRTUAL_BLOCK_DESC *pDesc, VirtualBlock **ppVirtualBlock)</div><div class="ttdoc">Creates new D3D12MA::VirtualBlock object and returns it through ppVirtualBlock.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">D3D12MA::ALLOCATION_CALLBACKS</a></div><div class="ttdoc">Custom callbacks to CPU memory allocation functions.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:795</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_a114e6c4d63d6b020e01f526a975d6849"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#a114e6c4d63d6b020e01f526a975d6849">D3D12MA::ALLOCATION_CALLBACKS::pFree</a></div><div class="ttdeci">FREE_FUNC_PTR pFree</div><div class="ttdoc">Dellocation function.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:799</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_af4d6436455728696fefd503869226436"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af4d6436455728696fefd503869226436">D3D12MA::ALLOCATION_CALLBACKS::pAllocate</a></div><div class="ttdeci">ALLOCATE_FUNC_PTR pAllocate</div><div class="ttdoc">Allocation function.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:797</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_af75391788c1241a06bb0de792c02c335"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af75391788c1241a06bb0de792c02c335">D3D12MA::ALLOCATION_CALLBACKS::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom data that will be passed to allocation and deallocation functions as pUserData parameter.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:801</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:836</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a92dec49b788a334fc91c55340dfbace6"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a92dec49b788a334fc91c55340dfbace6">D3D12MA::ALLOCATION_DESC::Flags</a></div><div class="ttdeci">ALLOCATION_FLAGS Flags</div><div class="ttdoc">Flags.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:838</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a97878838f976b2d1e6b1a76881035690"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a97878838f976b2d1e6b1a76881035690">D3D12MA::ALLOCATION_DESC::ExtraHeapFlags</a></div><div class="ttdeci">D3D12_HEAP_FLAGS ExtraHeapFlags</div><div class="ttdoc">Additional heap flags to be used when allocating memory.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:861</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aa46b3c0456e5a23edef3328607ebf4d7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7">D3D12MA::ALLOCATION_DESC::HeapType</a></div><div class="ttdeci">D3D12_HEAP_TYPE HeapType</div><div class="ttdoc">The type of memory heap where the new allocation should be placed.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:845</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_ab06b85f3cf3254f855b29264477e3934"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#ab06b85f3cf3254f855b29264477e3934">D3D12MA::ALLOCATION_DESC::CustomPool</a></div><div class="ttdeci">Pool * CustomPool</div><div class="ttdoc">Custom pool to place the new resource in. Optional.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:867</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">D3D12MA::ALLOCATOR_DESC</a></div><div class="ttdoc">Parameters of created Allocator object. To be used with CreateAllocator().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1169</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_a773ecc1945eb47c20e06455c3759e4ef"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a773ecc1945eb47c20e06455c3759e4ef">D3D12MA::ALLOCATOR_DESC::pAllocationCallbacks</a></div><div class="ttdeci">const ALLOCATION_CALLBACKS * pAllocationCallbacks</div><div class="ttdoc">Custom CPU memory allocation callbacks. Optional.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1189</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_a97149c9559deae943c2cfa49aeeff8a6"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a97149c9559deae943c2cfa49aeeff8a6">D3D12MA::ALLOCATOR_DESC::PreferredBlockSize</a></div><div class="ttdeci">UINT64 PreferredBlockSize</div><div class="ttdoc">Preferred size of a single ID3D12Heap block to be allocated.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1183</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_abf9a9f87f0ffea52816efd363c5fcd7b"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b">D3D12MA::ALLOCATOR_DESC::pAdapter</a></div><div class="ttdeci">IDXGIAdapter * pAdapter</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1195</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_ad8abad7c80ea0d8df27c85243ce720f3"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ad8abad7c80ea0d8df27c85243ce720f3">D3D12MA::ALLOCATOR_DESC::Flags</a></div><div class="ttdeci">ALLOCATOR_FLAGS Flags</div><div class="ttdoc">Flags.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1171</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_ada1bf21205065b3aa0284b5a9ee1cb3c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c">D3D12MA::ALLOCATOR_DESC::pDevice</a></div><div class="ttdeci">ID3D12Device * pDevice</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1177</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_budget_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_budget.html">D3D12MA::Budget</a></div><div class="ttdoc">Statistics of current memory usage and available budget, in bytes, for GPU or CPU memory.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1243</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_budget_html_a326515f08d89ee2e31dcfdd5c1e8ac71"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_budget.html#a326515f08d89ee2e31dcfdd5c1e8ac71">D3D12MA::Budget::BudgetBytes</a></div><div class="ttdeci">UINT64 BudgetBytes</div><div class="ttdoc">Estimated amount of memory available to the program, in bytes.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1275</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_budget_html_a77a8c9e32d6602f95b7d1c285cddd253"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_budget.html#a77a8c9e32d6602f95b7d1c285cddd253">D3D12MA::Budget::UsageBytes</a></div><div class="ttdeci">UINT64 UsageBytes</div><div class="ttdoc">Estimated current memory usage of the program, in bytes.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1264</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_budget_html_abcb043908bd528852f8ef3867ad76099"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_budget.html#abcb043908bd528852f8ef3867ad76099">D3D12MA::Budget::AllocationBytes</a></div><div class="ttdeci">UINT64 AllocationBytes</div><div class="ttdoc">Sum size of all allocations created in particular heap type, in bytes.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1254</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_budget_html_ad1ad5d8521993cb623255ee1709a1c4c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_budget.html#ad1ad5d8521993cb623255ee1709a1c4c">D3D12MA::Budget::BlockBytes</a></div><div class="ttdeci">UINT64 BlockBytes</div><div class="ttdoc">Sum size of all memory blocks allocated from particular heap type, in bytes.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1246</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html">D3D12MA::POOL_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::Pool object. To be used with D3D12MA::Allocator::CreatePool.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1046</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html_a06e06813bcb5206e9f7a8b0564bf1d6a"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a06e06813bcb5206e9f7a8b0564bf1d6a">D3D12MA::POOL_DESC::HeapProperties</a></div><div class="ttdeci">D3D12_HEAP_PROPERTIES HeapProperties</div><div class="ttdoc">The parameters of memory heap where allocations of this pool should be placed.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1052</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html_a0a6283eeb1f3f99d8c4ae264aec7f749"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a0a6283eeb1f3f99d8c4ae264aec7f749">D3D12MA::POOL_DESC::MinAllocationAlignment</a></div><div class="ttdeci">UINT64 MinAllocationAlignment</div><div class="ttdoc">Additional minimum alignment to be used for all allocations created from this pool....</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1088</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html_a3795956e4fbfe7c3a23546e02e5d28dc"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a3795956e4fbfe7c3a23546e02e5d28dc">D3D12MA::POOL_DESC::HeapFlags</a></div><div class="ttdeci">D3D12_HEAP_FLAGS HeapFlags</div><div class="ttdoc">Heap flags to be used when allocating heaps of this pool.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1063</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html_a6f10db3911a3bea1becfc9a0dfa5bac8"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#a6f10db3911a3bea1becfc9a0dfa5bac8">D3D12MA::POOL_DESC::MinBlockCount</a></div><div class="ttdeci">UINT MinBlockCount</div><div class="ttdoc">Minimum number of heaps (memory blocks) to be always allocated in this pool, even if they stay empty....</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1075</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html_abbce3a99f253928f9c3c09fa16015f9e"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#abbce3a99f253928f9c3c09fa16015f9e">D3D12MA::POOL_DESC::MaxBlockCount</a></div><div class="ttdeci">UINT MaxBlockCount</div><div class="ttdoc">Maximum number of heaps (memory blocks) that can be allocated in this pool. Optional.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1083</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c_html_af7284cc51a8ed5b551075584256de23c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#af7284cc51a8ed5b551075584256de23c">D3D12MA::POOL_DESC::BlockSize</a></div><div class="ttdeci">UINT64 BlockSize</div><div class="ttdoc">Size of a single heap (memory block) to be allocated as part of this pool, in bytes....</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1070</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html">D3D12MA::StatInfo</a></div><div class="ttdoc">Calculated statistics of memory usage in entire allocator.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1207</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a1337269f8777b6b5176c72ca410fbe36"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a1337269f8777b6b5176c72ca410fbe36">D3D12MA::StatInfo::UnusedRangeSizeMax</a></div><div class="ttdeci">UINT64 UnusedRangeSizeMax</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1223</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a180be027720ca98ff3a7470e18a79622"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a180be027720ca98ff3a7470e18a79622">D3D12MA::StatInfo::UnusedRangeSizeMin</a></div><div class="ttdeci">UINT64 UnusedRangeSizeMin</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1221</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a1df359c2e9ad4c7763122d1ccd86b168"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a1df359c2e9ad4c7763122d1ccd86b168">D3D12MA::StatInfo::UnusedBytes</a></div><div class="ttdeci">UINT64 UnusedBytes</div><div class="ttdoc">Total number of bytes occupied by unused ranges.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1217</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a249d7969bf3f836c13a0f111d6ed886d"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a249d7969bf3f836c13a0f111d6ed886d">D3D12MA::StatInfo::UnusedRangeSizeAvg</a></div><div class="ttdeci">UINT64 UnusedRangeSizeAvg</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1222</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a2f50de812e296b71594174ff67bbac6e"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e">D3D12MA::StatInfo::AllocationCount</a></div><div class="ttdeci">UINT AllocationCount</div><div class="ttdoc">Number of D3D12MA::Allocation objects allocated.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1211</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a8284ef3310c9de1600071285448b62c9"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a8284ef3310c9de1600071285448b62c9">D3D12MA::StatInfo::BlockCount</a></div><div class="ttdeci">UINT BlockCount</div><div class="ttdoc">Number of memory blocks (heaps) allocated.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1209</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a9d9e69e9cad231fea3a41b06e7eeee35"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a9d9e69e9cad231fea3a41b06e7eeee35">D3D12MA::StatInfo::AllocationSizeMin</a></div><div class="ttdeci">UINT64 AllocationSizeMin</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1218</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_ac4f3379ea88025e4ccf5880fab2699f7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7">D3D12MA::StatInfo::UsedBytes</a></div><div class="ttdeci">UINT64 UsedBytes</div><div class="ttdoc">Total number of bytes occupied by all allocations.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1215</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_acd3c6f72ffb61a8d39b65a3dab317eb6"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#acd3c6f72ffb61a8d39b65a3dab317eb6">D3D12MA::StatInfo::AllocationSizeMax</a></div><div class="ttdeci">UINT64 AllocationSizeMax</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1220</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_acf3339540ff01d93b6a6f5dc68d83f60"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#acf3339540ff01d93b6a6f5dc68d83f60">D3D12MA::StatInfo::AllocationSizeAvg</a></div><div class="ttdeci">UINT64 AllocationSizeAvg</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1219</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_adfc245a84fb8fba7936b67bd879ffefb"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#adfc245a84fb8fba7936b67bd879ffefb">D3D12MA::StatInfo::UnusedRangeCount</a></div><div class="ttdeci">UINT UnusedRangeCount</div><div class="ttdoc">Number of free ranges of memory between allocations.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1213</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stats_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stats.html">D3D12MA::Stats</a></div><div class="ttdoc">General statistics from the current state of the allocator.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1230</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stats_html_a6e433945a118a34f7f6565811e62d718"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stats.html#a6e433945a118a34f7f6565811e62d718">D3D12MA::Stats::HeapType</a></div><div class="ttdeci">StatInfo HeapType[HEAP_TYPE_COUNT]</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1237</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stats_html_ada54d9f0385fcdba491adcfd91f29c28"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stats.html#ada54d9f0385fcdba491adcfd91f29c28">D3D12MA::Stats::Total</a></div><div class="ttdeci">StatInfo Total</div><div class="ttdoc">Total statistics from all heap types.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1232</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::VIRTUAL_ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created virtual allocation to be passed to VirtualBlock::Allocate().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1525</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a976b649e45abdd0769da0d79acde4bac"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a976b649e45abdd0769da0d79acde4bac">D3D12MA::VIRTUAL_ALLOCATION_DESC::Size</a></div><div class="ttdeci">UINT64 Size</div><div class="ttdoc">Size of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1530</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aaa95e62f2f399339a09dcbb312a42de0"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aaa95e62f2f399339a09dcbb312a42de0">D3D12MA::VIRTUAL_ALLOCATION_DESC::Alignment</a></div><div class="ttdeci">UINT64 Alignment</div><div class="ttdoc">Required alignment of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1535</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_ab8ec8dd20b4b9dc2aaa79d7da024170b"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#ab8ec8dd20b4b9dc2aaa79d7da024170b">D3D12MA::VIRTUAL_ALLOCATION_DESC::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom pointer to be associated with the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1540</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html">D3D12MA::VIRTUAL_ALLOCATION_INFO</a></div><div class="ttdoc">Parameters of an existing virtual allocation, returned by VirtualBlock::GetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1545</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o_html_a4b23ad296ab6cd425fb3b6c83c13b4ff"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#a4b23ad296ab6cd425fb3b6c83c13b4ff">D3D12MA::VIRTUAL_ALLOCATION_INFO::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom pointer associated with the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1555</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o_html_ab8ede12141594a69230afeb34664fc34"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#ab8ede12141594a69230afeb34664fc34">D3D12MA::VIRTUAL_ALLOCATION_INFO::size</a></div><div class="ttdeci">UINT64 size</div><div class="ttdoc">Size of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1550</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">D3D12MA::VIRTUAL_BLOCK_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1509</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html_aa8ea08ad0ee64cb2d29c03b85008317f"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#aa8ea08ad0ee64cb2d29c03b85008317f">D3D12MA::VIRTUAL_BLOCK_DESC::pAllocationCallbacks</a></div><div class="ttdeci">const ALLOCATION_CALLBACKS * pAllocationCallbacks</div><div class="ttdoc">Custom CPU memory allocation callbacks. Optional.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1520</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html_ac56491679f276a5a9956ed99bc4654e4"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#ac56491679f276a5a9956ed99bc4654e4">D3D12MA::VIRTUAL_BLOCK_DESC::Size</a></div><div class="ttdeci">UINT64 Size</div><div class="ttdoc">Total size of the block.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1515</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

View File

@ -77,7 +77,7 @@ $(function() {
<p>Represents single memory allocation.
<a href="class_d3_d12_m_a_1_1_allocation.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for D3D12MA::Allocation:</div>
<div class="dyncontent">
@ -426,7 +426,7 @@ Public Member Functions</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Represents main object of this library initialized for particular <code>ID3D12Device</code>.
<a href="class_d3_d12_m_a_1_1_allocator.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for D3D12MA::Allocator:</div>
<div class="dyncontent">
@ -741,7 +741,7 @@ Public Member Functions</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Custom memory pool.
<a href="class_d3_d12_m_a_1_1_pool.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for D3D12MA::Pool:</div>
<div class="dyncontent">
@ -188,7 +188,7 @@ Public Member Functions</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Represents pure allocation algorithm and a data structure with allocations in some memory block, without actually allocating any GPU memory.
<a href="class_d3_d12_m_a_1_1_virtual_block.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for D3D12MA::VirtualBlock:</div>
<div class="dyncontent">
@ -342,7 +342,7 @@ Public Member Functions</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -101,15 +101,15 @@ Custom CPU memory allocator</h1>
<div class="line"> </div>
<div class="line"><a class="code" href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a>* allocator;</div>
<div class="line">HRESULT hr = <a class="code" href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332">D3D12MA::CreateAllocator</a>(&amp;allocatorDesc, &amp;allocator);</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a></div><div class="ttdoc">Represents main object of this library initialized for particular ID3D12Device.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1288</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a></div><div class="ttdoc">Represents main object of this library initialized for particular ID3D12Device.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:659</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_aa341b796fdffb16c976e659ccce80332"><div class="ttname"><a href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332">D3D12MA::CreateAllocator</a></div><div class="ttdeci">HRESULT CreateAllocator(const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)</div><div class="ttdoc">Creates new main D3D12MA::Allocator object and returns it through ppAllocator.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">D3D12MA::ALLOCATION_CALLBACKS</a></div><div class="ttdoc">Custom callbacks to CPU memory allocation functions.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:795</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_a114e6c4d63d6b020e01f526a975d6849"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#a114e6c4d63d6b020e01f526a975d6849">D3D12MA::ALLOCATION_CALLBACKS::pFree</a></div><div class="ttdeci">FREE_FUNC_PTR pFree</div><div class="ttdoc">Dellocation function.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:799</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_af4d6436455728696fefd503869226436"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af4d6436455728696fefd503869226436">D3D12MA::ALLOCATION_CALLBACKS::pAllocate</a></div><div class="ttdeci">ALLOCATE_FUNC_PTR pAllocate</div><div class="ttdoc">Allocation function.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:797</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">D3D12MA::ALLOCATOR_DESC</a></div><div class="ttdoc">Parameters of created Allocator object. To be used with CreateAllocator().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1169</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_a773ecc1945eb47c20e06455c3759e4ef"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a773ecc1945eb47c20e06455c3759e4ef">D3D12MA::ALLOCATOR_DESC::pAllocationCallbacks</a></div><div class="ttdeci">const ALLOCATION_CALLBACKS * pAllocationCallbacks</div><div class="ttdoc">Custom CPU memory allocation callbacks. Optional.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1189</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_abf9a9f87f0ffea52816efd363c5fcd7b"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b">D3D12MA::ALLOCATOR_DESC::pAdapter</a></div><div class="ttdeci">IDXGIAdapter * pAdapter</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1195</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_ada1bf21205065b3aa0284b5a9ee1cb3c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c">D3D12MA::ALLOCATOR_DESC::pDevice</a></div><div class="ttdeci">ID3D12Device * pDevice</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1177</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html">D3D12MA::ALLOCATION_CALLBACKS</a></div><div class="ttdoc">Custom callbacks to CPU memory allocation functions.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:166</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_a114e6c4d63d6b020e01f526a975d6849"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#a114e6c4d63d6b020e01f526a975d6849">D3D12MA::ALLOCATION_CALLBACKS::pFree</a></div><div class="ttdeci">FREE_FUNC_PTR pFree</div><div class="ttdoc">Dellocation function.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:170</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s_html_af4d6436455728696fefd503869226436"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#af4d6436455728696fefd503869226436">D3D12MA::ALLOCATION_CALLBACKS::pAllocate</a></div><div class="ttdeci">ALLOCATE_FUNC_PTR pAllocate</div><div class="ttdoc">Allocation function.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:168</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">D3D12MA::ALLOCATOR_DESC</a></div><div class="ttdoc">Parameters of created Allocator object. To be used with CreateAllocator().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:540</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_a773ecc1945eb47c20e06455c3759e4ef"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#a773ecc1945eb47c20e06455c3759e4ef">D3D12MA::ALLOCATOR_DESC::pAllocationCallbacks</a></div><div class="ttdeci">const ALLOCATION_CALLBACKS * pAllocationCallbacks</div><div class="ttdoc">Custom CPU memory allocation callbacks. Optional.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:560</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_abf9a9f87f0ffea52816efd363c5fcd7b"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b">D3D12MA::ALLOCATOR_DESC::pAdapter</a></div><div class="ttdeci">IDXGIAdapter * pAdapter</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:566</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_ada1bf21205065b3aa0284b5a9ee1cb3c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c">D3D12MA::ALLOCATOR_DESC::pDevice</a></div><div class="ttdeci">ID3D12Device * pDevice</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:548</div></div>
</div><!-- fragment --> </div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->

View File

@ -110,7 +110,7 @@ Features and benefits</h1>
<div class="line">ID3D12Resource* res;</div>
<div class="line">hr = allocator-&gt;CreateResource(&amp;allocDesc, &amp;resDesc,</div>
<div class="line"> D3D12_RESOURCE_STATE_GENERIC_READ, NULL, &amp;alloc, IID_PPV_ARGS(&amp;res));</div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675">D3D12MA::ALLOCATION_FLAG_COMMITTED</a></div><div class="ttdeci">@ ALLOCATION_FLAG_COMMITTED</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:815</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675"><div class="ttname"><a href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675">D3D12MA::ALLOCATION_FLAG_COMMITTED</a></div><div class="ttdeci">@ ALLOCATION_FLAG_COMMITTED</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:186</div></div>
</div><!-- fragment --><p>This feature may seem unnecessary, but creating committed allocations from custom pools may be useful in some cases, e.g. to have separate memory usage statistics for some group of resources or to use extended allocation parameters, like custom <code>D3D12_HEAP_PROPERTIES</code>, which are available only in custom pools. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->

View File

@ -67,7 +67,7 @@ $(function() {
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_d3_d12_mem_alloc_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_d3_d12_mem_alloc_8h.html" target="_self">D3D12MemAlloc.h</a></td><td class="desc"></td></tr>
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="_d3_d12_mem_alloc_8h.html" target="_self">D3D12MemAlloc.h</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

View File

@ -93,12 +93,12 @@ Future plans</h1>
Features not supported</h1>
<p>Features deliberately excluded from the scope of this library:</p>
<ul>
<li>Descriptor allocation. Although also called "heaps", objects that represent descriptors are separate part of the D3D12 API from buffers and textures.</li>
<li>Support for reserved (tiled) resources. We don't recommend using them.</li>
<li>Support for <code>ID3D12Device::Evict</code> and <code>MakeResident</code>. We don't recommend using them.</li>
<li>Handling CPU memory allocation failures. When dynamically creating small C++ objects in CPU memory (not the GPU memory), allocation failures are not handled gracefully, because that would complicate code significantly and is usually not needed in desktop PC applications anyway. Success of an allocation is just checked with an assert.</li>
<li>Code free of any compiler warnings - especially those that would require complicating the code just to please the compiler complaining about unused parameters, variables, or expressions being constant in Relese configuration, e.g. because they are only used inside an assert.</li>
<li>This is a C++ library. Bindings or ports to any other programming languages are welcomed as external projects and are not going to be included into this repository. </li>
<li><b>Descriptor allocation.</b> Although also called "heaps", objects that represent descriptors are separate part of the D3D12 API from buffers and textures.</li>
<li><b>Support for reserved (tiled) resources.</b> We don't recommend using them.</li>
<li>Support for <code>ID3D12Device::Evict</code> and <code>MakeResident</code>. We don't recommend using them. You can call them on the D3D12 objects manually. Plese keep in mind, however, that eviction happens on the level of entire <code>ID3D12Heap</code> memory blocks and not individual buffers or textures which may be placed inside them.</li>
<li><b>Handling CPU memory allocation failures.</b> When dynamically creating small C++ objects in CPU memory (not the GPU memory), allocation failures are not handled gracefully, because that would complicate code significantly and is usually not needed in desktop PC applications anyway. Success of an allocation is just checked with an assert.</li>
<li><b>Code free of any compiler warnings.</b> There are many preprocessor macros that make some variables unused, function parameters unreferenced, or conditional expressions constant in some configurations. The code of this library should not be bigger or more complicated just to silence these warnings. It is recommended to disable such warnings instead.</li>
<li>This is a C++ library. <b>Bindings or ports to any other programming languages</b> are welcome as external projects but are not going to be included into this repository. </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->

View File

@ -90,11 +90,11 @@ Project setup and initialization</h1>
<div class="line"> </div>
<div class="line"><a class="code" href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a>* allocator;</div>
<div class="line">HRESULT hr = <a class="code" href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332">D3D12MA::CreateAllocator</a>(&amp;allocatorDesc, &amp;allocator);</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a></div><div class="ttdoc">Represents main object of this library initialized for particular ID3D12Device.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1288</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html">D3D12MA::Allocator</a></div><div class="ttdoc">Represents main object of this library initialized for particular ID3D12Device.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:659</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_aa341b796fdffb16c976e659ccce80332"><div class="ttname"><a href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332">D3D12MA::CreateAllocator</a></div><div class="ttdeci">HRESULT CreateAllocator(const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)</div><div class="ttdoc">Creates new main D3D12MA::Allocator object and returns it through ppAllocator.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">D3D12MA::ALLOCATOR_DESC</a></div><div class="ttdoc">Parameters of created Allocator object. To be used with CreateAllocator().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1169</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_abf9a9f87f0ffea52816efd363c5fcd7b"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b">D3D12MA::ALLOCATOR_DESC::pAdapter</a></div><div class="ttdeci">IDXGIAdapter * pAdapter</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1195</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_ada1bf21205065b3aa0284b5a9ee1cb3c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c">D3D12MA::ALLOCATOR_DESC::pDevice</a></div><div class="ttdeci">ID3D12Device * pDevice</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1177</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html">D3D12MA::ALLOCATOR_DESC</a></div><div class="ttdoc">Parameters of created Allocator object. To be used with CreateAllocator().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:540</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_abf9a9f87f0ffea52816efd363c5fcd7b"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#abf9a9f87f0ffea52816efd363c5fcd7b">D3D12MA::ALLOCATOR_DESC::pAdapter</a></div><div class="ttdeci">IDXGIAdapter * pAdapter</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:566</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c_html_ada1bf21205065b3aa0284b5a9ee1cb3c"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#ada1bf21205065b3aa0284b5a9ee1cb3c">D3D12MA::ALLOCATOR_DESC::pDevice</a></div><div class="ttdeci">ID3D12Device * pDevice</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:548</div></div>
</div><!-- fragment --><p>(5.) Right before destroying the D3D12 device, destroy the allocator object.</p>
<p>Objects of this library must be destroyed by calling <code>Release</code> method. They are somewhat compatible with COM: they implement <code>IUnknown</code> interface with its virtual methods: <code>AddRef</code>, <code>Release</code>, <code>QueryInterface</code>, and they are reference-counted internally. You can use smart pointers designed for COM with objects of this library - e.g. <code>CComPtr</code> or <code>Microsoft::WRL::ComPtr</code>. The reference counter is thread-safe. <code>QueryInterface</code> method supports only <code>IUnknown</code>, as classes of this library don't define their own GUIDs.</p>
<div class="fragment"><div class="line">allocator-&gt;Release();</div>
@ -128,10 +128,10 @@ Creating resources</h1>
<div class="line"> NULL,</div>
<div class="line"> &amp;allocation,</div>
<div class="line"> IID_PPV_ARGS(&amp;resource));</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html">D3D12MA::Allocation</a></div><div class="ttdoc">Represents single memory allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:885</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html">D3D12MA::Allocation</a></div><div class="ttdoc">Represents single memory allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:256</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocator_html_aa37d6b9fe8ea0864f7a35b9d68e8345a"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#aa37d6b9fe8ea0864f7a35b9d68e8345a">D3D12MA::Allocator::CreateResource</a></div><div class="ttdeci">HRESULT CreateResource(const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)</div><div class="ttdoc">Allocates memory and creates a D3D12 resource (buffer or texture). This is the main allocation functi...</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:836</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aa46b3c0456e5a23edef3328607ebf4d7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7">D3D12MA::ALLOCATION_DESC::HeapType</a></div><div class="ttdeci">D3D12_HEAP_TYPE HeapType</div><div class="ttdoc">The type of memory heap where the new allocation should be placed.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:845</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:207</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aa46b3c0456e5a23edef3328607ebf4d7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7">D3D12MA::ALLOCATION_DESC::HeapType</a></div><div class="ttdeci">D3D12_HEAP_TYPE HeapType</div><div class="ttdoc">The type of memory heap where the new allocation should be placed.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:216</div></div>
</div><!-- fragment --><p>You need to remember both resource and allocation objects and destroy them separately when no longer needed.</p>
<div class="fragment"><div class="line">allocation-&gt;Release();</div>
<div class="line">resource-&gt;Release();</div>

View File

@ -144,11 +144,11 @@ $(function() {
<div class="line">res2-&gt;Release();</div>
<div class="line">res1-&gt;Release();</div>
<div class="line">alloc-&gt;Release();</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html">D3D12MA::Allocation</a></div><div class="ttdoc">Represents single memory allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:885</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html">D3D12MA::Allocation</a></div><div class="ttdoc">Represents single memory allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:256</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_allocation_html_ac15798741797425b4e9e67bfc991e06b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#ac15798741797425b4e9e67bfc991e06b">D3D12MA::Allocation::GetHeap</a></div><div class="ttdeci">ID3D12Heap * GetHeap() const</div><div class="ttdoc">Returns memory heap that the resource is created in.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:836</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a97878838f976b2d1e6b1a76881035690"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a97878838f976b2d1e6b1a76881035690">D3D12MA::ALLOCATION_DESC::ExtraHeapFlags</a></div><div class="ttdeci">D3D12_HEAP_FLAGS ExtraHeapFlags</div><div class="ttdoc">Additional heap flags to be used when allocating memory.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:861</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aa46b3c0456e5a23edef3328607ebf4d7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7">D3D12MA::ALLOCATION_DESC::HeapType</a></div><div class="ttdeci">D3D12_HEAP_TYPE HeapType</div><div class="ttdoc">The type of memory heap where the new allocation should be placed.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:845</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:207</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a97878838f976b2d1e6b1a76881035690"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a97878838f976b2d1e6b1a76881035690">D3D12MA::ALLOCATION_DESC::ExtraHeapFlags</a></div><div class="ttdeci">D3D12_HEAP_FLAGS ExtraHeapFlags</div><div class="ttdoc">Additional heap flags to be used when allocating memory.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:232</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aa46b3c0456e5a23edef3328607ebf4d7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aa46b3c0456e5a23edef3328607ebf4d7">D3D12MA::ALLOCATION_DESC::HeapType</a></div><div class="ttdeci">D3D12_HEAP_TYPE HeapType</div><div class="ttdoc">The type of memory heap where the new allocation should be placed.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:216</div></div>
</div><!-- fragment --><p>Remember that using resouces that alias in memory requires proper synchronization. You need to issue a special barrier of type <code>D3D12_RESOURCE_BARRIER_TYPE_ALIASING</code>. You also need to treat a resource after aliasing as uninitialized - containing garbage data. For example, if you use <code>res1</code> and then want to use <code>res2</code>, you need to first initialize <code>res2</code> using either Clear, Discard, or Copy to the entire resource.</p>
<p>Additional considerations:</p>
<ul>

View File

@ -1,37 +0,0 @@
<!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><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -1,4 +0,0 @@
var searchData=
[
['waszeroinitialized_162',['WasZeroInitialized',['../class_d3_d12_m_a_1_1_allocation.html#a1b1ef2717beed503fcb3cb7e6a171762',1,'D3D12MA::Allocation']]]
];

View File

@ -76,7 +76,7 @@ $(function() {
<p>Custom callbacks to CPU memory allocation functions.
<a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -142,7 +142,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Parameters of created <a class="el" href="class_d3_d12_m_a_1_1_allocation.html" title="Represents single memory allocation.">D3D12MA::Allocation</a> object. To be used with <a class="el" href="class_d3_d12_m_a_1_1_allocator.html#aa37d6b9fe8ea0864f7a35b9d68e8345a" title="Allocates memory and creates a D3D12 resource (buffer or texture). This is the main allocation functi...">Allocator::CreateResource</a>.
<a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -171,7 +171,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Parameters of created <a class="el" href="class_d3_d12_m_a_1_1_allocator.html" title="Represents main object of this library initialized for particular ID3D12Device.">Allocator</a> object. To be used with <a class="el" href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332" title="Creates new main D3D12MA::Allocator object and returns it through ppAllocator.">CreateAllocator()</a>.
<a href="struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -180,7 +180,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Statistics of current memory usage and available budget, in bytes, for GPU or CPU memory.
<a href="struct_d3_d12_m_a_1_1_budget.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -166,7 +166,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Parameters of created <a class="el" href="class_d3_d12_m_a_1_1_pool.html" title="Custom memory pool.">D3D12MA::Pool</a> object. To be used with <a class="el" href="class_d3_d12_m_a_1_1_allocator.html#aac7b1f6bf53cbf4c4ce2264cb72ca515" title="Creates custom pool.">D3D12MA::Allocator::CreatePool</a>.
<a href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -207,7 +207,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Calculated statistics of memory usage in entire allocator.
<a href="struct_d3_d12_m_a_1_1_stat_info.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -276,7 +276,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>General statistics from the current state of the allocator.
<a href="struct_d3_d12_m_a_1_1_stats.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -121,7 +121,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Parameters of created virtual allocation to be passed to <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c" title="Creates new allocation.">VirtualBlock::Allocate()</a>.
<a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -145,7 +145,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Parameters of an existing virtual allocation, returned by <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html#a287b8f0e455ffc7f302094671f922afb" title="Returns information about an allocation at given offset - its size and custom pointer.">VirtualBlock::GetAllocationInfo()</a>.
<a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -125,7 +125,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -76,7 +76,7 @@ $(function() {
<p>Parameters of created <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html" title="Represents pure allocation algorithm and a data structure with allocations in some memory block,...">D3D12MA::VirtualBlock</a> object to be passed to <a class="el" href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317" title="Creates new D3D12MA::VirtualBlock object and returns it through ppVirtualBlock.">CreateVirtualBlock()</a>.
<a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a>&gt;</code></p>
<p><code>#include &lt;D3D12MemAlloc.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@ -125,7 +125,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_d3_d12_mem_alloc_8h_source.html">D3D12MemAlloc.h</a></li>
<li><a class="el" href="_d3_d12_mem_alloc_8h.html">D3D12MemAlloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->

View File

@ -83,10 +83,10 @@ Creating virtual block</h1>
<div class="line"> </div>
<div class="line"><a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">D3D12MA::VirtualBlock</a> *block;</div>
<div class="line">HRESULT hr = <a class="code" href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317">CreateVirtualBlock</a>(&amp;blockDesc, &amp;block);</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html">D3D12MA::VirtualBlock</a></div><div class="ttdoc">Represents pure allocation algorithm and a data structure with allocations in some memory block,...</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1568</div></div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html">D3D12MA::VirtualBlock</a></div><div class="ttdoc">Represents pure allocation algorithm and a data structure with allocations in some memory block,...</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:939</div></div>
<div class="ttc" id="anamespace_d3_d12_m_a_html_aefde6264e7a88bebe8e193df343af317"><div class="ttname"><a href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317">D3D12MA::CreateVirtualBlock</a></div><div class="ttdeci">HRESULT CreateVirtualBlock(const VIRTUAL_BLOCK_DESC *pDesc, VirtualBlock **ppVirtualBlock)</div><div class="ttdoc">Creates new D3D12MA::VirtualBlock object and returns it through ppVirtualBlock.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">D3D12MA::VIRTUAL_BLOCK_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1509</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html_ac56491679f276a5a9956ed99bc4654e4"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#ac56491679f276a5a9956ed99bc4654e4">D3D12MA::VIRTUAL_BLOCK_DESC::Size</a></div><div class="ttdeci">UINT64 Size</div><div class="ttdoc">Total size of the block.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1515</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html">D3D12MA::VIRTUAL_BLOCK_DESC</a></div><div class="ttdoc">Parameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:880</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c_html_ac56491679f276a5a9956ed99bc4654e4"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#ac56491679f276a5a9956ed99bc4654e4">D3D12MA::VIRTUAL_BLOCK_DESC::Size</a></div><div class="ttdeci">UINT64 Size</div><div class="ttdoc">Total size of the block.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:886</div></div>
</div><!-- fragment --><h1><a class="anchor" id="virtual_allocator_making_virtual_allocations"></a>
Making virtual allocations</h1>
<p><a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html" title="Represents pure allocation algorithm and a data structure with allocations in some memory block,...">D3D12MA::VirtualBlock</a> object contains internal data structure that keeps track of free and occupied regions using the same code as the main D3D12 memory allocator. However, there is no "virtual allocation" object. When you request a new allocation, a <code>UINT64</code> number is returned. It is an offset inside the block where the allocation has been placed, but it also uniquely identifies the allocation within this block.</p>
@ -110,8 +110,8 @@ Making virtual allocations</h1>
<div class="line"> <span class="comment">// Allocation failed - no space for it could be found. Handle this error!</span></div>
<div class="line">}</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_aa57575f1af18461012bde8c4b6f3c56c"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c">D3D12MA::VirtualBlock::Allocate</a></div><div class="ttdeci">HRESULT Allocate(const VIRTUAL_ALLOCATION_DESC *pDesc, UINT64 *pOffset)</div><div class="ttdoc">Creates new allocation.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::VIRTUAL_ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created virtual allocation to be passed to VirtualBlock::Allocate().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1525</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a976b649e45abdd0769da0d79acde4bac"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a976b649e45abdd0769da0d79acde4bac">D3D12MA::VIRTUAL_ALLOCATION_DESC::Size</a></div><div class="ttdeci">UINT64 Size</div><div class="ttdoc">Size of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1530</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html">D3D12MA::VIRTUAL_ALLOCATION_DESC</a></div><div class="ttdoc">Parameters of created virtual allocation to be passed to VirtualBlock::Allocate().</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:896</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_a976b649e45abdd0769da0d79acde4bac"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#a976b649e45abdd0769da0d79acde4bac">D3D12MA::VIRTUAL_ALLOCATION_DESC::Size</a></div><div class="ttdeci">UINT64 Size</div><div class="ttdoc">Size of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:901</div></div>
</div><!-- fragment --><h1><a class="anchor" id="virtual_allocator_deallocation"></a>
Deallocation</h1>
<p>When no longer needed, an allocation can be freed by calling <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html#a02dfae4c0856f22da885a332de7821fa" title="Frees the allocation at given offset.">D3D12MA::VirtualBlock::FreeAllocation</a>. You can only pass to this function the exact offset that was previously returned by <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c" title="Creates new allocation.">D3D12MA::VirtualBlock::Allocate</a> and not any other location within the memory.</p>
@ -146,7 +146,7 @@ Alignment and units</h1>
<div class="line"> </div>
<div class="line">UINT64 allocOffset;</div>
<div class="line">hr = block-&gt;<a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#aa57575f1af18461012bde8c4b6f3c56c">Allocate</a>(&amp;allocDesc, &amp;allocOffset);</div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aaa95e62f2f399339a09dcbb312a42de0"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aaa95e62f2f399339a09dcbb312a42de0">D3D12MA::VIRTUAL_ALLOCATION_DESC::Alignment</a></div><div class="ttdeci">UINT64 Alignment</div><div class="ttdoc">Required alignment of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1535</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c_html_aaa95e62f2f399339a09dcbb312a42de0"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html#aaa95e62f2f399339a09dcbb312a42de0">D3D12MA::VIRTUAL_ALLOCATION_DESC::Alignment</a></div><div class="ttdeci">UINT64 Alignment</div><div class="ttdoc">Required alignment of the allocation.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:906</div></div>
</div><!-- fragment --><p>Alignments of different allocations made from one block may vary. However, if all alignments and sizes are always multiply of some size e.g. 4 B or <code>sizeof(MyDataStruct)</code>, you can express all sizes, alignments, and offsets in multiples of that size instead of individual bytes. It might be more convenient, but you need to make sure to use this new unit consistently in all the places:</p>
<ul>
<li><a class="el" href="struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html#ac56491679f276a5a9956ed99bc4654e4" title="Total size of the block.">D3D12MA::VIRTUAL_BLOCK_DESC::Size</a></li>
@ -161,9 +161,9 @@ Statistics</h1>
<div class="line">printf(<span class="stringliteral">&quot;My virtual block has %llu bytes used by %u virtual allocations\n&quot;</span>,</div>
<div class="line"> statInfo.<a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7">UsedBytes</a>, statInfo.<a class="code" href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e">AllocationCount</a>);</div>
<div class="ttc" id="aclass_d3_d12_m_a_1_1_virtual_block_html_a039ee8426818d0126cf7f44c1c658526"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a039ee8426818d0126cf7f44c1c658526">D3D12MA::VirtualBlock::CalculateStats</a></div><div class="ttdeci">void CalculateStats(StatInfo *pInfo) const</div><div class="ttdoc">Retrieves statistics from the current state of the block.</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html">D3D12MA::StatInfo</a></div><div class="ttdoc">Calculated statistics of memory usage in entire allocator.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1207</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a2f50de812e296b71594174ff67bbac6e"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e">D3D12MA::StatInfo::AllocationCount</a></div><div class="ttdeci">UINT AllocationCount</div><div class="ttdoc">Number of D3D12MA::Allocation objects allocated.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1211</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_ac4f3379ea88025e4ccf5880fab2699f7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7">D3D12MA::StatInfo::UsedBytes</a></div><div class="ttdeci">UINT64 UsedBytes</div><div class="ttdoc">Total number of bytes occupied by all allocations.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:1215</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html">D3D12MA::StatInfo</a></div><div class="ttdoc">Calculated statistics of memory usage in entire allocator.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:578</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_a2f50de812e296b71594174ff67bbac6e"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e">D3D12MA::StatInfo::AllocationCount</a></div><div class="ttdeci">UINT AllocationCount</div><div class="ttdoc">Number of D3D12MA::Allocation objects allocated.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:582</div></div>
<div class="ttc" id="astruct_d3_d12_m_a_1_1_stat_info_html_ac4f3379ea88025e4ccf5880fab2699f7"><div class="ttname"><a href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7">D3D12MA::StatInfo::UsedBytes</a></div><div class="ttdeci">UINT64 UsedBytes</div><div class="ttdoc">Total number of bytes occupied by all allocations.</div><div class="ttdef"><b>Definition:</b> D3D12MemAlloc.h:586</div></div>
</div><!-- fragment --><p>You can also request a full list of allocations and free regions as a string in JSON format by calling <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html#a828a27070bfa762cae796d4c8f2ef703" title="Builds and returns statistics as a string in JSON format, including the list of allocations with thei...">D3D12MA::VirtualBlock::BuildStatsString</a>. Returned string must be later freed using <a class="el" href="class_d3_d12_m_a_1_1_virtual_block.html#a6f78ddaa7da194e239089e52093e68a9" title="Frees memory of a string returned from VirtualBlock::BuildStatsString.">D3D12MA::VirtualBlock::FreeStatsString</a>. The format of this string may differ from the one returned by the main D3D12 allocator, but it is similar.</p>
<h1><a class="anchor" id="virtual_allocator_additional_considerations"></a>
Additional considerations</h1>

File diff suppressed because it is too large Load Diff

View File

@ -1103,7 +1103,7 @@ USE_HTAGS = NO
# See also: Section \class.
# The default value is: YES.
VERBATIM_HEADERS = YES
VERBATIM_HEADERS = NO
# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the