如何查找进程正在使用哪个图形 API?

问题描述

某些应用和游戏可以同时使用多个图形 API,例如 OpenGLES 或 Vulkan,每个 API 都可以同时使用,例如使用 OpenGLES 和 Vulkan 的 pubg™ Mobile 或 CoD™ Mobile,但您可以选择在进程运行时使用哪个 API。

我试过 lsof -p <pid> | grep -i -e gles -e vulkan 并且它给了我 *GLES.solibvulkan.so 这意味着它们不是在运行时加载,而是在编译时链接

问题:如何在linux下找出进程使用和调用函数来渲染帧的API? (android 基本上是一个基于 linux 的操作系统)

解决方法

您需要附加调试器或插入 API 层来监控正在使用哪些 API 的绘制调用。你可以用采样分析器做同样的事情。出现在所有屏幕应用程序中的 Android UI 框架也使用 GLES,因此您需要注意这一点。 (尽管在全屏游戏中,UI 框架不应该做任何事情,除了在启动时进行一些设置调用。)所有这些都要求应用可调试。