blob: ae851b7734c7a0fdcb09078532a61f23c41cd55d [file] [log] [blame]
<!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="l00684"></a><span class="lineno"> 684</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="l00685"></a><span class="lineno"> 685</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="l00686"></a><span class="lineno"> 686</span>&#160;<span class="preprocessor">#ifndef D3D12MA_D3D12_HEADERS_ALREADY_INCLUDED</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor"> #include &lt;d3d12.h&gt;</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor"> #include &lt;dxgi1_4.h&gt;</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; </div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</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="l00692"></a><span class="lineno"> 692</span>&#160;<span class="preprocessor">#ifndef D3D12MA_DXGI_1_4</span></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="preprocessor"> #ifdef __IDXGIAdapter3_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="preprocessor"> #define D3D12MA_DXGI_1_4 1</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="_d3_d12_mem_alloc_8h.html#aa623643886b8481adb32017e5c748b50"> 696</a></span>&#160;<span class="preprocessor"> #define D3D12MA_DXGI_1_4 0</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; </div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</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="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment">D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT or D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</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="l00704"></a><span class="lineno"> 704</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="l00705"></a><span class="lineno"> 705</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="comment">#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 0</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="comment"> Disables small texture alignment.</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 1</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="comment"> Enables conservative algorithm that will use small alignment only for some textures</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="comment"> that are surely known to support it.</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="comment">#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 2</span></div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</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="l00713"></a><span class="lineno"> 713</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="l00714"></a><span class="lineno"> 714</span>&#160;<span class="comment"> error #721 on call to ID3D12Device::GetResourceAllocationInfo, which you should just</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;<span class="comment"> ignore.</span></div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor">#ifndef D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"><a class="line" href="_d3_d12_mem_alloc_8h.html#ad04069a2e2bbc53b7d65f85a04a2dcbc"> 718</a></span>&#160;<span class="preprocessor"> #define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT 1</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; </div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; </div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="preprocessor">#define D3D12MA_CLASS_NO_COPY(className) \</span></div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="preprocessor"> private: \</span></div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor"> className(const className&amp;) = delete; \</span></div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor"> className(className&amp;&amp;) = delete; \</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="preprocessor"> className&amp; operator=(const className&amp;) = delete; \</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor"> className&amp; operator=(className&amp;&amp;) = delete;</span></div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; </div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="comment">// To be used with MAKE_HRESULT to define custom error codes.</span></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="preprocessor">#define FACILITY_D3D12MA 3542</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; </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"><a class="line" href="namespace_d3_d12_m_a.html"> 735</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="l00736"></a><span class="lineno"> 736</span>&#160;{</div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; </div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="keyword">class </span>AllocatorPimpl;</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="keyword">class </span>PoolPimpl;</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="keyword">class </span>NormalBlock;</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="keyword">class </span>BlockVector;</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="keyword">class </span>CommittedAllocationList;</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="keyword">class </span>JsonWriter;</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="keyword">class </span>VirtualBlockPimpl;</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; </div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</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="l00749"></a><span class="lineno"> 749</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="l00750"></a><span class="lineno"> 750</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="l00751"></a><span class="lineno"> 751</span>&#160; </div>
<div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a27ddd7db5650bc1d2afa009bebb6a53b"> 753</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="l00759"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a3a473f88974f9312dbb6ff9f18228d76"> 759</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="l00760"></a><span class="lineno"> 760</span>&#160; </div>
<div class="line"><a name="l00762"></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"> 762</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="l00763"></a><span class="lineno"> 763</span>&#160;{</div>
<div class="line"><a name="l00765"></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"> 765</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="l00767"></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"> 767</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="l00769"></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"> 769</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="l00770"></a><span class="lineno"> 770</span>&#160;};</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; </div>
<div class="line"><a name="l00773"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e"> 773</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="l00774"></a><span class="lineno"> 774</span>&#160;{</div>
<div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea0bf578b096d6ea73cea86b031541733e"> 776</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="l00777"></a><span class="lineno"> 777</span>&#160; </div>
<div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea661a5472dba3dcecc5a2cc92afd25675"> 783</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="l00784"></a><span class="lineno"> 784</span>&#160; </div>
<div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645ea9a52c6ae694eadcd20896091e77c0628"> 794</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="l00795"></a><span class="lineno"> 795</span>&#160; </div>
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645eab374417c1f22a833ead268a6c21424e6"> 799</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="l00800"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a4dede482eac9111d56d4b1b35eb13ae4"> 800</a></span>&#160;} <a class="code" href="namespace_d3_d12_m_a.html#abbad31a7e0b3d09d77f3fb704b77645e">ALLOCATION_FLAGS</a>;</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; </div>
<div class="line"><a name="l00803"></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"> 803</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="l00804"></a><span class="lineno"> 804</span>&#160;{</div>
<div class="line"><a name="l00806"></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"> 806</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="l00813"></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"> 813</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="l00829"></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"> 829</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="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#ab06b85f3cf3254f855b29264477e3934"> 835</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="l00836"></a><span class="lineno"> 836</span>&#160;};</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; </div>
<div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html"> 852</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a></div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00860"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#ad7e3a855b92e77be6c808eacdbb746dc"> 860</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocation.html#ad7e3a855b92e77be6c808eacdbb746dc">Release</a>();</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; </div>
<div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a47be9557d441797b65de177a3d5cdf60"> 870</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="l00871"></a><span class="lineno"> 871</span>&#160; </div>
<div class="line"><a name="l00880"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a92c2fb6f22b28817eb83a59407d7dd30"> 880</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="l00881"></a><span class="lineno"> 881</span>&#160; </div>
<div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a649a3bb1be1a981cbf3f61f3819addca"> 886</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="l00887"></a><span class="lineno"> 887</span>&#160; </div>
<div class="line"><a name="l00892"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#ac15798741797425b4e9e67bfc991e06b"> 892</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="l00893"></a><span class="lineno"> 893</span>&#160; </div>
<div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#af9e643276b577aa7f21937f75d4b82ac"> 901</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="l00902"></a><span class="lineno"> 902</span>&#160; </div>
<div class="line"><a name="l00909"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a65fab0c479df1b6b72c9300e68dc6770"> 909</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="l00910"></a><span class="lineno"> 910</span>&#160; </div>
<div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a1b1ef2717beed503fcb3cb7e6a171762"> 928</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="l00929"></a><span class="lineno"> 929</span>&#160; </div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00931"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a72b45054123ec465caca5531f5d17998"> 931</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="l00932"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a0a6fda50a9ecf4658ac175497a72152b"> 932</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="l00933"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a49c0b7395d40df48949fc68599058a06"> 933</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="l00934"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#aae4c97f0734d50e5a4697557f566a83b"> 934</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="l00935"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a3b9c2e32309e3855528dfe2dda5db549"> 935</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="l00936"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a968f13f23d03e50cc50b87835b6d5a85"> 936</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="l00937"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#afcc5dff8e6d4a24365ab9c92865d1bc3"> 937</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="l00938"></a><span class="lineno"> 938</span>&#160; </div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keyword">enum</span> Type</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; TYPE_COMMITTED,</div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; TYPE_PLACED,</div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; TYPE_HEAP,</div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; TYPE_COUNT</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; };</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; </div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</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="l00948"></a><span class="lineno"> 948</span>&#160; UINT64 m_Size;</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; ID3D12Resource* m_Resource;</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; UINT m_CreationFrameIndex;</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordtype">wchar_t</span>* m_Name;</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; </div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keyword">union</span></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">struct</span></div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div>
<div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#ab1f59d849add2cdbfbebf4eb98db5c97"> 957</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="l00958"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#adc3ac89758a915a409e047f9b89aa160"> 958</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="l00959"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a6f31560bc71451410a2a907b6d81b48f"> 959</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="l00960"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a5b3d5b189021973d9934cbe9f5f266f0"> 960</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="l00961"></a><span class="lineno"> 961</span>&#160; </div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keyword">struct</span></div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; {</div>
<div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a73c55decc2485b907f678d95aac24b6b"> 964</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="l00965"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a413aec64eba9f4ec57e912511591b3b8"> 965</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="l00966"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a35fca5f0b1c5eb46d0bb33cdb7ccc198"> 966</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="l00967"></a><span class="lineno"> 967</span>&#160; </div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keyword">struct</span></div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; {</div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="comment">// Beginning must be compatible with m_Committed.</span></div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</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="l00972"></a><span class="lineno"> 972</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="l00973"></a><span class="lineno"> 973</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="l00974"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#a4e7380aabcac5b0a1cd833c5c84459c6"> 974</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="l00975"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocation.html#adc7cf6224b7ca6205d1099a013f40424"> 975</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="l00976"></a><span class="lineno"> 976</span>&#160; };</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; </div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keyword">struct </span>PackedData</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; PackedData() :</div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; m_Type(0), m_ResourceDimension(0), m_ResourceFlags(0), m_TextureLayout(0), m_WasZeroInitialized(0) { }</div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; </div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; Type GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (Type)m_Type; }</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</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="l00986"></a><span class="lineno"> 986</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="l00987"></a><span class="lineno"> 987</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="l00988"></a><span class="lineno"> 988</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="l00989"></a><span class="lineno"> 989</span>&#160; </div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordtype">void</span> SetType(Type type);</div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordtype">void</span> SetResourceDimension(D3D12_RESOURCE_DIMENSION resourceDimension);</div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordtype">void</span> SetResourceFlags(D3D12_RESOURCE_FLAGS resourceFlags);</div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordtype">void</span> SetTextureLayout(D3D12_TEXTURE_LAYOUT textureLayout);</div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordtype">void</span> SetWasZeroInitialized(BOOL wasZeroInitialized) { m_WasZeroInitialized = wasZeroInitialized ? 1 : 0; }</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">private</span>:</div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; UINT m_Type : 2; <span class="comment">// enum Type</span></div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; UINT m_ResourceDimension : 3; <span class="comment">// enum D3D12_RESOURCE_DIMENSION</span></div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; UINT m_ResourceFlags : 24; <span class="comment">// flags D3D12_RESOURCE_FLAGS</span></div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; UINT m_TextureLayout : 9; <span class="comment">// enum D3D12_TEXTURE_LAYOUT</span></div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; UINT m_WasZeroInitialized : 1; <span class="comment">// BOOL</span></div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; } m_PackedData;</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; </div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</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="l01005"></a><span class="lineno"> 1005</span>&#160; ~Allocation();</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</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="l01007"></a><span class="lineno"> 1007</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="l01008"></a><span class="lineno"> 1008</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="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> D3D12_RESOURCE_DESC_T&gt;</div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</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="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordtype">void</span> FreeName();</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; </div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; D3D12MA_CLASS_NO_COPY(Allocation)</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;};</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; </div>
<div class="line"><a name="l01017"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html"> 1017</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="l01018"></a><span class="lineno"> 1018</span>&#160;{</div>
<div class="line"><a name="l01024"></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"> 1024</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="l01035"></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"> 1035</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="l01042"></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"> 1042</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="l01047"></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"> 1047</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="l01055"></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"> 1055</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="l01060"></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"> 1060</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="l01061"></a><span class="lineno"> 1061</span>&#160;};</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; </div>
<div class="line"><a name="l01071"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html"> 1071</a></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="l01072"></a><span class="lineno"> 1072</span>&#160;{</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01079"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a5e6fe1e7fbe0ebe394d63d22715535c6"> 1079</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_pool.html#a5e6fe1e7fbe0ebe394d63d22715535c6">Release</a>();</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; </div>
<div class="line"><a name="l01085"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#aaab59af46d922d6b81fce8d8be987028"> 1085</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="l01086"></a><span class="lineno"> 1086</span>&#160; </div>
<div class="line"><a name="l01089"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a8e4cc5fb13aa33398d391296336c457e"> 1089</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="l01090"></a><span class="lineno"> 1090</span>&#160; </div>
<div class="line"><a name="l01098"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a20617cfec0461cf8c2b92115b5140c5b"> 1098</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="l01099"></a><span class="lineno"> 1099</span>&#160; </div>
<div class="line"><a name="l01106"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a63c91d92a9ca48b98866a5cc1aea333b"> 1106</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="l01107"></a><span class="lineno"> 1107</span>&#160; </div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01109"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a4f7f62a2e2ba965a2aec21613708b95b"> 1109</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="l01110"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a72b45054123ec465caca5531f5d17998"> 1110</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="l01111"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_pool.html#a968f13f23d03e50cc50b87835b6d5a85"> 1111</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="l01112"></a><span class="lineno"> 1112</span>&#160; </div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; PoolPimpl* m_Pimpl;</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; </div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</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="l01116"></a><span class="lineno"> 1116</span>&#160; ~<a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>();</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; </div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</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="l01119"></a><span class="lineno"> 1119</span>&#160;};</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; </div>
<div class="line"><a name="l01122"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916"> 1122</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="l01123"></a><span class="lineno"> 1123</span>&#160;{</div>
<div class="line"><a name="l01125"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a2fb30967b492c27823a80b5de3aea26f"> 1125</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="l01126"></a><span class="lineno"> 1126</span>&#160; </div>
<div class="line"><a name="l01134"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a1b06bb21df006f76a9ed1bc41838bc52"> 1134</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="l01135"></a><span class="lineno"> 1135</span>&#160; </div>
<div class="line"><a name="l01140"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916a068863dc0538ff4ea153b046b31e94fb"> 1140</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="l01141"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#a5d0bdfc28b81b4a1ee40c9c3ae1b1449"> 1141</a></span>&#160;} <a class="code" href="namespace_d3_d12_m_a.html#ad5ae5a5e42b878f2e18ab5d1fbfb9916">ALLOCATOR_FLAGS</a>;</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; </div>
<div class="line"><a name="l01144"></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"> 1144</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="l01145"></a><span class="lineno"> 1145</span>&#160;{</div>
<div class="line"><a name="l01147"></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"> 1147</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="l01148"></a><span class="lineno"> 1148</span>&#160; </div>
<div class="line"><a name="l01153"></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"> 1153</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="l01154"></a><span class="lineno"> 1154</span>&#160; </div>
<div class="line"><a name="l01159"></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"> 1159</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="l01160"></a><span class="lineno"> 1160</span>&#160; </div>
<div class="line"><a name="l01165"></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"> 1165</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="l01166"></a><span class="lineno"> 1166</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#abf9a9f87f0ffea52816efd363c5fcd7b"> 1171</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="l01172"></a><span class="lineno"> 1172</span>&#160;};</div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; </div>
<div class="line"><a name="l01177"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#abad7f40135648f8d0871be36f2919982"> 1177</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="l01178"></a><span class="lineno"> 1178</span>&#160; </div>
<div class="line"><a name="l01182"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html"> 1182</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="l01183"></a><span class="lineno"> 1183</span>&#160;{</div>
<div class="line"><a name="l01185"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a8284ef3310c9de1600071285448b62c9"> 1185</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="l01187"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a2f50de812e296b71594174ff67bbac6e"> 1187</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="l01189"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#adfc245a84fb8fba7936b67bd879ffefb"> 1189</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="l01191"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#ac4f3379ea88025e4ccf5880fab2699f7"> 1191</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="l01193"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a1df359c2e9ad4c7763122d1ccd86b168"> 1193</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="l01194"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a9d9e69e9cad231fea3a41b06e7eeee35"> 1194</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="l01195"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#acf3339540ff01d93b6a6f5dc68d83f60"> 1195</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="l01196"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#acd3c6f72ffb61a8d39b65a3dab317eb6"> 1196</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="l01197"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a180be027720ca98ff3a7470e18a79622"> 1197</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="l01198"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a249d7969bf3f836c13a0f111d6ed886d"> 1198</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="l01199"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stat_info.html#a1337269f8777b6b5176c72ca410fbe36"> 1199</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="l01200"></a><span class="lineno"> 1200</span>&#160;};</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; </div>
<div class="line"><a name="l01205"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stats.html"> 1205</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="l01206"></a><span class="lineno"> 1206</span>&#160;{</div>
<div class="line"><a name="l01208"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stats.html#ada54d9f0385fcdba491adcfd91f29c28"> 1208</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="l01213"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_stats.html#a6e433945a118a34f7f6565811e62d718"> 1213</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="l01214"></a><span class="lineno"> 1214</span>&#160;};</div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; </div>
<div class="line"><a name="l01218"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html"> 1218</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="l01219"></a><span class="lineno"> 1219</span>&#160;{</div>
<div class="line"><a name="l01222"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#ad1ad5d8521993cb623255ee1709a1c4c"> 1222</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="l01223"></a><span class="lineno"> 1223</span>&#160; </div>
<div class="line"><a name="l01230"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#abcb043908bd528852f8ef3867ad76099"> 1230</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="l01231"></a><span class="lineno"> 1231</span>&#160; </div>
<div class="line"><a name="l01240"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#a77a8c9e32d6602f95b7d1c285cddd253"> 1240</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="l01241"></a><span class="lineno"> 1241</span>&#160; </div>
<div class="line"><a name="l01251"></a><span class="lineno"><a class="line" href="struct_d3_d12_m_a_1_1_budget.html#a326515f08d89ee2e31dcfdd5c1e8ac71"> 1251</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="l01252"></a><span class="lineno"> 1252</span>&#160;};</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; </div>
<div class="line"><a name="l01263"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html"> 1263</a></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="l01264"></a><span class="lineno"> 1264</span>&#160;{</div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01271"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aefff328977ae1030a2ac6db5a148294b"> 1271</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_allocator.html#aefff328977ae1030a2ac6db5a148294b">Release</a>();</div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; </div>
<div class="line"><a name="l01274"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a8ce95f85e5f2a1d41b81d676b21c04ae"> 1274</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="l01282"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a9e742884bd45dd7f01193d13fcd05af0"> 1282</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="l01290"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a08210561b92c4bd7ede9dd7beba4bb80"> 1290</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="l01291"></a><span class="lineno"> 1291</span>&#160; </div>
<div class="line"><a name="l01320"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aa37d6b9fe8ea0864f7a35b9d68e8345a"> 1320</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="l01321"></a><span class="lineno"> 1321</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="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC* pResourceDesc,</div>
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation,</div>
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; </div>
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="preprocessor">#ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01337"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#afa0de85c76ce1f86fe9b0bd94dad5e8b"> 1337</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="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; ID3D12ProtectedResourceSession *pProtectedSession,</div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation,</div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// #ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; </div>
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;<span class="preprocessor">#ifdef __ID3D12Device8_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01355"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#ad9616c8e8e59ede99214b9c7cea97e5a"> 1355</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="l01356"></a><span class="lineno"> 1356</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="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC1* pResourceDesc,</div>
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; ID3D12ProtectedResourceSession *pProtectedSession,</div>
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation,</div>
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// #ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; </div>
<div class="line"><a name="l01385"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#acb8a10a5ea30171ce60128286aec5ee2"> 1385</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="l01386"></a><span class="lineno"> 1386</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="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_ALLOCATION_INFO* pAllocInfo,</div>
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation);</div>
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; </div>
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="preprocessor">#ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01398"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a6c1fbc673e2559ead34dbf039dd47d60"> 1398</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="l01399"></a><span class="lineno"> 1399</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="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_ALLOCATION_INFO* pAllocInfo,</div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; ID3D12ProtectedResourceSession *pProtectedSession,</div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>** ppAllocation);</div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// #ifdef __ID3D12Device4_INTERFACE_DEFINED__</span></div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; </div>
<div class="line"><a name="l01427"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#ab45536f92410aedb7be44ea36b1b4717"> 1427</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="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_allocation.html">Allocation</a>* pAllocation,</div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; UINT64 AllocationLocalOffset,</div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="keyword">const</span> D3D12_RESOURCE_DESC* pResourceDesc,</div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; D3D12_RESOURCE_STATES InitialResourceState,</div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <span class="keyword">const</span> D3D12_CLEAR_VALUE *pOptimizedClearValue,</div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; REFIID riidResource,</div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordtype">void</span>** ppvResource);</div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; </div>
<div class="line"><a name="l01438"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aac7b1f6bf53cbf4c4ce2264cb72ca515"> 1438</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="l01439"></a><span class="lineno"> 1439</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="l01440"></a><span class="lineno"> 1440</span>&#160; <a class="code" href="class_d3_d12_m_a_1_1_pool.html">Pool</a>** ppPool);</div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; </div>
<div class="line"><a name="l01446"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a468ba0c93121eaaee402b08775f1dd11"> 1446</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="l01447"></a><span class="lineno"> 1447</span>&#160; </div>
<div class="line"><a name="l01450"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#addedcd0067319ec566042f5cb520843b"> 1450</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="l01451"></a><span class="lineno"> 1451</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#abe927bd3ad6930111d4d9408515b9601"> 1463</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="l01464"></a><span class="lineno"> 1464</span>&#160; </div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; </div>
<div class="line"><a name="l01469"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a29716b3084916abed7793bf2ec4b65db"> 1469</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="l01470"></a><span class="lineno"> 1470</span>&#160; </div>
<div class="line"><a name="l01472"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a8392663494384c16d8bfa12b827b4f9c"> 1472</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="l01473"></a><span class="lineno"> 1473</span>&#160; </div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a7cc10fd0b328a512165cf636cb795090"> 1475</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="l01476"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#a968f13f23d03e50cc50b87835b6d5a85"> 1476</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="l01477"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_allocator.html#aaa45caad0db0173735281fcdf9aa5e8b"> 1477</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="l01478"></a><span class="lineno"> 1478</span>&#160; </div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</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="l01480"></a><span class="lineno"> 1480</span>&#160; ~<a class="code" href="class_d3_d12_m_a_1_1_allocator.html">Allocator</a>();</div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; </div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; AllocatorPimpl* m_Pimpl;</div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; </div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</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="l01485"></a><span class="lineno"> 1485</span>&#160;};</div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; </div>
<div class="line"><a name="l01488"></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"> 1488</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="l01489"></a><span class="lineno"> 1489</span>&#160;{</div>
<div class="line"><a name="l01495"></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"> 1495</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="l01500"></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"> 1500</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="l01501"></a><span class="lineno"> 1501</span>&#160;};</div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; </div>
<div class="line"><a name="l01504"></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"> 1504</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="l01505"></a><span class="lineno"> 1505</span>&#160;{</div>
<div class="line"><a name="l01510"></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"> 1510</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="l01515"></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"> 1515</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="l01520"></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"> 1520</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="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___i_n_f_o.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___i_n_f_o.html">VIRTUAL_ALLOCATION_INFO</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___i_n_f_o.html#ab8ede12141594a69230afeb34664fc34"> 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___i_n_f_o.html#ab8ede12141594a69230afeb34664fc34">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___i_n_f_o.html#a4b23ad296ab6cd425fb3b6c83c13b4ff"> 1535</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="l01536"></a><span class="lineno"> 1536</span>&#160;};</div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; </div>
<div class="line"><a name="l01546"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html"> 1546</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a></div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;{</div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l01553"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a24111ca907ad9efae25cf4858ff6b0b0"> 1553</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html#a24111ca907ad9efae25cf4858ff6b0b0">Release</a>();</div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; </div>
<div class="line"><a name="l01557"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a7b23fd2da6f0343095fb14b31395678b"> 1557</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="l01560"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a287b8f0e455ffc7f302094671f922afb"> 1560</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="l01561"></a><span class="lineno"> 1561</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#aa57575f1af18461012bde8c4b6f3c56c"> 1567</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="l01570"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a02dfae4c0856f22da885a332de7821fa"> 1570</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="l01573"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#ae22b18c0b7c31b44c1d740f886369189"> 1573</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="l01576"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a0af4aec3d2efc913ee43b0725e8a0289"> 1576</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="l01577"></a><span class="lineno"> 1577</span>&#160; </div>
<div class="line"><a name="l01580"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a039ee8426818d0126cf7f44c1c658526"> 1580</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="l01581"></a><span class="lineno"> 1581</span>&#160; </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#a828a27070bfa762cae796d4c8f2ef703"> 1585</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="l01586"></a><span class="lineno"> 1586</span>&#160; </div>
<div class="line"><a name="l01589"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a6f78ddaa7da194e239089e52093e68a9"> 1589</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="l01590"></a><span class="lineno"> 1590</span>&#160; </div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l01592"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#ab8bb16e20c691720aad26ecbf105aa6f"> 1592</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="l01593"></a><span class="lineno"><a class="line" href="class_d3_d12_m_a_1_1_virtual_block.html#a968f13f23d03e50cc50b87835b6d5a85"> 1593</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="l01594"></a><span class="lineno"> 1594</span>&#160; </div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; VirtualBlockPimpl* m_Pimpl;</div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; </div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</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="l01598"></a><span class="lineno"> 1598</span>&#160; ~<a class="code" href="class_d3_d12_m_a_1_1_virtual_block.html">VirtualBlock</a>();</div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; </div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</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="l01601"></a><span class="lineno"> 1601</span>&#160;};</div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; </div>
<div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#aa341b796fdffb16c976e659ccce80332"> 1607</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="l01608"></a><span class="lineno"> 1608</span>&#160; </div>
<div class="line"><a name="l01613"></a><span class="lineno"><a class="line" href="namespace_d3_d12_m_a.html#aefde6264e7a88bebe8e193df343af317"> 1613</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="l01614"></a><span class="lineno"> 1614</span>&#160; </div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;} <span class="comment">// namespace D3D12MA</span></div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; </div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</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="l01619"></a><span class="lineno"> 1619</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:853</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:932</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:928</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:935</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:965</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:933</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:974</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:886</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:909</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:959</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:931</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:964</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:880</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:934</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:957</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_ad7e3a855b92e77be6c808eacdbb746dc"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocation.html#ad7e3a855b92e77be6c808eacdbb746dc">D3D12MA::Allocation::Release</a></div><div class="ttdeci">void Release()</div><div class="ttdoc">Deletes this object.</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:958</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:937</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:1264</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_aefff328977ae1030a2ac6db5a148294b"><div class="ttname"><a href="class_d3_d12_m_a_1_1_allocator.html#aefff328977ae1030a2ac6db5a148294b">D3D12MA::Allocator::Release</a></div><div class="ttdeci">void Release()</div><div class="ttdoc">Deletes this object.</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:1072</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_a5e6fe1e7fbe0ebe394d63d22715535c6"><div class="ttname"><a href="class_d3_d12_m_a_1_1_pool.html#a5e6fe1e7fbe0ebe394d63d22715535c6">D3D12MA::Pool::Release</a></div><div class="ttdeci">void Release()</div><div class="ttdoc">Deletes pool object, frees D3D12 heaps (memory blocks) managed by it. Allocations and resources must ...</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:1110</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:1547</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_a24111ca907ad9efae25cf4858ff6b0b0"><div class="ttname"><a href="class_d3_d12_m_a_1_1_virtual_block.html#a24111ca907ad9efae25cf4858ff6b0b0">D3D12MA::VirtualBlock::Release</a></div><div class="ttdeci">void Release()</div><div class="ttdoc">Destroys this object and frees it from memory.</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:736</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:753</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:759</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:1177</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:774</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:776</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:783</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:794</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:799</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:1123</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:1140</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:1134</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:1125</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:763</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:767</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:765</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:769</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:804</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:806</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:829</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:813</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:835</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:1145</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:1165</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:1159</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: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_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:1147</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:1153</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:1219</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:1251</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:1240</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:1230</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:1222</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:1018</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:1024</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:1060</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:1035</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:1047</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:1055</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:1042</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:1183</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:1199</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:1197</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:1193</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:1198</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:1187</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:1185</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:1194</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:1191</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:1196</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:1195</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:1189</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:1206</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:1213</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:1208</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:1505</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:1510</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:1515</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:1520</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: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___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: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___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:1530</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:1489</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:1500</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:1495</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>