D3D12 内存分配器
D3D12 内存分配器 (D3D12MA) 是一个 C++ 库,它提供了一个简单易集成的 API,可帮助您为 DirectX®12 缓冲区和纹理分配内存。
许多游戏和工作站笔记本电脑都配备了 (1) 集成的省电图形设备和 (2) 高性能独立图形设备。不幸的是,如果未选择最佳图形设备,3D 高强度应用程序的性能可能会大打折扣。例如,游戏可能在集成 GPU 上运行的速度为每秒 30 帧 (FPS),而不是独立 GPU 提供的 60 FPS。作为开发者,您可以通过在可执行文件的源代码中添加一行代码来轻松解决此问题。
extern "C" { _declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 0x00000001; }是的,就这么简单。此行将确保在运行应用程序时选择高性能图形设备。
值得注意的是,此方法有一些简单的要求才能正常工作:
通常,现代 PC 游戏满足上述所有要求,除了极少数轻量级工作负载,例如扫雷和纸牌。
但是,这些说明不适用于 Vulkan™ 或 OpenCL™ 应用程序。简而言之,AMD Vulkan™ 可安装客户端驱动程序 (ICD) 会根据性能启发式函数以降序排列其设备。相反,AMD OpenCL™ ICD 不会对设备进行排序。

您是否注意到当笔记本电脑连接到 AC 市电时性能有所提高?令人惊讶的是,这可能是由于您的 Radeon 附加设置!

首先,用户可以将以下一项全局应用程序设置分配给电池或插入电源模式:
因此,这些设置对电池续航时间有很大影响。因此,不建议更改这些设置。

其次,用户可以将以下一项图形设置分配给应用程序:
方便的是,图形驱动程序包含一个常用游戏和应用程序列表,其中大部分可以由用户更改。此外,用户还可以添加应用程序。
最值得注意的是,应用程序设置查找仅使用可执行文件名,不包括其路径。因此,最好避免使用通用名称或其他已知常用应用程序的名称,例如“game.exe”、“player.exe”或“launcher.exe”。
值得庆幸的是,如果应用程序“未分配”,图形驱动程序仍会测试可执行文件是否请求了高性能图形。实际上,驱动程序会在可执行文件的导出表中搜索“AmdPowerXpressRequestHighPerformance”。事实上,您可以使用 Microsoft Visual Studio 工具命令提示符轻松自行测试:
dumpbin.exe /exports app.exe | find.exe “AmdPowerXpressRequestHighPerformance”为简便起见,下表显示了根据全局和应用程序设置选择的 GPU:
| 全局设置 | 应用程序设置 | 选定的 GPU |
| 强制省电图形 | 未分配 | 省电 |
| 高性能 | 省电 | |
| 省电 | 省电 | |
| 基于电源源 | 省电 | |
| 优化省电 | 未分配 | 省电 |
| 高性能 | 高性能 | |
| 省电 | 省电 | |
| 基于电源源 | 省电 | |
| 优化性能 | 未分配 | 省电 |
| 高性能 | 高性能 | |
| 省电 | 省电 | |
| 基于电源源 | 高性能 | |
| 最大化性能 | 未分配 | 高性能 |
| 高性能 | 高性能 | |
| 省电 | 省电 | |
| 基于电源源 | 高性能 |
最后,我观察到有些应用程序通过添加 AmdPowerXpressRequestHighPerformance 将性能提高了 80%。因此,我强烈推荐此解决方案。