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