RenderDoc はグラフィックスのデバッグ支援ツールです。オープンソースとして開発されており、多くのグラフィックスAPIに対応しています。OpenGL や DirectX11、DirectX12 や Vulkan などを対象として使えるので、触ってみたことがある人も多いのではないでしょうか。
多くの場面では、ローカル環境内で完結することが多いと思いますが、ここで取り上げるのはこの RenderDoc をリモートで使うというものです。
リモート側の要件
調査対象アプリケーションを動かす側のことを、リモート側とここでは呼ぶことにします。リモート側に必要とされるのは、 RenderDoc のリモートサーバーを動かすことと、調査対象アプリケーションを動かすこと、です。リモートサーバーへの接続を受け入れできるように、ファイアウォールなどの設定変更も、場合によっては必要になるかもしれません。
リモートサーバーを動かすにあたり、ツールのバージョンに気を遣う必要があります。結果を閲覧するGUIツール側のバージョンとピタリと合わせておきます。
操作側の要件
いつものRenderDoc のGUI ツールウィンドウを開いて操作する側を、ここでは操作側(もしくはクライアント)と呼ぶことにします。私の場合、普段の開発環境は Windows 環境です。こちらで RenderDoc による調査をするイメージです。
この記事中では、 RenderDoc v1.30 を使用して、操作側とリモート側を構成して、描画コマンドのキャプチャ&調査の方法について紹介します。
準備
環境のセットアップを説明します。ここではリモート側に Raspberry Pi 4 、クライアント側に Windows11 とします。 RenderDoc はこのように OS が違っていても調査が出来る、とても便利なものです。
リモート側の設定
RenderDoc がインストール済みとします。その状態で以下のコマンドを実行して、リモートサーバーを起動します。
$ renderdoccmd remoteserver -d
操作側(クライアント側) の設定
まずは接続先の登録を行います。
メニュー「Tools」から「Manage Remote Servers」を選択します。すると、以下のようなウィンドウが開きます。ここで、下部の欄に接続先のホストを入力します(下記の図では IP アドレスを入力しています)。入力したら、 Add ボタンを押します。
次に、リプレイコンテキストを切り替えます。これは RenderDoc の左下部分から行います。
先ほど登録したホストが列挙されているので、それを選択します。
リモートサーバーと接続が出来ると、Offlline ではなく Online になり、接続完了後にはステータスバー部分で、 Remote server ready と表示されます。
アプリケーションの起動とキャプチャの実行
アプリケーションの起動には、いつもの手順で行います。Executable Path の … からは、リモートのファイルシステムが見えるので、そこから起動するアプリケーションの選択、作業ディレクトリの設定などを行います。
この後は Launch ボタンを押してアプリケーションを起動します。リモート側では、アプリケーションが起動してウィンドウが出てくると思います。もし起動してこない場合には、パスの問題か、起動に必要なファイルが欠けていると思われるので、単体で起動するかどうかの確認から始めるとよいでしょう。
いつもの手順でキャプチャを取得し、ファイルを開くことが可能です。以下の図はキャプチャを開いたときの様子を示しています。このとおり、Event Browser では描画コマンドのリストが閲覧できますし、 Texture Viewer ではテクスチャや描画先の情報など確認できます。
まとめ
今回は RenderDoc をリモート環境で使う場合の手順について説明しました。多くの場合は普段使用している開発環境でキャプチャを行って調査・パフォーマンス向上の手がかりを見ていくと思います。ごくたまに普段の開発環境ではない、いわゆるターゲットとか実機とかそういうものを対象として、リモートでキャプチャをしたい場合があると思いますので、そのような場面に向けて本記事を作成しました。
RenderDoc は Android にも対応しているようなので、この場合にも事実上のリモートによるキャプチャ操作になりますね。
参考
これから描画コマンドをみてパフォーマンス調査する人は、このあたりを読んでおくとスムーズかもしれませんね。
余談: ラズベリーパイ用のRenderDoc
ここからは余談です。RenderDoc を Raspberry Pi 4 で使用するために、ソースコードからビルドを行った記録です。
背景
Raspberry Pi でも RenderDoc は使用可能という情報を見かけます。普通に、以下のコマンドでインストールもできました。
$ sudo apt install renderdoc
しかし、本記事中でも触れましたが、バージョンが違うとリモートでのキャプチャができませんでした。そのため、 Windows 側で使用している v1.30 に合わせる必要がありました。また、RenderDoc は Raspberry Pi 向けにビルド済みのものを公式からは配布されていないようなので、ソースコードからコンパイルの必要がありました。
Linux (x64) 用であればビルド済みのものがあるので、今回のような手順は不要と思います。
また、apt でインストールできる RenderDoc で、ラズベリーパイ上のローカルでキャプチャ操作をすれば問題ない場合には、そのまま使うというのも1つの手です。リモートにこだわらなくてよいかと思います。
ソースコード取得&ビルド
以下のコマンドでソースコードを取得して、バージョンを合わせるためにブランチ(タグ) を切り替えます。
$ git clone --recursive https://github.com/baldurk/renderdoc.git
$ git checkout v1.30
続いて、コンパイルに必要になる開発ツールをインストールします。
$ sudo apt install libxcb-keysyms1-dev
$ sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
$ sudo apt install automake libpcre3-dev libqt5svg5-dev libqt5x11extras5-dev libx11-dev libx11-xcb-dev byacc
以下のコマンドでコンパイルを開始します。割と長い時間のコンパイル時間が掛かります。必要なパッケージがインストールされていないと途中で失敗します。
$ cd renderdoc
$ mkdir build; cd build
$ cmake ..
$ make -j4
最後に、以下のコマンドでインストールします。
$ sudo make install
コメント