D3D12_HEAP_TYPE 枚举 (d3d12.h)
指定堆的类型。 驻留时,堆驻留在具有特定 CPU 缓存属性的特定物理内存池中。
语法
typedef enum D3D12_HEAP_TYPE {
D3D12_HEAP_TYPE_DEFAULT = 1,
D3D12_HEAP_TYPE_UPLOAD = 2,
D3D12_HEAP_TYPE_READBACK = 3,
D3D12_HEAP_TYPE_CUSTOM = 4,
D3D12_HEAP_TYPE_GPU_UPLOAD
} ;
常量
D3D12_HEAP_TYPE_DEFAULT 值:1 指定默认堆。 此堆类型体验 GPU 的最大带宽,但不能提供 CPU 访问权限。 GPU 可以从此池读取和写入内存,资源转换屏障可能会更改。 大多数堆和资源应位于此处,并且通常通过上传堆中的资源进行填充。 |
D3D12_HEAP_TYPE_UPLOAD 值: 2 指定用于上传的堆。 此堆类型具有针对上传到 GPU 而优化的 CPU 访问,但不体验 GPU 的最大带宽量。 此堆类型最适合 CPU 写入一次、GPU 读取一次数据;但 GPU-read-once 比必要更严格。 GPU-read-once-or-from-cache 是数据可接受的用例;但由于 GPU 缓存设计和大小不同,此类用法难以判断。 如有疑问,请坚持 GPU-read-once 定义,或分析将数据复制到_DEFAULT堆与从_UPLOAD堆读取数据之间的许多 GPU 上的差异。 必须使用 D3D12_RESOURCE_STATE 创建此堆中的资源_GENERIC_READ并且不能更改此资源。 此类堆的 CPU 地址对于 CPU 读取通常无效。 下面是_UPLOAD堆的典型用法:
对于_UPLOAD堆,以下可能不是很好的用法:
|
D3D12_HEAP_TYPE_READBACK 值: 3 指定用于回读的堆。 此堆类型具有针对从 GPU 读取数据而优化的 CPU 访问,但不会体验 GPU 的最大带宽量。 此堆类型最适合 GPU 写入一次、CPU 可读数据。 CPU 缓存行为是写回的,这有利于多个子缓存行 CPU 读取。 必须使用 D3D12_RESOURCE_STATE_COPY_DEST 创建此堆中的资源,并且不能更改此资源。 |
D3D12_HEAP_TYPE_CUSTOM 值: 4 指定自定义堆。 应用程序可以直接指定内存池和 CPU 缓存属性,这对于 UMA 优化、多引擎、多适配器或其他特殊情况非常有用。 为此,应用程序应了解适配器体系结构以做出正确的选择。 有关更多详细信息,请参阅 D3D12_FEATURE_ARCHITECTURE, D3D12_FEATURE_DATA_ARCHITECTURE和 GetCustomHeapProperties。 |
注解
此枚举由以下 API 项使用:
堆类型分为两个类别:抽象堆类型和自定义堆类型。以下是抽象堆类型:
- D3D12_HEAP_TYPE_DEFAULT
- D3D12_HEAP_TYPE_UPLOAD
- D3D12_HEAP_TYPE_READBACK
- D3D12_HEAP_TYPE_CUSTOM
请注意,与缓冲区) 不同, (纹理不能是堆类型 UPLOAD 或 READBACK。
要求
要求 | 值 |
---|---|
Header | d3d12.h |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈