本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

VRAM情報の取得(AMD編)

最近AMDドライバを更新したらVRAM情報用の拡張がなくなっているじゃないか、の続きの話です。
関連する話は、OpenGLでVRAM情報を得る – AMDや、OpenGLでVRAM使用状況を取得…出来なくなった?!などになります。

結局のところ、ドライバを更新して Catalyst 13.4で RADEON 6850 を使用している状況では、ATI_meminfo エクステンションがやっぱり消えてしまっているようです。そこで一応強引に、VBO_FREE_MEMORY_ATI,TEXTURE_FREE_MEMORY_ATI を試してみたところ、なんと値が返ってきました。値の内容もそれなりに正しいようです。

こんな感じです。

VBO_FREE_MEMORY_ATI  1036288, 774144, 2096128, 2096128

4つの値がある理由はパラメータ1つで4つの値が返ってくるためです。詳しくはATI_meminfoの仕様を参照してください。

1GBの搭載メモリなので、1036288 という値が返ってきているところは正常そうです。ただ、元々のAPIの仕様からか現在使用中もしくは空きメモリをトータルで返す機能はないようです。これではモニタリングという点では厳しそうです。

また、GL_TOTAL_PHYSICAL_MEMORY_ATI で搭載している物理メモリ分もとれるよ!と過去の日記では書いたのですが、どうやらこれは現在使えないようです。この定義はどうやら Undocumented extension 的な扱いだったようです・・・。

話を戻して、他のアプリケーションの起動によって使用可能領域に関するパラメータが変動するかを調べてみます。
↑では第2パラメータの部分がアロケーションの最大ブロックなので、これが変動するかを確認してみようとおもいます。複数のアプリケーションを起動した後、取得したら値が変わるかどうか。
試してみた結果は、変動無し。まだまだ使用量が足りなかったのかもしれません。小ブロックでも消費した分がわかるAPI拡張だったら安心できるのにと思うのですが・・・OpenGLだとVRAMのメモリ使用量を気にするな、という意志を継いでいるのでしょうか。

以上の点により、とりあえずはなんとなく値はとれるようだけど、NVIDIAに比べて、信用ならない印象です。
どの環境でもそれなりにというのであればProcessExplorerが搭載している機能と同じ方法でやるしかなさそうです。Intelの場合はAMD以上に拡張そのものが使えないですし。

OpenGLプログラミング
すらりんをフォローする
すらりん日記
タイトルとURLをコピーしました