今更WindowsでOpenGL ESのAPIトレースをするメモ
EDIT: スクラップにも書いたけど、 RENDERDOC_HOOK_EGL=0
することでPVRVFrame上でも普通にRenderDocが使えてしまったので PVRCarbon をわざわざ使うモチベーションはあんまり無いかもしれない。。
(シェーダはデスクトップOpenGLに変換されてしまうが、他はほぼ1対1対応する。)
ちょっと諸事情でWebGL1を実装しているので、その元になるOpenGL ES2のデバッグ環境を用意したい。というわけで、IMG(PowerVR)のAPIエミュレータであるPVRVFrameと、そのAPIトレーサーであるPVRCarbonの使い方のメモ。
PVRVFrame: OpenGL ESエミュレータ
インストールすると C:\Imagination Technologies\PowerVR_Graphics\PowerVR_Tools\PVRVFrame\Library\Windows_x86_64
にDLLがインストールされるのでそれを使えば良い。
DLLに対するヘッダはKhronos標準のものがそのまま使える。
このDLLを使用することでアプリケーションを直接動作させることはできるが、APIトレースを行うには DLLをレコーダーのものに差し替える必要がある 。
PVRCarbon: APIトレーサ
PVRCarbonはOpenGL ESやVulkanに対応したAPIトレーサで、従来のPVRTraceを置き換えるものと言える。本来はモバイルデバイスで実行しているアプリのトレースを想定したツールだと思うが、当然の権利のようにPC上のアプリケーションもトレースできる。
PVRCarbonのトレーサーは C:\Imagination Technologies\PowerVR_Graphics\PowerVR_Tools\PVRCarbon\Recorder\GLES\Windows_x86_64
に配置される。
このままだとトレースは動作しないため、アプリケーションのディレクトリに pvrcarbon.json
のファイル名で設定JSONを配置する必要がある。
{
"recording":
{
"hostLibrary":
{
"egl": "C:/Imagination Technologies/PowerVR_Graphics/PowerVR_Tools/PVRVFrame/Library/Windows_x86_64/libEGL.dll",
"glesv2": "C:/Imagination Technologies/PowerVR_Graphics/PowerVR_Tools/PVRVFrame/Library/Windows_x86_64/libGLESv2.dll"
},
"network":
{
"enable": true
}
}
}
この network.enable = true
によって、起動したアプリケーションは PVRCarbonの接続を待ち受けるようになる。
アプリケーションが接続待ちで停止した状態でPVRCarbonを起動して適当にキャプチャすると、APIトレースを参照できる。
(↓ PowerVR SDKのサンプルをキャプチャしてみた)
かんそう
実にかんたんだった。
GPUデバッガとしてのPVRCarbon
キツい(直球)。テキクスチャやバッファのダンプが無かったり不親切で、本当にAPI call historyとバリデーションの機能しかない質実剛健ぶり。2010年ならともかくこれ2020年から提供開始された新作だからなぁ。。
良いニュースと言って良いのかは何ともだが、新規のツールがリリースされるという事は、とりあえずGPUにも投資が続いているわけで生き残ったGPUベンダとしての今後には期待したい。
OpenGL ES 2
スクラップの方に書いた けど、WebGPUが来年に迫る中で今さらWebGL1やGLES2にinvestする意味が有んのかというのはというのは難しい問題だ。。
WebGLのユニバーサルっぷりはOpenGL ES実装としてのANGLEのユニバーサルっぷりでもあり、実際もうANGLE以外のGLES実装は死んでいくんじゃないかと思う。
- GLOVE( https://github.com/stjordanis/GLOVE-1 )は本家Think-Siliconのサイトから消滅した
- AppleはGLESを非推奨APIにしている
- ソフトウェアレンダラのSwiftShaderはGLES実装を削除すると繰り返し警告している(実装としてはVulkan特化としてGLESはANGLEでサポート)
GPU SDKの進化という意味では、QualcommのSDKも2016年くらいから大きな更新が無く、かわりにAndroid側のSDKが充実しつつある(AndroidのVulkan開発環境がGoogleのStadiaにも流用されているという事情もあるのかもしれないが。。)。
...じゃぁOpenGL ES2までしか実装製品の無いTAKUMI( http://www.gshark.com )とかどうすんのかと思ったら何と今年に入ってOpenVGのコンフォーマンス( https://www.khronos.org/conformance/adopters/conformant-products/openvg )を通している。。どういう事なの。。
Discussion