Nvidia 290.10 64 ビット ドライバーを使用して、Linux ベースの c++ OpenGL アプリケーションに取り組んでいます。非常に多くのライブデータを使用するため、メモリフットプリントを削減しようとしています。
私は valgrind/massif を使用してヒープの使用状況を分析してきました。さまざまなことを最適化するのに役立ちましたが、現在使用されているヒープ メモリの最大のチャンクは libGL によって割り当てられています。どのようにしきい値を設定しても、massif では、それらの割り当てがどこから来たのかを詳細に確認することはできません。それが libGL であるということだけです。ピーク時には、libGL によって約 250MB が割り当てられます (総ヒープ使用量 900MB のうち)。グラフィック カードには、VBO とテクスチャ (ほとんどが 1 つの大きな 4096*4096 テクスチャ) と同様の量のメモリを保持しています。
そのため、GPU メモリにアップロードするのと同じ量のメモリが libGL によってヒープに割り当てられているように見えます。VBO の量がピークに達すると、libGL の割り当てもピークに達します。それは正常ですか?多くの GPU メモリを持つことの利点の 1 つは、RAM を解放できることだと思いましたか?