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-write-once、GPU-read-once 数据;但 GPU 读取一次比必要更严格。 GPU-read-once-or-from-cache 是数据的可接受用例;但是,由于 GPU 缓存设计和大小不同,此类用法很难判断。 如有疑问,请坚持 GPU 读取一次定义或分析将数据复制到_DEFAULT堆与从_UPLOAD堆读取数据之间的许多 GPU 的差异。 必须使用此堆中的资源创建 D3D12_RESOURCE_STATE_GENERIC_READ,并且无法从此更改。 此类堆的 CPU 地址通常对于 CPU 读取效率不高。 下面是_UPLOAD堆的典型用法:
对于_UPLOAD堆,以下情况可能不太好:
|
D3D12_HEAP_TYPE_READBACK 值:3 指定用于回读的堆。 此堆类型具有针对从 GPU 中读取数据而优化的 CPU 访问,但不会体验 GPU 的最大带宽量。 此堆类型最适合 GPU-write-once、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。
要求
要求 | 价值 |
---|---|
标头 | d3d12.h |