RenderDoc 与 Radeon GPU Profiler 互操作 BETA
除了通常使用 Radeon Developer Panel 生成 RGP 配置文件的用例外,还可以使用 RenderDoc 生成配置文件。当 RenderDoc 生成 RGP 配置文件时,两个工具中的事件可以相互关联。此功能仅支持 DirectX12 和 Vulkan。
预期用途
当 RenderDoc 重放捕获的帧时,与应用程序的正常运行相比,性能上会有预期的差异。因此,当 RenderDoc 生成配置文件时,整体配置文件数据可能无法准确反映应用程序的真实性能。为了更准确地反映应用程序的整体性能,应使用 Radeon Developer Panel 直接从应用程序捕获配置文件。
从 RenderDoc 捕获生成的文件配置数据以及支持的互操作性功能,可以帮助确定帧的哪些元素消耗了最多的 GPU 时间。因此,鼓励用户在分析性能时利用这两种生成配置文件数据的方法。
从 RenderDoc 获取配置文件
首先,像往常一样加载 RenderDoc 并捕获一帧。在 RenderDoc 中加载捕获时,请确保使用主菜单(RenderDoc 用户界面中的“文件”菜单下的)中的**“打开捕获并设置选项”**菜单项,并将**“重放优化级别”**设置设置为**“最快”**。如果不设置此项,配置文件中可能会出现原始帧中不存在的额外事件,因为 RenderDoc 可能会在其他重放级别中插入额外事件。使用其他重放级别时,某些 RenderDoc 捕获可能无法生成配置文件。

**“重放优化级别”**设置也可以在 RenderDoc 的**“设置”**对话框中为所有捕获全局设置。

接下来,请确保**“核心”**设置已配置为允许 Radeon GPU Profiler 集成。

最后,按照下面的说明为加载的捕获创建一个新配置文件。

这将启动配置文件生成过程,该过程会将新配置文件嵌入到 RenderDoc 捕获文件中。如果这是第一次执行此操作,RenderDoc 将弹出一个提示,允许指定 Radeon GPU Profiler 的路径。生成配置文件完成后,RenderDoc 将启动 Radeon GPU Profiler,新配置文件即可进行分析。
在事件之间导航
在两个工具中导航事件是通过上下文菜单完成的。例如,在 Radeon GPU Profiler 中,右键单击事件并选择“选择 RenderDoc 事件”,如下图所示。

这将导致两个工具进行通信,并触发在 RenderDoc 中选择相同的事件,如下所示。

此时,用户可以使用 RenderDoc 的帧调试功能检查所讨论的事件。
接下来,用户可以遵循相同的步骤返回 RGP。这可以通过在事件浏览器中右键单击事件并选择“选择 RGP 事件”来完成,如下所示。

这将导致两个工具进行通信,并触发在 Radeon GPU Profiler 中选择相同的事件,如下所示。

请注意,两个工具使用不同的编号方案来标记其事件。因此,同一事件在每个工具中具有不同的 ID 是正常的。
注意:在连接 RGP 到 RenderDoc 时,您可能会收到 Windows 防火墙警报。这是正常行为,因为 RenderDoc 和 RGP 需要相互通信(通过套接字)。这绝不表示 RGP 或 RenderDoc 试图通过 Internet 与 AMD 服务器通信。这些工具不会尝试连接到任何类型的远程 AMD 服务器,也不会通过远程连接发送个人或系统信息。
已知限制
-
用户可以跨两个工具关联 GPU 工作(绘制/分派)。请注意,这不包括复制、屏障、清除和间接绘制/分派等入口点。
-
由于 RenderDoc 重放器会序列化入口点,因此生成的配置文件可能看起来是 CPU 绑定的。这会在波前占用率视图中看到间隙,而使用 Radeon Developer Panel 获取配置文件时可能不存在这些间隙。
-
在从同一个 RenderDoc 实例创建连续的 RGP 配置文件时有时会失败。如果用户在触发第二个配置文件之前多次获取同一应用程序的 RenderDoc 捕获,就会发生这种情况。为了解决此问题,请启动一个新的 RenderDoc 实例,并使用所需的捕获进行配置文件生成。
-
在某些情况下,来自 RenderDoc 的配置文件不包含 GPU 事件。为了解决此问题,请通过“工具 —> 创建新的 RGP 配置文件”再次重复配置文件生成过程。
-
RenderDoc 配置文件的系统活动视图可能与本机配置文件的系统活动视图不匹配。这是由于重放器和本机应用程序之间的命令缓冲区提交模式不同。
-
Vulkan 特有:在图像创建期间,RenderDoc 有时会强制添加额外的使用/标志,这些标志可能在原始应用程序中不存在。这实际上会禁用硬件平铺优化,而这些优化在原始应用程序运行时默认是启用的。
-
Vulkan 特有:RenderDoc 重放器不支持在异步计算队列上回放计算工作。这意味着配置文件将显示所有计算工作都在图形队列上运行。
-
Vulkan 特有:在某些情况下,本机配置文件会包含颜色/深度清除操作,而 RenderDoc 配置文件中可能不存在这些操作。
-
DX12 特有:RenderDoc 重放器有时会注入 `CopyBufferRegion` 调用,作为 Map/Unmap 优化的组成部分。在波前占用率视图中,这些调用会显示为高计算工作峰值。
-
如果 RenderDoc 打开的 RGP 配置文件正在运行,并且 RenderDoc 被重新启动,则两个工具之间的互操作连接将无法重新建立。在这种情况下,在打开新的 RenderDoc 捕获后,“创建新的 RGP 配置文件”菜单选项将保持禁用状态。这是由已打开的命名管道引起的。要解决此问题,请关闭 RGP,然后重新启动 RenderDoc。在 Linux® 上,如果 RenderDoc 进程未正常关闭,也会发生类似情况。如果发生这种情况,可能需要等待几分钟才能移除连接,然后再重新启动 RenderDoc。可以从终端窗口执行以下命令来确定命名管道是否仍已打开:
- netstat -p | grep “AMD”