Diligent Engine  v.2.4.g
d3dx12_win.h
Go to the documentation of this file.
1 //
3 // Copyright (C) Microsoft Corporation. All Rights Reserved.
4 //
5 // File: d3dx12.h
6 // Content: D3DX12 utility library
7 //
9 
10 #ifndef __D3DX12_H__
11 #define __D3DX12_H__
12 
13 #include "d3d12.h"
14 
15 #if defined(__cplusplus)
16 
18 {};
19 extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
20 
21 //------------------------------------------------------------------------------------------------
22 inline bool operator==(const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r)
23 {
24  return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
25  l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
26 }
27 
28 //------------------------------------------------------------------------------------------------
29 inline bool operator!=(const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r)
30 {
31  return !(l == r);
32 }
33 
34 //------------------------------------------------------------------------------------------------
35 struct CD3DX12_RECT : public D3D12_RECT
36 {
38  {}
39  explicit CD3DX12_RECT(const D3D12_RECT& o) :
40  D3D12_RECT(o)
41  {}
42  explicit CD3DX12_RECT(
43  LONG Left,
44  LONG Top,
45  LONG Right,
46  LONG Bottom)
47  {
48  left = Left;
49  top = Top;
50  right = Right;
51  bottom = Bottom;
52  }
54  operator const D3D12_RECT&() const { return *this; }
55 };
56 
57 //------------------------------------------------------------------------------------------------
58 struct CD3DX12_BOX : public D3D12_BOX
59 {
61  {}
62  explicit CD3DX12_BOX(const D3D12_BOX& o) :
63  D3D12_BOX(o)
64  {}
65  explicit CD3DX12_BOX(
66  LONG Left,
67  LONG Right)
68  {
69  left = Left;
70  top = 0;
71  front = 0;
72  right = Right;
73  bottom = 1;
74  back = 1;
75  }
76  explicit CD3DX12_BOX(
77  LONG Left,
78  LONG Top,
79  LONG Right,
80  LONG Bottom)
81  {
82  left = Left;
83  top = Top;
84  front = 0;
85  right = Right;
86  bottom = Bottom;
87  back = 1;
88  }
89  explicit CD3DX12_BOX(
90  LONG Left,
91  LONG Top,
92  LONG Front,
93  LONG Right,
94  LONG Bottom,
95  LONG Back)
96  {
97  left = Left;
98  top = Top;
99  front = Front;
100  right = Right;
101  bottom = Bottom;
102  back = Back;
103  }
105  operator const D3D12_BOX&() const { return *this; }
106 };
107 inline bool operator==(const D3D12_BOX& l, const D3D12_BOX& r)
108 {
109  return l.left == r.left && l.top == r.top && l.front == r.front &&
110  l.right == r.right && l.bottom == r.bottom && l.back == r.back;
111 }
112 inline bool operator!=(const D3D12_BOX& l, const D3D12_BOX& r)
113 {
114  return !(l == r);
115 }
116 
117 //------------------------------------------------------------------------------------------------
118 struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
119 {
121  {}
122  explicit CD3DX12_DEPTH_STENCIL_DESC(const D3D12_DEPTH_STENCIL_DESC& o) :
123  D3D12_DEPTH_STENCIL_DESC(o)
124  {}
126  {
127  DepthEnable = TRUE;
128  DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
129  DepthFunc = D3D12_COMPARISON_FUNC_LESS;
130  StencilEnable = FALSE;
131  StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
132  StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
133  const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
134  {D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS};
135  FrontFace = defaultStencilOp;
136  BackFace = defaultStencilOp;
137  }
139  BOOL depthEnable,
140  D3D12_DEPTH_WRITE_MASK depthWriteMask,
141  D3D12_COMPARISON_FUNC depthFunc,
142  BOOL stencilEnable,
143  UINT8 stencilReadMask,
144  UINT8 stencilWriteMask,
145  D3D12_STENCIL_OP frontStencilFailOp,
146  D3D12_STENCIL_OP frontStencilDepthFailOp,
147  D3D12_STENCIL_OP frontStencilPassOp,
148  D3D12_COMPARISON_FUNC frontStencilFunc,
149  D3D12_STENCIL_OP backStencilFailOp,
150  D3D12_STENCIL_OP backStencilDepthFailOp,
151  D3D12_STENCIL_OP backStencilPassOp,
152  D3D12_COMPARISON_FUNC backStencilFunc)
153  {
154  DepthEnable = depthEnable;
155  DepthWriteMask = depthWriteMask;
156  DepthFunc = depthFunc;
157  StencilEnable = stencilEnable;
158  StencilReadMask = stencilReadMask;
159  StencilWriteMask = stencilWriteMask;
160  FrontFace.StencilFailOp = frontStencilFailOp;
161  FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
162  FrontFace.StencilPassOp = frontStencilPassOp;
163  FrontFace.StencilFunc = frontStencilFunc;
164  BackFace.StencilFailOp = backStencilFailOp;
165  BackFace.StencilDepthFailOp = backStencilDepthFailOp;
166  BackFace.StencilPassOp = backStencilPassOp;
167  BackFace.StencilFunc = backStencilFunc;
168  }
170  operator const D3D12_DEPTH_STENCIL_DESC&() const { return *this; }
171 };
172 
173 //------------------------------------------------------------------------------------------------
174 struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
175 {
177  {}
178  explicit CD3DX12_BLEND_DESC(const D3D12_BLEND_DESC& o) :
179  D3D12_BLEND_DESC(o)
180  {}
182  {
183  AlphaToCoverageEnable = FALSE;
184  IndependentBlendEnable = FALSE;
185  const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
186  {
187  FALSE,
188  FALSE,
189  D3D12_BLEND_ONE,
190  D3D12_BLEND_ZERO,
191  D3D12_BLEND_OP_ADD,
192  D3D12_BLEND_ONE,
193  D3D12_BLEND_ZERO,
194  D3D12_BLEND_OP_ADD,
195  D3D12_LOGIC_OP_NOOP,
196  D3D12_COLOR_WRITE_ENABLE_ALL,
197  };
198  for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
199  RenderTarget[i] = defaultRenderTargetBlendDesc;
200  }
202  operator const D3D12_BLEND_DESC&() const { return *this; }
203 };
204 
205 //------------------------------------------------------------------------------------------------
206 struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
207 {
209  {}
210  explicit CD3DX12_RASTERIZER_DESC(const D3D12_RASTERIZER_DESC& o) :
211  D3D12_RASTERIZER_DESC(o)
212  {}
214  {
215  FillMode = D3D12_FILL_MODE_SOLID;
216  CullMode = D3D12_CULL_MODE_BACK;
217  FrontCounterClockwise = FALSE;
218  DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
219  DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
220  SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
221  DepthClipEnable = TRUE;
222  MultisampleEnable = FALSE;
223  AntialiasedLineEnable = FALSE;
224  ForcedSampleCount = 0;
225  ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
226  }
228  D3D12_FILL_MODE fillMode,
229  D3D12_CULL_MODE cullMode,
230  BOOL frontCounterClockwise,
231  INT depthBias,
232  FLOAT depthBiasClamp,
233  FLOAT slopeScaledDepthBias,
234  BOOL depthClipEnable,
235  BOOL multisampleEnable,
236  BOOL antialiasedLineEnable,
237  UINT forcedSampleCount,
238  D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
239  {
240  FillMode = fillMode;
241  CullMode = cullMode;
242  FrontCounterClockwise = frontCounterClockwise;
243  DepthBias = depthBias;
244  DepthBiasClamp = depthBiasClamp;
245  SlopeScaledDepthBias = slopeScaledDepthBias;
246  DepthClipEnable = depthClipEnable;
247  MultisampleEnable = multisampleEnable;
248  AntialiasedLineEnable = antialiasedLineEnable;
249  ForcedSampleCount = forcedSampleCount;
250  ConservativeRaster = conservativeRaster;
251  }
253  operator const D3D12_RASTERIZER_DESC&() const { return *this; }
254 };
255 
256 //------------------------------------------------------------------------------------------------
257 struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
258 {
260  {}
261  explicit CD3DX12_RESOURCE_ALLOCATION_INFO(const D3D12_RESOURCE_ALLOCATION_INFO& o) :
262  D3D12_RESOURCE_ALLOCATION_INFO(o)
263  {}
265  UINT64 size,
266  UINT64 alignment)
267  {
268  SizeInBytes = size;
269  Alignment = alignment;
270  }
271  operator const D3D12_RESOURCE_ALLOCATION_INFO&() const { return *this; }
272 };
273 
274 //------------------------------------------------------------------------------------------------
275 struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
276 {
278  {}
279  explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES& o) :
280  D3D12_HEAP_PROPERTIES(o)
281  {}
283  D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
284  D3D12_MEMORY_POOL memoryPoolPreference,
285  UINT creationNodeMask = 1,
286  UINT nodeMask = 1)
287  {
288  Type = D3D12_HEAP_TYPE_CUSTOM;
289  CPUPageProperty = cpuPageProperty;
290  MemoryPoolPreference = memoryPoolPreference;
291  CreationNodeMask = creationNodeMask;
292  VisibleNodeMask = nodeMask;
293  }
295  D3D12_HEAP_TYPE type,
296  UINT creationNodeMask = 1,
297  UINT nodeMask = 1)
298  {
299  Type = type;
300  CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
301  MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
302  CreationNodeMask = creationNodeMask;
303  VisibleNodeMask = nodeMask;
304  }
305  operator const D3D12_HEAP_PROPERTIES&() const { return *this; }
306  bool IsCPUAccessible() const
307  {
308  return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK || (Type == D3D12_HEAP_TYPE_CUSTOM && (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
309  }
310 };
311 inline bool operator==(const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r)
312 {
313  return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
314  l.MemoryPoolPreference == r.MemoryPoolPreference &&
315  l.CreationNodeMask == r.CreationNodeMask &&
316  l.VisibleNodeMask == r.VisibleNodeMask;
317 }
318 inline bool operator!=(const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r)
319 {
320  return !(l == r);
321 }
322 
323 //------------------------------------------------------------------------------------------------
324 struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
325 {
327  {}
328  explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC& o) :
329  D3D12_HEAP_DESC(o)
330  {}
332  UINT64 size,
333  D3D12_HEAP_PROPERTIES properties,
334  UINT64 alignment = 0,
335  D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE)
336  {
337  SizeInBytes = size;
338  Properties = properties;
339  Alignment = alignment;
340  Flags = flags;
341  }
343  UINT64 size,
344  D3D12_HEAP_TYPE type,
345  UINT64 alignment = 0,
346  D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE)
347  {
348  SizeInBytes = size;
349  Properties = CD3DX12_HEAP_PROPERTIES(type);
350  Alignment = alignment;
351  Flags = flags;
352  }
354  UINT64 size,
355  D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
356  D3D12_MEMORY_POOL memoryPoolPreference,
357  UINT64 alignment = 0,
358  D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE)
359  {
360  SizeInBytes = size;
361  Properties = CD3DX12_HEAP_PROPERTIES(cpuPageProperty, memoryPoolPreference);
362  Alignment = alignment;
363  Flags = flags;
364  }
366  const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
367  D3D12_HEAP_PROPERTIES properties,
368  D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE)
369  {
370  SizeInBytes = resAllocInfo.SizeInBytes;
371  Properties = properties;
372  Alignment = resAllocInfo.Alignment;
373  Flags = flags;
374  }
376  const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
377  D3D12_HEAP_TYPE type,
378  D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE)
379  {
380  SizeInBytes = resAllocInfo.SizeInBytes;
381  Properties = CD3DX12_HEAP_PROPERTIES(type);
382  Alignment = resAllocInfo.Alignment;
383  Flags = flags;
384  }
386  const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
387  D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
388  D3D12_MEMORY_POOL memoryPoolPreference,
389  D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE)
390  {
391  SizeInBytes = resAllocInfo.SizeInBytes;
392  Properties = CD3DX12_HEAP_PROPERTIES(cpuPageProperty, memoryPoolPreference);
393  Alignment = resAllocInfo.Alignment;
394  Flags = flags;
395  }
396  operator const D3D12_HEAP_DESC&() const { return *this; }
397  bool IsCPUAccessible() const
398  {
399  return static_cast<const CD3DX12_HEAP_PROPERTIES*>(&Properties)->IsCPUAccessible();
400  }
401 };
402 inline bool operator==(const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r)
403 {
404  return l.SizeInBytes == r.SizeInBytes &&
405  l.Properties == r.Properties &&
406  l.Alignment == r.Alignment &&
407  l.Flags == r.Flags;
408 }
409 inline bool operator!=(const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r)
410 {
411  return !(l == r);
412 }
413 
414 //------------------------------------------------------------------------------------------------
415 struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
416 {
418  {}
419  explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE& o) :
420  D3D12_CLEAR_VALUE(o)
421  {}
423  DXGI_FORMAT format,
424  const FLOAT color[4])
425  {
426  Format = format;
427  memcpy(Color, color, sizeof(Color));
428  }
430  DXGI_FORMAT format,
431  FLOAT depth,
432  UINT8 stencil)
433  {
434  Format = format;
435  /* Use memcpy to preserve NAN values */
436  memcpy(&DepthStencil.Depth, &depth, sizeof(depth));
437  DepthStencil.Stencil = stencil;
438  }
439  operator const D3D12_CLEAR_VALUE&() const { return *this; }
440 };
441 
442 //------------------------------------------------------------------------------------------------
443 struct CD3DX12_RANGE : public D3D12_RANGE
444 {
446  {}
447  explicit CD3DX12_RANGE(const D3D12_RANGE& o) :
448  D3D12_RANGE(o)
449  {}
451  SIZE_T begin,
452  SIZE_T end)
453  {
454  Begin = begin;
455  End = end;
456  }
457  operator const D3D12_RANGE&() const { return *this; }
458 };
459 
460 //------------------------------------------------------------------------------------------------
461 struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
462 {
464  {}
465  explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE& o) :
466  D3D12_TILED_RESOURCE_COORDINATE(o)
467  {}
469  UINT x,
470  UINT y,
471  UINT z,
472  UINT subresource)
473  {
474  X = x;
475  Y = y;
476  Z = z;
477  Subresource = subresource;
478  }
479  operator const D3D12_TILED_RESOURCE_COORDINATE&() const { return *this; }
480 };
481 
482 //------------------------------------------------------------------------------------------------
483 struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
484 {
486  {}
487  explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE& o) :
488  D3D12_TILE_REGION_SIZE(o)
489  {}
491  UINT numTiles,
492  BOOL useBox,
493  UINT width,
494  UINT16 height,
495  UINT16 depth)
496  {
497  NumTiles = numTiles;
498  UseBox = useBox;
499  Width = width;
500  Height = height;
501  Depth = depth;
502  }
503  operator const D3D12_TILE_REGION_SIZE&() const { return *this; }
504 };
505 
506 //------------------------------------------------------------------------------------------------
507 struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
508 {
510  {}
511  explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING& o) :
512  D3D12_SUBRESOURCE_TILING(o)
513  {}
515  UINT widthInTiles,
516  UINT16 heightInTiles,
517  UINT16 depthInTiles,
518  UINT startTileIndexInOverallResource)
519  {
520  WidthInTiles = widthInTiles;
521  HeightInTiles = heightInTiles;
522  DepthInTiles = depthInTiles;
523  StartTileIndexInOverallResource = startTileIndexInOverallResource;
524  }
525  operator const D3D12_SUBRESOURCE_TILING&() const { return *this; }
526 };
527 
528 //------------------------------------------------------------------------------------------------
529 struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
530 {
532  {}
533  explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE& o) :
534  D3D12_TILE_SHAPE(o)
535  {}
537  UINT widthInTexels,
538  UINT heightInTexels,
539  UINT depthInTexels)
540  {
541  WidthInTexels = widthInTexels;
542  HeightInTexels = heightInTexels;
543  DepthInTexels = depthInTexels;
544  }
545  operator const D3D12_TILE_SHAPE&() const { return *this; }
546 };
547 
548 //------------------------------------------------------------------------------------------------
549 struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
550 {
552  {}
553  explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER& o) :
554  D3D12_RESOURCE_BARRIER(o)
555  {}
557  _In_ ID3D12Resource* pResource,
558  D3D12_RESOURCE_STATES stateBefore,
559  D3D12_RESOURCE_STATES stateAfter,
560  UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
561  D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE)
562  {
564  ZeroMemory(&result, sizeof(result));
565  D3D12_RESOURCE_BARRIER& barrier = result;
566  result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
567  result.Flags = flags;
568  barrier.Transition.pResource = pResource;
569  barrier.Transition.StateBefore = stateBefore;
570  barrier.Transition.StateAfter = stateAfter;
571  barrier.Transition.Subresource = subresource;
572  return result;
573  }
575  _In_ ID3D12Resource* pResourceBefore,
576  _In_ ID3D12Resource* pResourceAfter)
577  {
579  ZeroMemory(&result, sizeof(result));
580  D3D12_RESOURCE_BARRIER& barrier = result;
581  result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
582  barrier.Aliasing.pResourceBefore = pResourceBefore;
583  barrier.Aliasing.pResourceAfter = pResourceAfter;
584  return result;
585  }
587  _In_ ID3D12Resource* pResource)
588  {
590  ZeroMemory(&result, sizeof(result));
591  D3D12_RESOURCE_BARRIER& barrier = result;
592  result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
593  barrier.UAV.pResource = pResource;
594  return result;
595  }
596  operator const D3D12_RESOURCE_BARRIER&() const { return *this; }
597 };
598 
599 //------------------------------------------------------------------------------------------------
600 struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
601 {
603  {}
604  explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO& o) :
605  D3D12_PACKED_MIP_INFO(o)
606  {}
608  UINT8 numStandardMips,
609  UINT8 numPackedMips,
610  UINT numTilesForPackedMips,
611  UINT startTileIndexInOverallResource)
612  {
613  NumStandardMips = numStandardMips;
614  NumPackedMips = numPackedMips;
615  NumTilesForPackedMips = numTilesForPackedMips;
616  StartTileIndexInOverallResource = startTileIndexInOverallResource;
617  }
618  operator const D3D12_PACKED_MIP_INFO&() const { return *this; }
619 };
620 
621 //------------------------------------------------------------------------------------------------
622 struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
623 {
625  {}
626  explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT& o) :
627  D3D12_SUBRESOURCE_FOOTPRINT(o)
628  {}
630  DXGI_FORMAT format,
631  UINT width,
632  UINT height,
633  UINT depth,
634  UINT rowPitch)
635  {
636  Format = format;
637  Width = width;
638  Height = height;
639  Depth = depth;
640  RowPitch = rowPitch;
641  }
643  const D3D12_RESOURCE_DESC& resDesc,
644  UINT rowPitch)
645  {
646  Format = resDesc.Format;
647  Width = UINT(resDesc.Width);
648  Height = resDesc.Height;
649  Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1);
650  RowPitch = rowPitch;
651  }
652  operator const D3D12_SUBRESOURCE_FOOTPRINT&() const { return *this; }
653 };
654 
655 //------------------------------------------------------------------------------------------------
656 struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
657 {
659  {}
660  explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION& o) :
661  D3D12_TEXTURE_COPY_LOCATION(o)
662  {}
663  CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource* pRes) { pResource = pRes; }
664  CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint)
665  {
666  pResource = pRes;
667  Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
668  PlacedFootprint = Footprint;
669  }
670  CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource* pRes, UINT Sub)
671  {
672  pResource = pRes;
673  Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
674  SubresourceIndex = Sub;
675  }
676 };
677 
678 //------------------------------------------------------------------------------------------------
679 struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
680 {
682  explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE& o) :
683  D3D12_DESCRIPTOR_RANGE(o)
684  {}
686  D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
687  UINT numDescriptors,
688  UINT baseShaderRegister,
689  UINT registerSpace = 0,
690  UINT offsetInDescriptorsFromTableStart =
691  D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
692  {
693  Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
694  }
695 
696  inline void Init(
697  D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
698  UINT numDescriptors,
699  UINT baseShaderRegister,
700  UINT registerSpace = 0,
701  UINT offsetInDescriptorsFromTableStart =
702  D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
703  {
704  Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
705  }
706 
707  static inline void Init(
708  _Out_ D3D12_DESCRIPTOR_RANGE& range,
709  D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
710  UINT numDescriptors,
711  UINT baseShaderRegister,
712  UINT registerSpace = 0,
713  UINT offsetInDescriptorsFromTableStart =
714  D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
715  {
716  range.RangeType = rangeType;
717  range.NumDescriptors = numDescriptors;
718  range.BaseShaderRegister = baseShaderRegister;
719  range.RegisterSpace = registerSpace;
720  range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
721  }
722 };
723 
724 //------------------------------------------------------------------------------------------------
725 struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
726 {
728  explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE& o) :
729  D3D12_ROOT_DESCRIPTOR_TABLE(o)
730  {}
732  UINT numDescriptorRanges,
733  _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges)
734  {
735  Init(numDescriptorRanges, _pDescriptorRanges);
736  }
737 
738  inline void Init(
739  UINT numDescriptorRanges,
740  _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges)
741  {
742  Init(*this, numDescriptorRanges, _pDescriptorRanges);
743  }
744 
745  static inline void Init(
746  _Out_ D3D12_ROOT_DESCRIPTOR_TABLE& rootDescriptorTable,
747  UINT numDescriptorRanges,
748  _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges)
749  {
750  rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
751  rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
752  }
753 };
754 
755 //------------------------------------------------------------------------------------------------
756 struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
757 {
759  explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS& o) :
760  D3D12_ROOT_CONSTANTS(o)
761  {}
763  UINT num32BitValues,
764  UINT shaderRegister,
765  UINT registerSpace = 0)
766  {
767  Init(num32BitValues, shaderRegister, registerSpace);
768  }
769 
770  inline void Init(
771  UINT num32BitValues,
772  UINT shaderRegister,
773  UINT registerSpace = 0)
774  {
775  Init(*this, num32BitValues, shaderRegister, registerSpace);
776  }
777 
778  static inline void Init(
779  _Out_ D3D12_ROOT_CONSTANTS& rootConstants,
780  UINT num32BitValues,
781  UINT shaderRegister,
782  UINT registerSpace = 0)
783  {
784  rootConstants.Num32BitValues = num32BitValues;
785  rootConstants.ShaderRegister = shaderRegister;
786  rootConstants.RegisterSpace = registerSpace;
787  }
788 };
789 
790 //------------------------------------------------------------------------------------------------
791 struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
792 {
794  explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR& o) :
795  D3D12_ROOT_DESCRIPTOR(o)
796  {}
798  UINT shaderRegister,
799  UINT registerSpace = 0)
800  {
801  Init(shaderRegister, registerSpace);
802  }
803 
804  inline void Init(
805  UINT shaderRegister,
806  UINT registerSpace = 0)
807  {
808  Init(*this, shaderRegister, registerSpace);
809  }
810 
811  static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR& table, UINT shaderRegister, UINT registerSpace = 0)
812  {
813  table.ShaderRegister = shaderRegister;
814  table.RegisterSpace = registerSpace;
815  }
816 };
817 
818 //------------------------------------------------------------------------------------------------
819 struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
820 {
822  explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER& o) :
823  D3D12_ROOT_PARAMETER(o)
824  {}
825 
826  static inline void InitAsDescriptorTable(
827  _Out_ D3D12_ROOT_PARAMETER& rootParam,
828  UINT numDescriptorRanges,
829  _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
830  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
831  {
832  rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
833  rootParam.ShaderVisibility = visibility;
834  CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
835  }
836 
837  static inline void InitAsConstants(
838  _Out_ D3D12_ROOT_PARAMETER& rootParam,
839  UINT num32BitValues,
840  UINT shaderRegister,
841  UINT registerSpace = 0,
842  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
843  {
844  rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
845  rootParam.ShaderVisibility = visibility;
846  CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
847  }
848 
849  static inline void InitAsConstantBufferView(
850  _Out_ D3D12_ROOT_PARAMETER& rootParam,
851  UINT shaderRegister,
852  UINT registerSpace = 0,
853  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
854  {
855  rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
856  rootParam.ShaderVisibility = visibility;
857  CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
858  }
859 
860  static inline void InitAsShaderResourceView(
861  _Out_ D3D12_ROOT_PARAMETER& rootParam,
862  UINT shaderRegister,
863  UINT registerSpace = 0,
864  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
865  {
866  rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
867  rootParam.ShaderVisibility = visibility;
868  CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
869  }
870 
871  static inline void InitAsUnorderedAccessView(
872  _Out_ D3D12_ROOT_PARAMETER& rootParam,
873  UINT shaderRegister,
874  UINT registerSpace = 0,
875  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
876  {
877  rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
878  rootParam.ShaderVisibility = visibility;
879  CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
880  }
881 
883  UINT numDescriptorRanges,
884  _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
885  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
886  {
887  InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
888  }
889 
890  inline void InitAsConstants(
891  UINT num32BitValues,
892  UINT shaderRegister,
893  UINT registerSpace = 0,
894  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
895  {
896  InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
897  }
898 
900  UINT shaderRegister,
901  UINT registerSpace = 0,
902  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
903  {
904  InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
905  }
906 
908  UINT shaderRegister,
909  UINT registerSpace = 0,
910  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
911  {
912  InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
913  }
914 
916  UINT shaderRegister,
917  UINT registerSpace = 0,
918  D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL)
919  {
920  InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
921  }
922 };
923 
924 //------------------------------------------------------------------------------------------------
925 struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
926 {
928  explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC& o) :
929  D3D12_STATIC_SAMPLER_DESC(o)
930  {}
932  UINT shaderRegister,
933  D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
934  D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
935  D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
936  D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
937  FLOAT mipLODBias = 0,
938  UINT maxAnisotropy = 16,
939  D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
940  D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
941  FLOAT minLOD = 0.f,
942  FLOAT maxLOD = D3D12_FLOAT32_MAX,
943  D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
944  UINT registerSpace = 0)
945  {
946  Init(
947  shaderRegister,
948  filter,
949  addressU,
950  addressV,
951  addressW,
952  mipLODBias,
953  maxAnisotropy,
954  comparisonFunc,
955  borderColor,
956  minLOD,
957  maxLOD,
958  shaderVisibility,
959  registerSpace);
960  }
961 
962  static inline void Init(
963  _Out_ D3D12_STATIC_SAMPLER_DESC& samplerDesc,
964  UINT shaderRegister,
965  D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
966  D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
967  D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
968  D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
969  FLOAT mipLODBias = 0,
970  UINT maxAnisotropy = 16,
971  D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
972  D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
973  FLOAT minLOD = 0.f,
974  FLOAT maxLOD = D3D12_FLOAT32_MAX,
975  D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
976  UINT registerSpace = 0)
977  {
978  samplerDesc.ShaderRegister = shaderRegister;
979  samplerDesc.Filter = filter;
980  samplerDesc.AddressU = addressU;
981  samplerDesc.AddressV = addressV;
982  samplerDesc.AddressW = addressW;
983  samplerDesc.MipLODBias = mipLODBias;
984  samplerDesc.MaxAnisotropy = maxAnisotropy;
985  samplerDesc.ComparisonFunc = comparisonFunc;
986  samplerDesc.BorderColor = borderColor;
987  samplerDesc.MinLOD = minLOD;
988  samplerDesc.MaxLOD = maxLOD;
989  samplerDesc.ShaderVisibility = shaderVisibility;
990  samplerDesc.RegisterSpace = registerSpace;
991  }
992  inline void Init(
993  UINT shaderRegister,
994  D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
995  D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
996  D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
997  D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
998  FLOAT mipLODBias = 0,
999  UINT maxAnisotropy = 16,
1000  D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1001  D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1002  FLOAT minLOD = 0.f,
1003  FLOAT maxLOD = D3D12_FLOAT32_MAX,
1004  D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1005  UINT registerSpace = 0)
1006  {
1007  Init(
1008  *this,
1009  shaderRegister,
1010  filter,
1011  addressU,
1012  addressV,
1013  addressW,
1014  mipLODBias,
1015  maxAnisotropy,
1016  comparisonFunc,
1017  borderColor,
1018  minLOD,
1019  maxLOD,
1020  shaderVisibility,
1021  registerSpace);
1022  }
1023 };
1024 
1025 //------------------------------------------------------------------------------------------------
1026 struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
1027 {
1029  explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC& o) :
1030  D3D12_ROOT_SIGNATURE_DESC(o)
1031  {}
1033  UINT numParameters,
1034  _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1035  UINT numStaticSamplers = 0,
1036  _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = NULL,
1037  D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE)
1038  {
1039  Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1040  }
1042  {
1043  Init(0, NULL, 0, NULL, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1044  }
1045 
1046  inline void Init(
1047  UINT numParameters,
1048  _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1049  UINT numStaticSamplers = 0,
1050  _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = NULL,
1051  D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE)
1052  {
1053  Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1054  }
1055 
1056  static inline void Init(
1057  _Out_ D3D12_ROOT_SIGNATURE_DESC& desc,
1058  UINT numParameters,
1059  _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1060  UINT numStaticSamplers = 0,
1061  _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = NULL,
1062  D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE)
1063  {
1064  desc.NumParameters = numParameters;
1065  desc.pParameters = _pParameters;
1066  desc.NumStaticSamplers = numStaticSamplers;
1067  desc.pStaticSamplers = _pStaticSamplers;
1068  desc.Flags = flags;
1069  }
1070 };
1071 
1072 //------------------------------------------------------------------------------------------------
1073 struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
1074 {
1076  explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE& o) :
1077  D3D12_CPU_DESCRIPTOR_HANDLE(o)
1078  {}
1080  CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other, INT offsetScaledByIncrementSize)
1081  {
1082  InitOffsetted(other, offsetScaledByIncrementSize);
1083  }
1084  CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other, INT offsetInDescriptors, UINT descriptorIncrementSize)
1085  {
1086  InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1087  }
1088  CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize)
1089  {
1090  ptr += offsetInDescriptors * descriptorIncrementSize;
1091  return *this;
1092  }
1093  CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize)
1094  {
1095  ptr += offsetScaledByIncrementSize;
1096  return *this;
1097  }
1098  bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other)
1099  {
1100  return (ptr == other.ptr);
1101  }
1102  bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other)
1103  {
1104  return (ptr != other.ptr);
1105  }
1106  CD3DX12_CPU_DESCRIPTOR_HANDLE& operator=(const D3D12_CPU_DESCRIPTOR_HANDLE& other)
1107  {
1108  ptr = other.ptr;
1109  return *this;
1110  }
1111 
1112  inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& base, INT offsetScaledByIncrementSize)
1113  {
1114  InitOffsetted(*this, base, offsetScaledByIncrementSize);
1115  }
1116 
1117  inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& base, INT offsetInDescriptors, UINT descriptorIncrementSize)
1118  {
1119  InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1120  }
1121 
1122  static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE& handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE& base, INT offsetScaledByIncrementSize)
1123  {
1124  handle.ptr = base.ptr + offsetScaledByIncrementSize;
1125  }
1126 
1127  static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE& handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE& base, INT offsetInDescriptors, UINT descriptorIncrementSize)
1128  {
1129  handle.ptr = base.ptr + offsetInDescriptors * descriptorIncrementSize;
1130  }
1131 };
1132 
1133 //------------------------------------------------------------------------------------------------
1134 struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
1135 {
1137  explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE& o) :
1138  D3D12_GPU_DESCRIPTOR_HANDLE(o)
1139  {}
1141  CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other, INT offsetScaledByIncrementSize)
1142  {
1143  InitOffsetted(other, offsetScaledByIncrementSize);
1144  }
1145  CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other, INT offsetInDescriptors, UINT descriptorIncrementSize)
1146  {
1147  InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1148  }
1149  CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize)
1150  {
1151  ptr += offsetInDescriptors * descriptorIncrementSize;
1152  return *this;
1153  }
1154  CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize)
1155  {
1156  ptr += offsetScaledByIncrementSize;
1157  return *this;
1158  }
1159  inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other)
1160  {
1161  return (ptr == other.ptr);
1162  }
1163  inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other)
1164  {
1165  return (ptr != other.ptr);
1166  }
1167  CD3DX12_GPU_DESCRIPTOR_HANDLE& operator=(const D3D12_GPU_DESCRIPTOR_HANDLE& other)
1168  {
1169  ptr = other.ptr;
1170  return *this;
1171  }
1172 
1173  inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& base, INT offsetScaledByIncrementSize)
1174  {
1175  InitOffsetted(*this, base, offsetScaledByIncrementSize);
1176  }
1177 
1178  inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& base, INT offsetInDescriptors, UINT descriptorIncrementSize)
1179  {
1180  InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1181  }
1182 
1183  static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE& handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE& base, INT offsetScaledByIncrementSize)
1184  {
1185  handle.ptr = base.ptr + offsetScaledByIncrementSize;
1186  }
1187 
1188  static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE& handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE& base, INT offsetInDescriptors, UINT descriptorIncrementSize)
1189  {
1190  handle.ptr = base.ptr + offsetInDescriptors * descriptorIncrementSize;
1191  }
1192 };
1193 
1194 //------------------------------------------------------------------------------------------------
1195 inline UINT D3D12CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize)
1196 {
1197  return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1198 }
1199 
1200 //------------------------------------------------------------------------------------------------
1201 template <typename T, typename U, typename V>
1202 inline void D3D12DecomposeSubresource(UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice)
1203 {
1204  MipSlice = static_cast<T>(Subresource % MipLevels);
1205  ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
1206  PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
1207 }
1208 
1209 //------------------------------------------------------------------------------------------------
1211  _In_ ID3D12Device* pDevice,
1212  DXGI_FORMAT Format)
1213 {
1214  D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = {Format};
1215  if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1216  {
1217  return 0;
1218  }
1219  return formatInfo.PlaneCount;
1220 }
1221 
1222 //------------------------------------------------------------------------------------------------
1223 struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1224 {
1226  {}
1227  explicit CD3DX12_RESOURCE_DESC(const D3D12_RESOURCE_DESC& o) :
1228  D3D12_RESOURCE_DESC(o)
1229  {}
1231  D3D12_RESOURCE_DIMENSION dimension,
1232  UINT64 alignment,
1233  UINT64 width,
1234  UINT height,
1235  UINT16 depthOrArraySize,
1236  UINT16 mipLevels,
1237  DXGI_FORMAT format,
1238  UINT sampleCount,
1239  UINT sampleQuality,
1240  D3D12_TEXTURE_LAYOUT layout,
1241  D3D12_RESOURCE_FLAGS flags)
1242  {
1243  Dimension = dimension;
1244  Alignment = alignment;
1245  Width = width;
1246  Height = height;
1247  DepthOrArraySize = depthOrArraySize;
1248  MipLevels = mipLevels;
1249  Format = format;
1250  SampleDesc.Count = sampleCount;
1251  SampleDesc.Quality = sampleQuality;
1252  Layout = layout;
1253  Flags = flags;
1254  }
1256  const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1257  D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE)
1258  {
1259  return CD3DX12_RESOURCE_DESC(D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1260  1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags);
1261  }
1263  UINT64 width,
1264  D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1265  UINT64 alignment = 0)
1266  {
1267  return CD3DX12_RESOURCE_DESC(D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1268  DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags);
1269  }
1271  DXGI_FORMAT format,
1272  UINT64 width,
1273  UINT16 arraySize = 1,
1274  UINT16 mipLevels = 0,
1275  D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1276  D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1277  UINT64 alignment = 0)
1278  {
1279  return CD3DX12_RESOURCE_DESC(D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1280  mipLevels, format, 1, 0, layout, flags);
1281  }
1283  DXGI_FORMAT format,
1284  UINT64 width,
1285  UINT height,
1286  UINT16 arraySize = 1,
1287  UINT16 mipLevels = 0,
1288  UINT sampleCount = 1,
1289  UINT sampleQuality = 0,
1290  D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1291  D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1292  UINT64 alignment = 0)
1293  {
1294  return CD3DX12_RESOURCE_DESC(D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1295  mipLevels, format, sampleCount, sampleQuality, layout, flags);
1296  }
1298  DXGI_FORMAT format,
1299  UINT64 width,
1300  UINT height,
1301  UINT16 depth,
1302  UINT16 mipLevels = 0,
1303  D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1304  D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1305  UINT64 alignment = 0)
1306  {
1307  return CD3DX12_RESOURCE_DESC(D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1308  mipLevels, format, 1, 0, layout, flags);
1309  }
1310  inline UINT16 Depth() const
1311  {
1312  return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1);
1313  }
1314  inline UINT16 ArraySize() const
1315  {
1316  return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1);
1317  }
1318  inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const
1319  {
1320  return D3D12GetFormatPlaneCount(pDevice, Format);
1321  }
1322  inline UINT Subresources(_In_ ID3D12Device* pDevice) const
1323  {
1324  return MipLevels * ArraySize() * PlaneCount(pDevice);
1325  }
1326  inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice)
1327  {
1328  return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize());
1329  }
1330  operator const D3D12_RESOURCE_DESC&() const { return *this; }
1331 };
1332 inline bool operator==(const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r)
1333 {
1334  return l.Dimension == r.Dimension &&
1335  l.Alignment == r.Alignment &&
1336  l.Width == r.Width &&
1337  l.Height == r.Height &&
1338  l.DepthOrArraySize == r.DepthOrArraySize &&
1339  l.MipLevels == r.MipLevels &&
1340  l.Format == r.Format &&
1341  l.SampleDesc.Count == r.SampleDesc.Count &&
1342  l.SampleDesc.Quality == r.SampleDesc.Quality &&
1343  l.Layout == r.Layout &&
1344  l.Flags == r.Flags;
1345 }
1346 inline bool operator!=(const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r)
1347 {
1348  return !(l == r);
1349 }
1350 
1351 //------------------------------------------------------------------------------------------------
1352 // Row-by-row memcpy
1353 inline void MemcpySubresource(
1354  _In_ const D3D12_MEMCPY_DEST* pDest,
1355  _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
1356  SIZE_T RowSizeInBytes,
1357  UINT NumRows,
1358  UINT NumSlices)
1359 {
1360  for (UINT z = 0; z < NumSlices; ++z)
1361  {
1362  BYTE* pDestSlice = reinterpret_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
1363  const BYTE* pSrcSlice = reinterpret_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * z;
1364  for (UINT y = 0; y < NumRows; ++y)
1365  {
1366  memcpy(pDestSlice + pDest->RowPitch * y,
1367  pSrcSlice + pSrc->RowPitch * y,
1368  RowSizeInBytes);
1369  }
1370  }
1371 }
1372 
1373 //------------------------------------------------------------------------------------------------
1374 // Returns required size of a buffer to be used for data upload
1376  _In_ ID3D12Resource* pDestinationResource,
1377  _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
1378  _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources)
1379 {
1380  D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
1381  UINT64 RequiredSize = 0;
1382 
1383  ID3D12Device* pDevice;
1384  pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
1385  pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
1386  pDevice->Release();
1387 
1388  return RequiredSize;
1389 }
1390 
1391 //------------------------------------------------------------------------------------------------
1392 // All arrays must be populated (e.g. by calling GetCopyableFootprints)
1393 inline UINT64 UpdateSubresources(
1394  _In_ ID3D12GraphicsCommandList* pCmdList,
1395  _In_ ID3D12Resource* pDestinationResource,
1396  _In_ ID3D12Resource* pIntermediate,
1397  _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
1398  _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
1399  UINT64 RequiredSize,
1400  _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
1401  _In_reads_(NumSubresources) const UINT* pNumRows,
1402  _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
1403  _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData)
1404 {
1405  // Minor validation
1406  D3D12_RESOURCE_DESC IntermediateDesc = pIntermediate->GetDesc();
1407  D3D12_RESOURCE_DESC DestinationDesc = pDestinationResource->GetDesc();
1408  if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
1409  IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
1410  RequiredSize > (SIZE_T)-1 ||
1411  (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
1412  (FirstSubresource != 0 || NumSubresources != 1)))
1413  {
1414  return 0;
1415  }
1416 
1417  BYTE* pData;
1418  HRESULT hr = pIntermediate->Map(0, NULL, reinterpret_cast<void**>(&pData));
1419  if (FAILED(hr))
1420  {
1421  return 0;
1422  }
1423 
1424  for (UINT i = 0; i < NumSubresources; ++i)
1425  {
1426  if (pRowSizesInBytes[i] > (SIZE_T)-1) return 0;
1427  D3D12_MEMCPY_DEST DestData = {pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, pLayouts[i].Footprint.RowPitch * pNumRows[i]};
1428  MemcpySubresource(&DestData, &pSrcData[i], (SIZE_T)pRowSizesInBytes[i], pNumRows[i], pLayouts[i].Footprint.Depth);
1429  }
1430  pIntermediate->Unmap(0, NULL);
1431 
1432  if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
1433  {
1434  CD3DX12_BOX SrcBox(UINT(pLayouts[0].Offset), UINT(pLayouts[0].Offset + pLayouts[0].Footprint.Width));
1435  pCmdList->CopyBufferRegion(
1436  pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
1437  }
1438  else
1439  {
1440  for (UINT i = 0; i < NumSubresources; ++i)
1441  {
1442  CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
1443  CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
1444  pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
1445  }
1446  }
1447  return RequiredSize;
1448 }
1449 
1450 //------------------------------------------------------------------------------------------------
1451 // Heap-allocating UpdateSubresources implementation
1452 inline UINT64 UpdateSubresources(
1453  _In_ ID3D12GraphicsCommandList* pCmdList,
1454  _In_ ID3D12Resource* pDestinationResource,
1455  _In_ ID3D12Resource* pIntermediate,
1456  UINT64 IntermediateOffset,
1457  _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
1458  _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
1459  _In_reads_(NumSubresources) D3D12_SUBRESOURCE_DATA* pSrcData)
1460 {
1461  UINT64 RequiredSize = 0;
1462  UINT64 MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
1463  if (MemToAlloc > SIZE_MAX)
1464  {
1465  return 0;
1466  }
1467  void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
1468  if (pMem == NULL)
1469  {
1470  return 0;
1471  }
1472  D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts = reinterpret_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
1473  UINT64* pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
1474  UINT* pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
1475 
1476  D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
1477  ID3D12Device* pDevice;
1478  pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
1479  pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
1480  pDevice->Release();
1481 
1482  UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
1483  HeapFree(GetProcessHeap(), 0, pMem);
1484  return Result;
1485 }
1486 
1487 //------------------------------------------------------------------------------------------------
1488 // Stack-allocating UpdateSubresources implementation
1489 template <UINT MaxSubresources>
1490 inline UINT64 UpdateSubresources(
1491  _In_ ID3D12GraphicsCommandList* pCmdList,
1492  _In_ ID3D12Resource* pDestinationResource,
1493  _In_ ID3D12Resource* pIntermediate,
1494  UINT64 IntermediateOffset,
1495  _In_range_(0, MaxSubresources) UINT FirstSubresource,
1496  _In_range_(1, MaxSubresources - FirstSubresource) UINT NumSubresources,
1497  _In_reads_(NumSubresources) D3D12_SUBRESOURCE_DATA* pSrcData)
1498 {
1499  UINT64 RequiredSize = 0;
1500  D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
1501  UINT NumRows[MaxSubresources];
1502  UINT64 RowSizesInBytes[MaxSubresources];
1503 
1504  D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
1505  ID3D12Device* pDevice;
1506  pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
1507  pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
1508  pDevice->Release();
1509 
1510  return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
1511 }
1512 
1513 //------------------------------------------------------------------------------------------------
1514 inline bool D3D12IsLayoutOpaque(D3D12_TEXTURE_LAYOUT Layout)
1515 {
1516  return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE;
1517 }
1518 
1519 //------------------------------------------------------------------------------------------------
1520 inline ID3D12CommandList* const* CommandListCast(ID3D12GraphicsCommandList* const* pp)
1521 {
1522  // This cast is useful for passing strongly typed command list pointers into
1523  // ExecuteCommandLists.
1524  // This cast is valid as long as the const-ness is respected. D3D12 APIs do
1525  // respect the const-ness of their arguments.
1526  return reinterpret_cast<ID3D12CommandList* const*>(pp);
1527 }
1528 
1529 
1530 #endif // defined( __cplusplus )
1531 
1532 #endif //__D3DX12_H__
CD3DX12_HEAP_PROPERTIES::CD3DX12_HEAP_PROPERTIES
CD3DX12_HEAP_PROPERTIES(D3D12_CPU_PAGE_PROPERTY cpuPageProperty, D3D12_MEMORY_POOL memoryPoolPreference, UINT creationNodeMask=1, UINT nodeMask=1)
Definition: d3dx12_win.h:282
CD3DX12_SUBRESOURCE_FOOTPRINT::CD3DX12_SUBRESOURCE_FOOTPRINT
CD3DX12_SUBRESOURCE_FOOTPRINT(DXGI_FORMAT format, UINT width, UINT height, UINT depth, UINT rowPitch)
Definition: d3dx12_win.h:629
CD3DX12_TEXTURE_COPY_LOCATION::CD3DX12_TEXTURE_COPY_LOCATION
CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource *pRes, UINT Sub)
Definition: d3dx12_win.h:670
CD3DX12_BLEND_DESC::CD3DX12_BLEND_DESC
CD3DX12_BLEND_DESC(CD3DX12_DEFAULT)
Definition: d3dx12_win.h:181
CD3DX12_CPU_DESCRIPTOR_HANDLE::CD3DX12_CPU_DESCRIPTOR_HANDLE
CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT)
Definition: d3dx12_win.h:1079
CD3DX12_GPU_DESCRIPTOR_HANDLE::CD3DX12_GPU_DESCRIPTOR_HANDLE
CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1145
CD3DX12_TILE_REGION_SIZE::CD3DX12_TILE_REGION_SIZE
CD3DX12_TILE_REGION_SIZE()
Definition: d3dx12_win.h:485
CD3DX12_ROOT_SIGNATURE_DESC::CD3DX12_ROOT_SIGNATURE_DESC
CD3DX12_ROOT_SIGNATURE_DESC(UINT numParameters, _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER *_pParameters, UINT numStaticSamplers=0, _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *_pStaticSamplers=NULL, D3D12_ROOT_SIGNATURE_FLAGS flags=D3D12_ROOT_SIGNATURE_FLAG_NONE)
Definition: d3dx12_win.h:1032
CD3DX12_CPU_DESCRIPTOR_HANDLE::InitOffsetted
static void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1127
CD3DX12_RESOURCE_ALLOCATION_INFO::CD3DX12_RESOURCE_ALLOCATION_INFO
CD3DX12_RESOURCE_ALLOCATION_INFO()
Definition: d3dx12_win.h:259
CD3DX12_ROOT_DESCRIPTOR_TABLE
Definition: d3dx12_win.h:725
CD3DX12_ROOT_SIGNATURE_DESC::CD3DX12_ROOT_SIGNATURE_DESC
CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT)
Definition: d3dx12_win.h:1041
CD3DX12_ROOT_SIGNATURE_DESC::CD3DX12_ROOT_SIGNATURE_DESC
CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o)
Definition: d3dx12_win.h:1029
CD3DX12_CPU_DESCRIPTOR_HANDLE::Offset
CD3DX12_CPU_DESCRIPTOR_HANDLE & Offset(INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1093
CD3DX12_DESCRIPTOR_RANGE::Init
void Init(D3D12_DESCRIPTOR_RANGE_TYPE rangeType, UINT numDescriptors, UINT baseShaderRegister, UINT registerSpace=0, UINT offsetInDescriptorsFromTableStart=D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
Definition: d3dx12_win.h:696
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o)
Definition: d3dx12_win.h:328
UpdateSubresources
UINT64 UpdateSubresources(_In_ ID3D12GraphicsCommandList *pCmdList, _In_ ID3D12Resource *pDestinationResource, _In_ ID3D12Resource *pIntermediate, _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources, UINT64 RequiredSize, _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, _In_reads_(NumSubresources) const UINT *pNumRows, _In_reads_(NumSubresources) const UINT64 *pRowSizesInBytes, _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA *pSrcData)
Definition: d3dx12_win.h:1393
CD3DX12_CPU_DESCRIPTOR_HANDLE::InitOffsetted
void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1117
CD3DX12_RECT::CD3DX12_RECT
CD3DX12_RECT()
Definition: d3dx12_win.h:37
CD3DX12_CPU_DESCRIPTOR_HANDLE::CD3DX12_CPU_DESCRIPTOR_HANDLE
CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1084
CD3DX12_TILED_RESOURCE_COORDINATE::CD3DX12_TILED_RESOURCE_COORDINATE
CD3DX12_TILED_RESOURCE_COORDINATE()
Definition: d3dx12_win.h:463
CD3DX12_BOX::CD3DX12_BOX
CD3DX12_BOX(const D3D12_BOX &o)
Definition: d3dx12_win.h:62
D3D12GetFormatPlaneCount
UINT8 D3D12GetFormatPlaneCount(_In_ ID3D12Device *pDevice, DXGI_FORMAT Format)
Definition: d3dx12_win.h:1210
CD3DX12_CPU_DESCRIPTOR_HANDLE::operator==
bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other)
Definition: d3dx12_win.h:1098
CD3DX12_STATIC_SAMPLER_DESC::CD3DX12_STATIC_SAMPLER_DESC
CD3DX12_STATIC_SAMPLER_DESC(UINT shaderRegister, D3D12_FILTER filter=D3D12_FILTER_ANISOTROPIC, D3D12_TEXTURE_ADDRESS_MODE addressU=D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE addressV=D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE addressW=D3D12_TEXTURE_ADDRESS_MODE_WRAP, FLOAT mipLODBias=0, UINT maxAnisotropy=16, D3D12_COMPARISON_FUNC comparisonFunc=D3D12_COMPARISON_FUNC_LESS_EQUAL, D3D12_STATIC_BORDER_COLOR borderColor=D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, FLOAT minLOD=0.f, FLOAT maxLOD=D3D12_FLOAT32_MAX, D3D12_SHADER_VISIBILITY shaderVisibility=D3D12_SHADER_VISIBILITY_ALL, UINT registerSpace=0)
Definition: d3dx12_win.h:931
CD3DX12_DESCRIPTOR_RANGE
Definition: d3dx12_win.h:679
CD3DX12_PACKED_MIP_INFO
Definition: d3dx12_win.h:600
CD3DX12_TEXTURE_COPY_LOCATION::CD3DX12_TEXTURE_COPY_LOCATION
CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource *pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const &Footprint)
Definition: d3dx12_win.h:664
Diligent::SampleDesc
struct SampleDesc SampleDesc
Definition: PipelineState.h:72
CD3DX12_ROOT_DESCRIPTOR_TABLE::CD3DX12_ROOT_DESCRIPTOR_TABLE
CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o)
Definition: d3dx12_win.h:728
CD3DX12_BOX::~CD3DX12_BOX
~CD3DX12_BOX()
Definition: d3dx12_win.h:104
CD3DX12_RESOURCE_BARRIER::UAV
static CD3DX12_RESOURCE_BARRIER UAV(_In_ ID3D12Resource *pResource)
Definition: d3dx12_win.h:586
CD3DX12_RANGE
Definition: d3dx12_win.h:443
Flags
Uint32 Flags
Definition: DXBCUtils.cpp:71
CD3DX12_ROOT_SIGNATURE_DESC::CD3DX12_ROOT_SIGNATURE_DESC
CD3DX12_ROOT_SIGNATURE_DESC()
Definition: d3dx12_win.h:1028
CD3DX12_TILE_REGION_SIZE
Definition: d3dx12_win.h:483
CD3DX12_STATIC_SAMPLER_DESC::Init
void Init(UINT shaderRegister, D3D12_FILTER filter=D3D12_FILTER_ANISOTROPIC, D3D12_TEXTURE_ADDRESS_MODE addressU=D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE addressV=D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE addressW=D3D12_TEXTURE_ADDRESS_MODE_WRAP, FLOAT mipLODBias=0, UINT maxAnisotropy=16, D3D12_COMPARISON_FUNC comparisonFunc=D3D12_COMPARISON_FUNC_LESS_EQUAL, D3D12_STATIC_BORDER_COLOR borderColor=D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, FLOAT minLOD=0.f, FLOAT maxLOD=D3D12_FLOAT32_MAX, D3D12_SHADER_VISIBILITY shaderVisibility=D3D12_SHADER_VISIBILITY_ALL, UINT registerSpace=0)
Definition: d3dx12_win.h:992
CD3DX12_GPU_DESCRIPTOR_HANDLE::Offset
CD3DX12_GPU_DESCRIPTOR_HANDLE & Offset(INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1154
CD3DX12_RASTERIZER_DESC::CD3DX12_RASTERIZER_DESC
CD3DX12_RASTERIZER_DESC(D3D12_FILL_MODE fillMode, D3D12_CULL_MODE cullMode, BOOL frontCounterClockwise, INT depthBias, FLOAT depthBiasClamp, FLOAT slopeScaledDepthBias, BOOL depthClipEnable, BOOL multisampleEnable, BOOL antialiasedLineEnable, UINT forcedSampleCount, D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
Definition: d3dx12_win.h:227
CD3DX12_ROOT_PARAMETER::InitAsConstantBufferView
void InitAsConstantBufferView(UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:899
CD3DX12_STATIC_SAMPLER_DESC::CD3DX12_STATIC_SAMPLER_DESC
CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o)
Definition: d3dx12_win.h:928
CD3DX12_HEAP_PROPERTIES::IsCPUAccessible
bool IsCPUAccessible() const
Definition: d3dx12_win.h:306
CD3DX12_ROOT_SIGNATURE_DESC::Init
static void Init(_Out_ D3D12_ROOT_SIGNATURE_DESC &desc, UINT numParameters, _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER *_pParameters, UINT numStaticSamplers=0, _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *_pStaticSamplers=NULL, D3D12_ROOT_SIGNATURE_FLAGS flags=D3D12_ROOT_SIGNATURE_FLAG_NONE)
Definition: d3dx12_win.h:1056
CD3DX12_SUBRESOURCE_FOOTPRINT
Definition: d3dx12_win.h:622
CD3DX12_GPU_DESCRIPTOR_HANDLE::CD3DX12_GPU_DESCRIPTOR_HANDLE
CD3DX12_GPU_DESCRIPTOR_HANDLE()
Definition: d3dx12_win.h:1136
CD3DX12_RESOURCE_BARRIER::CD3DX12_RESOURCE_BARRIER
CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o)
Definition: d3dx12_win.h:553
CD3DX12_ROOT_DESCRIPTOR::CD3DX12_ROOT_DESCRIPTOR
CD3DX12_ROOT_DESCRIPTOR()
Definition: d3dx12_win.h:793
CD3DX12_GPU_DESCRIPTOR_HANDLE::operator==
bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other)
Definition: d3dx12_win.h:1159
CD3DX12_RESOURCE_DESC::ArraySize
UINT16 ArraySize() const
Definition: d3dx12_win.h:1314
CD3DX12_RESOURCE_DESC::CD3DX12_RESOURCE_DESC
CD3DX12_RESOURCE_DESC(const D3D12_RESOURCE_DESC &o)
Definition: d3dx12_win.h:1227
CD3DX12_RESOURCE_DESC::Tex2D
static CD3DX12_RESOURCE_DESC Tex2D(DXGI_FORMAT format, UINT64 width, UINT height, UINT16 arraySize=1, UINT16 mipLevels=0, UINT sampleCount=1, UINT sampleQuality=0, D3D12_RESOURCE_FLAGS flags=D3D12_RESOURCE_FLAG_NONE, D3D12_TEXTURE_LAYOUT layout=D3D12_TEXTURE_LAYOUT_UNKNOWN, UINT64 alignment=0)
Definition: d3dx12_win.h:1282
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(const D3D12_RESOURCE_ALLOCATION_INFO &resAllocInfo, D3D12_CPU_PAGE_PROPERTY cpuPageProperty, D3D12_MEMORY_POOL memoryPoolPreference, D3D12_HEAP_FLAGS flags=D3D12_HEAP_FLAG_NONE)
Definition: d3dx12_win.h:385
CD3DX12_CLEAR_VALUE::CD3DX12_CLEAR_VALUE
CD3DX12_CLEAR_VALUE(DXGI_FORMAT format, FLOAT depth, UINT8 stencil)
Definition: d3dx12_win.h:429
D3D12_DEFAULT
const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT
CD3DX12_ROOT_PARAMETER::InitAsConstants
void InitAsConstants(UINT num32BitValues, UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:890
CD3DX12_GPU_DESCRIPTOR_HANDLE::operator=
CD3DX12_GPU_DESCRIPTOR_HANDLE & operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other)
Definition: d3dx12_win.h:1167
CD3DX12_DESCRIPTOR_RANGE::CD3DX12_DESCRIPTOR_RANGE
CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o)
Definition: d3dx12_win.h:682
CD3DX12_GPU_DESCRIPTOR_HANDLE::CD3DX12_GPU_DESCRIPTOR_HANDLE
CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o)
Definition: d3dx12_win.h:1137
CD3DX12_GPU_DESCRIPTOR_HANDLE
Definition: d3dx12_win.h:1134
CD3DX12_ROOT_PARAMETER::InitAsDescriptorTable
static void InitAsDescriptorTable(_Out_ D3D12_ROOT_PARAMETER &rootParam, UINT numDescriptorRanges, _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:826
CD3DX12_RESOURCE_BARRIER::Transition
static CD3DX12_RESOURCE_BARRIER Transition(_In_ ID3D12Resource *pResource, D3D12_RESOURCE_STATES stateBefore, D3D12_RESOURCE_STATES stateAfter, UINT subresource=D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, D3D12_RESOURCE_BARRIER_FLAGS flags=D3D12_RESOURCE_BARRIER_FLAG_NONE)
Definition: d3dx12_win.h:556
CD3DX12_RESOURCE_DESC::Tex1D
static CD3DX12_RESOURCE_DESC Tex1D(DXGI_FORMAT format, UINT64 width, UINT16 arraySize=1, UINT16 mipLevels=0, D3D12_RESOURCE_FLAGS flags=D3D12_RESOURCE_FLAG_NONE, D3D12_TEXTURE_LAYOUT layout=D3D12_TEXTURE_LAYOUT_UNKNOWN, UINT64 alignment=0)
Definition: d3dx12_win.h:1270
CommandListCast
ID3D12CommandList *const * CommandListCast(ID3D12GraphicsCommandList *const *pp)
Definition: d3dx12_win.h:1520
CD3DX12_ROOT_DESCRIPTOR_TABLE::CD3DX12_ROOT_DESCRIPTOR_TABLE
CD3DX12_ROOT_DESCRIPTOR_TABLE()
Definition: d3dx12_win.h:727
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(UINT64 size, D3D12_HEAP_PROPERTIES properties, UINT64 alignment=0, D3D12_HEAP_FLAGS flags=D3D12_HEAP_FLAG_NONE)
Definition: d3dx12_win.h:331
CD3DX12_DEPTH_STENCIL_DESC::CD3DX12_DEPTH_STENCIL_DESC
CD3DX12_DEPTH_STENCIL_DESC(BOOL depthEnable, D3D12_DEPTH_WRITE_MASK depthWriteMask, D3D12_COMPARISON_FUNC depthFunc, BOOL stencilEnable, UINT8 stencilReadMask, UINT8 stencilWriteMask, D3D12_STENCIL_OP frontStencilFailOp, D3D12_STENCIL_OP frontStencilDepthFailOp, D3D12_STENCIL_OP frontStencilPassOp, D3D12_COMPARISON_FUNC frontStencilFunc, D3D12_STENCIL_OP backStencilFailOp, D3D12_STENCIL_OP backStencilDepthFailOp, D3D12_STENCIL_OP backStencilPassOp, D3D12_COMPARISON_FUNC backStencilFunc)
Definition: d3dx12_win.h:138
CD3DX12_ROOT_DESCRIPTOR
Definition: d3dx12_win.h:791
CD3DX12_GPU_DESCRIPTOR_HANDLE::InitOffsetted
static void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1183
CD3DX12_HEAP_PROPERTIES::CD3DX12_HEAP_PROPERTIES
CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o)
Definition: d3dx12_win.h:279
CD3DX12_GPU_DESCRIPTOR_HANDLE::InitOffsetted
static void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1188
CD3DX12_TILED_RESOURCE_COORDINATE
Definition: d3dx12_win.h:461
CD3DX12_ROOT_DESCRIPTOR::Init
void Init(UINT shaderRegister, UINT registerSpace=0)
Definition: d3dx12_win.h:804
CD3DX12_DEFAULT
Definition: d3dx12_win.h:17
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC()
Definition: d3dx12_win.h:326
CD3DX12_RANGE::CD3DX12_RANGE
CD3DX12_RANGE()
Definition: d3dx12_win.h:445
CD3DX12_RECT::CD3DX12_RECT
CD3DX12_RECT(LONG Left, LONG Top, LONG Right, LONG Bottom)
Definition: d3dx12_win.h:42
CD3DX12_RECT::CD3DX12_RECT
CD3DX12_RECT(const D3D12_RECT &o)
Definition: d3dx12_win.h:39
CD3DX12_RESOURCE_DESC::PlaneCount
UINT8 PlaneCount(_In_ ID3D12Device *pDevice) const
Definition: d3dx12_win.h:1318
CD3DX12_PACKED_MIP_INFO::CD3DX12_PACKED_MIP_INFO
CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o)
Definition: d3dx12_win.h:604
CD3DX12_ROOT_CONSTANTS::Init
void Init(UINT num32BitValues, UINT shaderRegister, UINT registerSpace=0)
Definition: d3dx12_win.h:770
CD3DX12_TILE_SHAPE
Definition: d3dx12_win.h:529
CD3DX12_ROOT_PARAMETER::InitAsShaderResourceView
void InitAsShaderResourceView(UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:907
Diligent::SampleDesc::Count
Uint8 Count
Sample count.
Definition: PipelineState.h:58
CD3DX12_SUBRESOURCE_FOOTPRINT::CD3DX12_SUBRESOURCE_FOOTPRINT
CD3DX12_SUBRESOURCE_FOOTPRINT()
Definition: d3dx12_win.h:624
CD3DX12_RESOURCE_BARRIER::Aliasing
static CD3DX12_RESOURCE_BARRIER Aliasing(_In_ ID3D12Resource *pResourceBefore, _In_ ID3D12Resource *pResourceAfter)
Definition: d3dx12_win.h:574
CD3DX12_CPU_DESCRIPTOR_HANDLE::CD3DX12_CPU_DESCRIPTOR_HANDLE
CD3DX12_CPU_DESCRIPTOR_HANDLE()
Definition: d3dx12_win.h:1075
operator==
bool operator==(const D3D12_VIEWPORT &l, const D3D12_VIEWPORT &r)
Definition: d3dx12_win.h:22
CD3DX12_RESOURCE_DESC
Definition: d3dx12_win.h:1223
CD3DX12_TEXTURE_COPY_LOCATION
Definition: d3dx12_win.h:656
CD3DX12_TILE_SHAPE::CD3DX12_TILE_SHAPE
CD3DX12_TILE_SHAPE()
Definition: d3dx12_win.h:531
CD3DX12_SUBRESOURCE_FOOTPRINT::CD3DX12_SUBRESOURCE_FOOTPRINT
CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_RESOURCE_DESC &resDesc, UINT rowPitch)
Definition: d3dx12_win.h:642
GetRequiredIntermediateSize
UINT64 GetRequiredIntermediateSize(_In_ ID3D12Resource *pDestinationResource, _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource, _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources)
Definition: d3dx12_win.h:1375
MemcpySubresource
void MemcpySubresource(_In_ const D3D12_MEMCPY_DEST *pDest, _In_ const D3D12_SUBRESOURCE_DATA *pSrc, SIZE_T RowSizeInBytes, UINT NumRows, UINT NumSlices)
Definition: d3dx12_win.h:1353
CD3DX12_TILE_SHAPE::CD3DX12_TILE_SHAPE
CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o)
Definition: d3dx12_win.h:533
CD3DX12_RASTERIZER_DESC::CD3DX12_RASTERIZER_DESC
CD3DX12_RASTERIZER_DESC(const D3D12_RASTERIZER_DESC &o)
Definition: d3dx12_win.h:210
CD3DX12_RESOURCE_DESC::CD3DX12_RESOURCE_DESC
CD3DX12_RESOURCE_DESC()
Definition: d3dx12_win.h:1225
CD3DX12_ROOT_DESCRIPTOR::Init
static void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace=0)
Definition: d3dx12_win.h:811
CD3DX12_RASTERIZER_DESC::CD3DX12_RASTERIZER_DESC
CD3DX12_RASTERIZER_DESC(CD3DX12_DEFAULT)
Definition: d3dx12_win.h:213
CD3DX12_CPU_DESCRIPTOR_HANDLE::InitOffsetted
void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1112
CD3DX12_SUBRESOURCE_TILING::CD3DX12_SUBRESOURCE_TILING
CD3DX12_SUBRESOURCE_TILING()
Definition: d3dx12_win.h:509
CD3DX12_RESOURCE_BARRIER
Definition: d3dx12_win.h:549
Type
const D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type
Definition: PipelineStateD3D12Impl.cpp:69
CD3DX12_ROOT_DESCRIPTOR::CD3DX12_ROOT_DESCRIPTOR
CD3DX12_ROOT_DESCRIPTOR(UINT shaderRegister, UINT registerSpace=0)
Definition: d3dx12_win.h:797
CD3DX12_PACKED_MIP_INFO::CD3DX12_PACKED_MIP_INFO
CD3DX12_PACKED_MIP_INFO()
Definition: d3dx12_win.h:602
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(const D3D12_RESOURCE_ALLOCATION_INFO &resAllocInfo, D3D12_HEAP_TYPE type, D3D12_HEAP_FLAGS flags=D3D12_HEAP_FLAG_NONE)
Definition: d3dx12_win.h:375
CD3DX12_RESOURCE_ALLOCATION_INFO::CD3DX12_RESOURCE_ALLOCATION_INFO
CD3DX12_RESOURCE_ALLOCATION_INFO(const D3D12_RESOURCE_ALLOCATION_INFO &o)
Definition: d3dx12_win.h:261
CD3DX12_ROOT_DESCRIPTOR_TABLE::Init
static void Init(_Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable, UINT numDescriptorRanges, _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *_pDescriptorRanges)
Definition: d3dx12_win.h:745
CD3DX12_ROOT_DESCRIPTOR::CD3DX12_ROOT_DESCRIPTOR
CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o)
Definition: d3dx12_win.h:794
CD3DX12_SUBRESOURCE_FOOTPRINT::CD3DX12_SUBRESOURCE_FOOTPRINT
CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o)
Definition: d3dx12_win.h:626
CD3DX12_CLEAR_VALUE::CD3DX12_CLEAR_VALUE
CD3DX12_CLEAR_VALUE()
Definition: d3dx12_win.h:417
operator!=
bool operator!=(const D3D12_VIEWPORT &l, const D3D12_VIEWPORT &r)
Definition: d3dx12_win.h:29
CD3DX12_ROOT_PARAMETER::CD3DX12_ROOT_PARAMETER
CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o)
Definition: d3dx12_win.h:822
CD3DX12_RESOURCE_DESC::CalcSubresource
UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice)
Definition: d3dx12_win.h:1326
CD3DX12_SUBRESOURCE_TILING::CD3DX12_SUBRESOURCE_TILING
CD3DX12_SUBRESOURCE_TILING(UINT widthInTiles, UINT16 heightInTiles, UINT16 depthInTiles, UINT startTileIndexInOverallResource)
Definition: d3dx12_win.h:514
CD3DX12_CPU_DESCRIPTOR_HANDLE::InitOffsetted
static void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1122
CD3DX12_BLEND_DESC
Definition: d3dx12_win.h:174
CD3DX12_RESOURCE_BARRIER::CD3DX12_RESOURCE_BARRIER
CD3DX12_RESOURCE_BARRIER()
Definition: d3dx12_win.h:551
CD3DX12_CPU_DESCRIPTOR_HANDLE::CD3DX12_CPU_DESCRIPTOR_HANDLE
CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o)
Definition: d3dx12_win.h:1076
CD3DX12_ROOT_PARAMETER::InitAsConstants
static void InitAsConstants(_Out_ D3D12_ROOT_PARAMETER &rootParam, UINT num32BitValues, UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:837
CD3DX12_RESOURCE_DESC::Tex3D
static CD3DX12_RESOURCE_DESC Tex3D(DXGI_FORMAT format, UINT64 width, UINT height, UINT16 depth, UINT16 mipLevels=0, D3D12_RESOURCE_FLAGS flags=D3D12_RESOURCE_FLAG_NONE, D3D12_TEXTURE_LAYOUT layout=D3D12_TEXTURE_LAYOUT_UNKNOWN, UINT64 alignment=0)
Definition: d3dx12_win.h:1297
CD3DX12_BOX::CD3DX12_BOX
CD3DX12_BOX(LONG Left, LONG Top, LONG Front, LONG Right, LONG Bottom, LONG Back)
Definition: d3dx12_win.h:89
FilePosOrigin::End
@ End
CD3DX12_ROOT_PARAMETER::InitAsDescriptorTable
void InitAsDescriptorTable(UINT numDescriptorRanges, _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:882
CD3DX12_RESOURCE_ALLOCATION_INFO
Definition: d3dx12_win.h:257
CD3DX12_TEXTURE_COPY_LOCATION::CD3DX12_TEXTURE_COPY_LOCATION
CD3DX12_TEXTURE_COPY_LOCATION(ID3D12Resource *pRes)
Definition: d3dx12_win.h:663
CD3DX12_STATIC_SAMPLER_DESC
Definition: d3dx12_win.h:925
CD3DX12_DEPTH_STENCIL_DESC::CD3DX12_DEPTH_STENCIL_DESC
CD3DX12_DEPTH_STENCIL_DESC(const D3D12_DEPTH_STENCIL_DESC &o)
Definition: d3dx12_win.h:122
CD3DX12_ROOT_PARAMETER::InitAsUnorderedAccessView
void InitAsUnorderedAccessView(UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:915
CD3DX12_GPU_DESCRIPTOR_HANDLE::CD3DX12_GPU_DESCRIPTOR_HANDLE
CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT)
Definition: d3dx12_win.h:1140
CD3DX12_DESCRIPTOR_RANGE::CD3DX12_DESCRIPTOR_RANGE
CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE rangeType, UINT numDescriptors, UINT baseShaderRegister, UINT registerSpace=0, UINT offsetInDescriptorsFromTableStart=D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
Definition: d3dx12_win.h:685
CD3DX12_BOX::CD3DX12_BOX
CD3DX12_BOX(LONG Left, LONG Top, LONG Right, LONG Bottom)
Definition: d3dx12_win.h:76
CD3DX12_CPU_DESCRIPTOR_HANDLE
Definition: d3dx12_win.h:1073
CD3DX12_DEPTH_STENCIL_DESC::CD3DX12_DEPTH_STENCIL_DESC
CD3DX12_DEPTH_STENCIL_DESC()
Definition: d3dx12_win.h:120
CD3DX12_ROOT_CONSTANTS
Definition: d3dx12_win.h:756
CD3DX12_RECT::~CD3DX12_RECT
~CD3DX12_RECT()
Definition: d3dx12_win.h:53
CD3DX12_ROOT_DESCRIPTOR_TABLE::CD3DX12_ROOT_DESCRIPTOR_TABLE
CD3DX12_ROOT_DESCRIPTOR_TABLE(UINT numDescriptorRanges, _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *_pDescriptorRanges)
Definition: d3dx12_win.h:731
CD3DX12_CPU_DESCRIPTOR_HANDLE::operator=
CD3DX12_CPU_DESCRIPTOR_HANDLE & operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other)
Definition: d3dx12_win.h:1106
CD3DX12_CPU_DESCRIPTOR_HANDLE::CD3DX12_CPU_DESCRIPTOR_HANDLE
CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1080
CD3DX12_ROOT_CONSTANTS::Init
static void Init(_Out_ D3D12_ROOT_CONSTANTS &rootConstants, UINT num32BitValues, UINT shaderRegister, UINT registerSpace=0)
Definition: d3dx12_win.h:778
CD3DX12_BLEND_DESC::CD3DX12_BLEND_DESC
CD3DX12_BLEND_DESC(const D3D12_BLEND_DESC &o)
Definition: d3dx12_win.h:178
CD3DX12_RESOURCE_DESC::Depth
UINT16 Depth() const
Definition: d3dx12_win.h:1310
CD3DX12_DEPTH_STENCIL_DESC
Definition: d3dx12_win.h:118
CD3DX12_CPU_DESCRIPTOR_HANDLE::Offset
CD3DX12_CPU_DESCRIPTOR_HANDLE & Offset(INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1088
CD3DX12_HEAP_PROPERTIES::CD3DX12_HEAP_PROPERTIES
CD3DX12_HEAP_PROPERTIES()
Definition: d3dx12_win.h:277
CD3DX12_RESOURCE_DESC::Buffer
static CD3DX12_RESOURCE_DESC Buffer(const D3D12_RESOURCE_ALLOCATION_INFO &resAllocInfo, D3D12_RESOURCE_FLAGS flags=D3D12_RESOURCE_FLAG_NONE)
Definition: d3dx12_win.h:1255
CD3DX12_GPU_DESCRIPTOR_HANDLE::Offset
CD3DX12_GPU_DESCRIPTOR_HANDLE & Offset(INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1149
CD3DX12_BOX::CD3DX12_BOX
CD3DX12_BOX()
Definition: d3dx12_win.h:60
CD3DX12_GPU_DESCRIPTOR_HANDLE::InitOffsetted
void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize)
Definition: d3dx12_win.h:1178
CD3DX12_GPU_DESCRIPTOR_HANDLE::CD3DX12_GPU_DESCRIPTOR_HANDLE
CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1141
CD3DX12_TILED_RESOURCE_COORDINATE::CD3DX12_TILED_RESOURCE_COORDINATE
CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o)
Definition: d3dx12_win.h:465
CD3DX12_BLEND_DESC::CD3DX12_BLEND_DESC
CD3DX12_BLEND_DESC()
Definition: d3dx12_win.h:176
CD3DX12_ROOT_DESCRIPTOR_TABLE::Init
void Init(UINT numDescriptorRanges, _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *_pDescriptorRanges)
Definition: d3dx12_win.h:738
CD3DX12_TILED_RESOURCE_COORDINATE::CD3DX12_TILED_RESOURCE_COORDINATE
CD3DX12_TILED_RESOURCE_COORDINATE(UINT x, UINT y, UINT z, UINT subresource)
Definition: d3dx12_win.h:468
CD3DX12_DEPTH_STENCIL_DESC::CD3DX12_DEPTH_STENCIL_DESC
CD3DX12_DEPTH_STENCIL_DESC(CD3DX12_DEFAULT)
Definition: d3dx12_win.h:125
Diligent::SampleDesc::Quality
Uint8 Quality
Quality.
Definition: PipelineState.h:61
CD3DX12_ROOT_PARAMETER::CD3DX12_ROOT_PARAMETER
CD3DX12_ROOT_PARAMETER()
Definition: d3dx12_win.h:821
D3D12CalcSubresource
UINT D3D12CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize)
Definition: d3dx12_win.h:1195
CD3DX12_RESOURCE_DESC::Buffer
static CD3DX12_RESOURCE_DESC Buffer(UINT64 width, D3D12_RESOURCE_FLAGS flags=D3D12_RESOURCE_FLAG_NONE, UINT64 alignment=0)
Definition: d3dx12_win.h:1262
CD3DX12_TILE_REGION_SIZE::CD3DX12_TILE_REGION_SIZE
CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o)
Definition: d3dx12_win.h:487
CD3DX12_SUBRESOURCE_TILING::CD3DX12_SUBRESOURCE_TILING
CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o)
Definition: d3dx12_win.h:511
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(UINT64 size, D3D12_CPU_PAGE_PROPERTY cpuPageProperty, D3D12_MEMORY_POOL memoryPoolPreference, UINT64 alignment=0, D3D12_HEAP_FLAGS flags=D3D12_HEAP_FLAG_NONE)
Definition: d3dx12_win.h:353
CD3DX12_RANGE::CD3DX12_RANGE
CD3DX12_RANGE(SIZE_T begin, SIZE_T end)
Definition: d3dx12_win.h:450
CD3DX12_ROOT_PARAMETER::InitAsUnorderedAccessView
static void InitAsUnorderedAccessView(_Out_ D3D12_ROOT_PARAMETER &rootParam, UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:871
CD3DX12_HEAP_DESC
Definition: d3dx12_win.h:324
CD3DX12_TILE_REGION_SIZE::CD3DX12_TILE_REGION_SIZE
CD3DX12_TILE_REGION_SIZE(UINT numTiles, BOOL useBox, UINT width, UINT16 height, UINT16 depth)
Definition: d3dx12_win.h:490
CD3DX12_BOX::CD3DX12_BOX
CD3DX12_BOX(LONG Left, LONG Right)
Definition: d3dx12_win.h:65
CD3DX12_CLEAR_VALUE::CD3DX12_CLEAR_VALUE
CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o)
Definition: d3dx12_win.h:419
CD3DX12_CLEAR_VALUE::CD3DX12_CLEAR_VALUE
CD3DX12_CLEAR_VALUE(DXGI_FORMAT format, const FLOAT color[4])
Definition: d3dx12_win.h:422
CD3DX12_RASTERIZER_DESC::~CD3DX12_RASTERIZER_DESC
~CD3DX12_RASTERIZER_DESC()
Definition: d3dx12_win.h:252
CD3DX12_DESCRIPTOR_RANGE::Init
static void Init(_Out_ D3D12_DESCRIPTOR_RANGE &range, D3D12_DESCRIPTOR_RANGE_TYPE rangeType, UINT numDescriptors, UINT baseShaderRegister, UINT registerSpace=0, UINT offsetInDescriptorsFromTableStart=D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
Definition: d3dx12_win.h:707
CD3DX12_HEAP_PROPERTIES::CD3DX12_HEAP_PROPERTIES
CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE type, UINT creationNodeMask=1, UINT nodeMask=1)
Definition: d3dx12_win.h:294
CD3DX12_DESCRIPTOR_RANGE::CD3DX12_DESCRIPTOR_RANGE
CD3DX12_DESCRIPTOR_RANGE()
Definition: d3dx12_win.h:681
CD3DX12_BOX
Definition: d3dx12_win.h:58
CD3DX12_BLEND_DESC::~CD3DX12_BLEND_DESC
~CD3DX12_BLEND_DESC()
Definition: d3dx12_win.h:201
CD3DX12_RASTERIZER_DESC::CD3DX12_RASTERIZER_DESC
CD3DX12_RASTERIZER_DESC()
Definition: d3dx12_win.h:208
CD3DX12_HEAP_DESC::IsCPUAccessible
bool IsCPUAccessible() const
Definition: d3dx12_win.h:397
CD3DX12_CLEAR_VALUE
Definition: d3dx12_win.h:415
CD3DX12_SUBRESOURCE_TILING
Definition: d3dx12_win.h:507
CD3DX12_RANGE::CD3DX12_RANGE
CD3DX12_RANGE(const D3D12_RANGE &o)
Definition: d3dx12_win.h:447
CD3DX12_CPU_DESCRIPTOR_HANDLE::operator!=
bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other)
Definition: d3dx12_win.h:1102
CD3DX12_RESOURCE_ALLOCATION_INFO::CD3DX12_RESOURCE_ALLOCATION_INFO
CD3DX12_RESOURCE_ALLOCATION_INFO(UINT64 size, UINT64 alignment)
Definition: d3dx12_win.h:264
CD3DX12_ROOT_PARAMETER::InitAsShaderResourceView
static void InitAsShaderResourceView(_Out_ D3D12_ROOT_PARAMETER &rootParam, UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:860
D3D12DecomposeSubresource
void D3D12DecomposeSubresource(UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T &MipSlice, _Out_ U &ArraySlice, _Out_ V &PlaneSlice)
Definition: d3dx12_win.h:1202
CD3DX12_ROOT_CONSTANTS::CD3DX12_ROOT_CONSTANTS
CD3DX12_ROOT_CONSTANTS()
Definition: d3dx12_win.h:758
CD3DX12_TEXTURE_COPY_LOCATION::CD3DX12_TEXTURE_COPY_LOCATION
CD3DX12_TEXTURE_COPY_LOCATION()
Definition: d3dx12_win.h:658
CD3DX12_PACKED_MIP_INFO::CD3DX12_PACKED_MIP_INFO
CD3DX12_PACKED_MIP_INFO(UINT8 numStandardMips, UINT8 numPackedMips, UINT numTilesForPackedMips, UINT startTileIndexInOverallResource)
Definition: d3dx12_win.h:607
CD3DX12_RESOURCE_DESC::CD3DX12_RESOURCE_DESC
CD3DX12_RESOURCE_DESC(D3D12_RESOURCE_DIMENSION dimension, UINT64 alignment, UINT64 width, UINT height, UINT16 depthOrArraySize, UINT16 mipLevels, DXGI_FORMAT format, UINT sampleCount, UINT sampleQuality, D3D12_TEXTURE_LAYOUT layout, D3D12_RESOURCE_FLAGS flags)
Definition: d3dx12_win.h:1230
CD3DX12_GPU_DESCRIPTOR_HANDLE::InitOffsetted
void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize)
Definition: d3dx12_win.h:1173
D3D12IsLayoutOpaque
bool D3D12IsLayoutOpaque(D3D12_TEXTURE_LAYOUT Layout)
Definition: d3dx12_win.h:1514
CD3DX12_RASTERIZER_DESC
Definition: d3dx12_win.h:206
CD3DX12_ROOT_CONSTANTS::CD3DX12_ROOT_CONSTANTS
CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o)
Definition: d3dx12_win.h:759
CD3DX12_ROOT_SIGNATURE_DESC
Definition: d3dx12_win.h:1026
CD3DX12_GPU_DESCRIPTOR_HANDLE::operator!=
bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other)
Definition: d3dx12_win.h:1163
CD3DX12_STATIC_SAMPLER_DESC::Init
static void Init(_Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc, UINT shaderRegister, D3D12_FILTER filter=D3D12_FILTER_ANISOTROPIC, D3D12_TEXTURE_ADDRESS_MODE addressU=D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE addressV=D3D12_TEXTURE_ADDRESS_MODE_WRAP, D3D12_TEXTURE_ADDRESS_MODE addressW=D3D12_TEXTURE_ADDRESS_MODE_WRAP, FLOAT mipLODBias=0, UINT maxAnisotropy=16, D3D12_COMPARISON_FUNC comparisonFunc=D3D12_COMPARISON_FUNC_LESS_EQUAL, D3D12_STATIC_BORDER_COLOR borderColor=D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, FLOAT minLOD=0.f, FLOAT maxLOD=D3D12_FLOAT32_MAX, D3D12_SHADER_VISIBILITY shaderVisibility=D3D12_SHADER_VISIBILITY_ALL, UINT registerSpace=0)
Definition: d3dx12_win.h:962
CD3DX12_TILE_SHAPE::CD3DX12_TILE_SHAPE
CD3DX12_TILE_SHAPE(UINT widthInTexels, UINT heightInTexels, UINT depthInTexels)
Definition: d3dx12_win.h:536
CD3DX12_HEAP_PROPERTIES
Definition: d3dx12_win.h:275
CD3DX12_DEPTH_STENCIL_DESC::~CD3DX12_DEPTH_STENCIL_DESC
~CD3DX12_DEPTH_STENCIL_DESC()
Definition: d3dx12_win.h:169
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(UINT64 size, D3D12_HEAP_TYPE type, UINT64 alignment=0, D3D12_HEAP_FLAGS flags=D3D12_HEAP_FLAG_NONE)
Definition: d3dx12_win.h:342
CD3DX12_ROOT_CONSTANTS::CD3DX12_ROOT_CONSTANTS
CD3DX12_ROOT_CONSTANTS(UINT num32BitValues, UINT shaderRegister, UINT registerSpace=0)
Definition: d3dx12_win.h:762
CD3DX12_ROOT_SIGNATURE_DESC::Init
void Init(UINT numParameters, _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER *_pParameters, UINT numStaticSamplers=0, _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *_pStaticSamplers=NULL, D3D12_ROOT_SIGNATURE_FLAGS flags=D3D12_ROOT_SIGNATURE_FLAG_NONE)
Definition: d3dx12_win.h:1046
CD3DX12_ROOT_PARAMETER::InitAsConstantBufferView
static void InitAsConstantBufferView(_Out_ D3D12_ROOT_PARAMETER &rootParam, UINT shaderRegister, UINT registerSpace=0, D3D12_SHADER_VISIBILITY visibility=D3D12_SHADER_VISIBILITY_ALL)
Definition: d3dx12_win.h:849
CD3DX12_TEXTURE_COPY_LOCATION::CD3DX12_TEXTURE_COPY_LOCATION
CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o)
Definition: d3dx12_win.h:660
CD3DX12_RECT
Definition: d3dx12_win.h:35
CD3DX12_HEAP_DESC::CD3DX12_HEAP_DESC
CD3DX12_HEAP_DESC(const D3D12_RESOURCE_ALLOCATION_INFO &resAllocInfo, D3D12_HEAP_PROPERTIES properties, D3D12_HEAP_FLAGS flags=D3D12_HEAP_FLAG_NONE)
Definition: d3dx12_win.h:365
CD3DX12_RESOURCE_DESC::Subresources
UINT Subresources(_In_ ID3D12Device *pDevice) const
Definition: d3dx12_win.h:1322
CD3DX12_STATIC_SAMPLER_DESC::CD3DX12_STATIC_SAMPLER_DESC
CD3DX12_STATIC_SAMPLER_DESC()
Definition: d3dx12_win.h:927
CD3DX12_ROOT_PARAMETER
Definition: d3dx12_win.h:819