D3D12_HEAP_PROPERTIES 结构是 Direct3D 12 中的一部分,用于描述资源堆(heap)的属性。以下是该结构的定义:
typedef struct D3D12_HEAP_PROPERTIES {
  D3D12_HEAP_TYPE Type;
  D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
  D3D12_MEMORY_POOL MemoryPoolPreference;
  UINT                CreationNodeMask;
  UINT                VisibleNodeMask;
} D3D12_HEAP_PROPERTIES;

这个结构有以下几个字段:

1. Type: 表示堆的类型,是一个枚举值,包括以下几种类型:
   - D3D12_HEAP_TYPE_DEFAULT: 默认堆,通常是 GPU 可访问的。
   - D3D12_HEAP_TYPE_UPLOAD: 上传堆,用于 CPU 向 GPU 上传数据。
   - D3D12_HEAP_TYPE_READBACK: 读取回堆,用于 CPU 从 GPU 读取数据。
   - D3D12_HEAP_TYPE_CUSTOM: 自定义堆类型。

2. CPUPageProperty: 表示堆在 CPU 上的页面属性,是一个枚举值,包括以下几种属性:
   - D3D12_CPU_PAGE_PROPERTY_UNKNOWN: 未知属性。
   - D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE: 不可用属性。
   - D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE: 写组合属性。

3. MemoryPoolPreference: 表示内存池的偏好,是一个枚举值,包括以下几种偏好:
   - D3D12_MEMORY_POOL_UNKNOWN: 未知偏好。
   - D3D12_MEMORY_POOL_L0: Level 0 内存池。
   - D3D12_MEMORY_POOL_L1: Level 1 内存池。

4. CreationNodeMask: 表示在哪个节点上创建堆。节点是指在 NUMA 系统中的物理节点。

5. VisibleNodeMask: 表示哪些节点上的资源是可见的。在多节点系统中,某些资源可能只在特定的节点上可见。

这个结构通常用于创建资源时指定资源所需的堆属性。在使用时,你需要根据你的需求填写这些字段,然后将该结构传递给创建资源的函数,比如 ID3D12Device::CreateCommittedResource。


转载请注明出处:http://www.zyzy.cn/article/detail/25944/Win32 API/D3d12.h/D3D12_HEAP_PROPERTIES