D3D12 内存分配器
D3D12 内存分配器 (D3D12MA) 是一个 C++ 库,它提供了一个简单易集成的 API,可帮助您为 DirectX®12 缓冲区和纹理分配内存。
AMD 很荣幸宣布支持微软®及其 DirectStorage 的发布。Microsoft DirectStorage SDK 现已可供下载。我们鼓励开发者 下载我们最新的驱动程序 以确保获得最佳支持。
Luminous Productions® 正在与 AMD 和微软®合作,将 DirectStorage 集成到他们即将推出的游戏 Forspoken™ 中。观看 GDC 演讲“深入解析 Forspoken 的世界:Forspoken 的技术”,了解集成 DirectStorage 和 AMD FidelityFX™ 的经验。
DirectStorage API 承诺通过提供为现代硬件设计的优化文件 I/O 和 GPU 资源加载 API 来帮助开发者改善游戏体验。由于我们提供 CPU、GPU 和芯片组的独特优势,AMD 正在与微软、Phison 等存储硬件供应商以及游戏工作室密切合作,以确保 DirectStorage 针对我们整个硬件和软件栈进行了优化。
“AMD 在整合技术学科方面拥有悠久的历史,Phison 很高兴能够分享我们对 SSD 的知识来帮助改善游戏。在 Phison,我们正在积极追求最佳技术,以在 2019 年率先推出 Gen4,现在正在推动 Gen5 产品在 2022 年上市。”
Sebastien Jean
Phison 首席技术官
DirectStorage API 鼓励开发者为 Windows 11 和 Windows 10 编写更优化的代码。它简化了批量文件读取请求、将资源异步传输到 GPU 或 CPU 以及对 I/O 进行优先级排序的过程。
我们相信 DirectStorage 有潜力改变 PC 游戏。通过它,开发者能够显著缩短 PC 上的加载时间。
DirectStorage 提供以下功能来提高游戏中的 I/O 性能
现代存储设备(如 NVMe®)针对多个并发工作负载进行了优化,以保持峰值吞吐量。传统的串行文件 I/O 已不再适合现代游戏和即时渲染。DirectStorage 鼓励使用简化的 API 同时批量处理多个请求以最大化吞吐量。
使用传统的存储 API 正确实现异步 I/O 可能会很困难,大多数软件都依赖于串行 I/O。DirectStorage 简化了异步排队、分派和通知 I/O 请求和传输的任务。现在,游戏使用最优路径加载数据应该会容易得多。虽然 DirectStorage 负责加载资源,但程序可以执行其他任务并发出额外的 I/O 请求。
使开发者能够优先处理请求,确保玩家在加载和流式传输资产时获得最流畅的体验,从而创造更无缝的用户体验。
虽然 DirectStorage 帮助开发者利用硬件,但开发者有责任确保他们的数据能够以最小的 CPU 干预进行加载,以最小化加载时间并最大化流式传输性能。当存储性能是加载性能的瓶颈时,由于其远小于存储传输时间,因此从资产加载中获得的 CPU 利用率时间被认为不那么重要。如今,我们发现自己处于相反的情况。加载时处理资产的代码现在是最常见的瓶颈。
开发者应组织其数据以最小化加载数据所需的 CPU 工作负载。此外,开发者应减少在游戏启动时加载的数据量,并依靠快速存储设备的性能来流式传输所需的最少资产集。加载的资产越少,传输的数据就越少,内存消耗就越低,并且超额订阅内存的可能性就越低。
ID3D12Device::GetCopyableFootprints 返回的布局保存到磁盘,以防止数据被复制。这与设备无关,并且设计为跨供应商工作。请继续关注 AMD 即将发布的演示和后续博客文章,其中将提供有关如何实现这些目标和集成 DirectStorage 的示例。
© 2022 Advanced Micro Devices, Inc. AMD、AMD Arrow 标志、FidelityFX、Radeon、Ryzen 及其组合是 Advanced Micro Devices, Inc. 的商标。Microsoft 和 Windows 是 Microsoft Corporation 在美国和/或其他司法管辖区的注册商标。NVMe® 文字商标是 NVM Express 组织在美国和其他国家/地区的注册服务商标。本文献中使用的其他产品名称仅用于识别目的,并可能是其各自公司的商标。