Skip to main content
提供有关适配器架构的详细信息,以便你的应用程序可以更好地针对某些适配器属性进行优化。
注意 此结构已被 D3D12_FEATURE_DATA_ARCHITECTURE1 结构取代。如果你的应用程序针对 Windows 10 版本 1703(创意者更新)或更高版本,请改用 D3D12_FEATURE_DATA_ARCHITECTURE1(和 D3D12_FEATURE_ARCHITECTURE1)。

语法

成员

NodeIndex
类型:UINT
在多适配器操作中,这指示设备的哪个物理适配器是相关的。 请参阅多适配器系统。 在调用 CheckFeatureSupport 之前由应用程序填写 NodeIndex,因为应用程序可以检索每个适配器架构的详细信息。 TileBasedRenderer
类型:BOOL
指定硬件和驱动程序是否支持基于图块的渲染器。 如果硬件和驱动程序支持基于图块的渲染器,则运行时将此成员设置为 TRUE UMA
类型:BOOL
指定硬件和驱动程序是否支持 UMA。 如果硬件和驱动程序支持 UMA,则运行时将此成员设置为 TRUE CacheCoherentUMA
类型:BOOL
指定硬件和驱动程序是否支持缓存一致的 UMA。 如果硬件和驱动程序支持缓存一致的 UMA,则运行时将此成员设置为 TRUE

备注

如何使用 UMA 和 CacheCoherentUMA

D3D12 应用程序应关注管理内存驻留并提供最佳堆属性。 D3D12 应用程序可以通过仅管理 D3D12_HEAP_TYPE_DEFAULT 堆中资源的驻留状态,以保持简化并在许多 GPU 架构上合理运行。 这些应用程序只需要针对 DXGI_MEMORY_SEGMENT_GROUP_LOCAL 调用 IDXGIAdapter3::QueryVideoMemoryInfo,并且它们必须容忍 D3D12_HEAP_TYPE_UPLOAD 和 D3D12_HEAP_TYPE_READBACK 来自同一内存段组。
然而,这样一个简单的设计对于突破极限的应用程序来说过于受限。 因此,D3D12_FEATURE_DATA_ARCHITECTURE 帮助应用程序更好地针对底层适配器属性进行优化。 一些应用程序可能希望针对独立适配器更好地优化,并承担管理系统内存和视频内存预算的额外复杂性。 如果上传堆的大小与默认纹理的大小相当,则内存利用率几乎翻倍是可用的。 在支持这种优化时,应用程序可以检测两个驻留预算或识别 UMAfalse 一些应用程序可能希望针对集成/UMA 适配器更好地优化,特别是那些希望延长移动设备电池寿命的应用程序。 简单的 D3D12 应用程序被迫在具有不同归属的堆之间复制数据,而这在 UMA 上并不总是必要的。 但是,UMA 属性本身包含 GPU 设计中相当模糊的灰色地带。 不要假设 UMA 意味着所有 GPU 可访问的内存都可以自由地成为 CPU 可访问的,因为它并非如此。 有一个更符合这种类型思维的属性:CacheCoherentUMA CacheCoherentUMAfalse 时,一个单一驻留预算可用,但 UMA 设计通常从三种堆归属中受益。 确实存在通过明智地使用提供内存的 CPU 访问的上传和回读资源和堆来消除资源复制的机会。 然而,这些机会并不明确。 因此,应用程序应该谨慎;建议在各种”UMA”系统上进行实验,因为可能需要启用或排除某些设备 ID。 建议了解 GPU 内存架构以及堆类型如何转换为缓存属性。 成功的可行性可能取决于每个处理器读取或写入数据的频率、数据访问的大小和局部性等。 对于高级开发人员:当 UMA 为 true 而 CacheCoherentUMAfalse 时,这些适配器最独特的特征是上传堆仍然是写入合并的。 但是,某些 UMA 适配器可以从默认堆和上传堆的无 CPU 访问和写入合并属性中受益。 有关详细信息,请参阅 GetCustomHeapProperties CacheCoherentUMA 为 true 时,应用程序可以更强烈地考虑放弃堆的归属,并在任何地方使用与上传堆等效的自定义堆。 零拷贝 UMA 优化更普遍地受到鼓励,因为更多场景将只是从共享使用中受益。 内存模型非常有利于更多场景和更广泛的采用。 可能仍然存在一些不易获得收益的极端情况,但它们应该比其他选项更罕见且危害更小。 对于高级开发人员:CacheCoherentUMA 意味着内存层次结构中的大量缓存在 CPU 和 GPU 之间也被统一或集成。 最独特的可观察特征是,在 CacheCoherentUMA 上上传堆实际上是回写的。 对于这些架构,在上传堆上使用写入合并通常是不利的。 绝大多数单适配器应用程序应忽略低级细节。 像往常一样,单适配器应用程序可以简化环境并确保 CPU 对上传堆的写入使用写入合并友好的模式。 低级细节有助于强化多适配器应用程序的概念。 多适配器应用程序可能需要充分了解适配器架构属性,以选择最佳自定义堆属性,以便在适配器之间有效地移动数据。

要求

头文件: d3d12_xs.h 或 d3d12_x.h
库: d3d12_xs.lib 或 d3d12_x.lib
支持的平台:XBOX Series 主机和 XBOX One 系列

另请参阅

核心结构 D3D12_FEATURE
最后修改于 2026年8月24日