最近几天,我一直在研究硬件公司的GPU分析器(Qualcomm,PowerVR,Intel)。我注意到,这些工具似乎比过去使用的GPU分析器提供了更多的底层细节-XCode的OpenGL ES帧捕获和apitrace-仅列出了进行了哪些OpenGL调用以及当前状态是什么资源。

如果我想制作一个低级工具来显示诸如采样器缓存未命中和着色器汇编代码之类的内容,该如何开始?

#1 楼

对于基本的GPU时序数据,可以使用D3D时间戳查询或等效的OpenGL计时器查询。

诸如缓存未命中之类的任何低级硬件数据都将是特定于供应商的。每个GPU供应商都有自己的自定义API或扩展,用于访问其硬件上的低级性能数据。这些API的工作方式各不相同,它们不一定都公开相同的细节。同一供应商中不同芯片型号之间的可用数据也可能会有所不同,因此您可能需要了解一些有关硬件如何工作以使其有意义的信息。大多数主要的GPU供应商。


AMD:GPUPerfAPI;另请参阅AMD_performance_monitor
英特尔:性能计数器监视器(注意:我不清楚这是否包括对GPU计数器的访问,还是仅对CPU计数器的访问);另请参阅INTEL_performance_query

NVIDIA:PerfKit

PowerVR:PVRScope

Qualcomm:QCOM_performance_monitor_global_mode



评论


$ \ begingroup $
太棒了,我想我应该在公司网站上更深入地研究。我假设由于apitrace没有提供这些详细信息,因此发生了某种反转。谢谢!
$ \ endgroup $
–user3412
16年5月24日在6:06

$ \ begingroup $
哦,我认为他想写另一个perfkit。答案是除非您自己制造硬件,否则不可能。
$ \ endgroup $
–v.oddou
16年5月30日在1:30