ジョンが言及しているそのブログ投稿は、かなり良い出発点です(私がそう言うなら)!
PowerVRアーキテクチャの場合、すべての頂点シェーディングとタイリングプロセスが完了した後、タイルごとのデータを格納する中間データ構造(プリミティブリストまたはパラメーターバッファー(PB)と呼ばれる)は、実際にほとんどが生成および管理されますドライバーではなく、ハードウェア。
PBのメモリ内構造は物理的に2つに分割されます。まず、頂点属性を含む、変換された頂点データのブロック。ブロックは圧縮されており、ご想像のとおり、ほとんどの部分が圧縮された浮動小数点データです。2番目のメモリ内構造は、タイルデータです。これは、事実上リストのリストです。
そのデータ構造の最上位リストはリージョンと呼ばれ、特定のプリミティブブロックに対して、一度に1つのタイルではなく、タイルのセットをエンコードできます。したがって、リージョンは、スクリーンタイル、タイル状態、およびそのリージョン内のジオメトリを保持する圧縮ブロックのリストの場所のセットです。リージョンはラスタライザーが機能するものであり、空のタイルが自動的にスキップされることが想像できますが、場合によっては、ラスタライザーが空のリージョンにアクセスする十分な理由があります。
GPUがPBに使用するメモリは、最新のすべてのPowerVR実装で動的に割り当てられます。そのメモリへのポインターはドライバーによって提供され、ドライバーはGPUの助けを借りて、必要に応じてサイズを調整します。このメカニズムは、頻繁に再割り当てする必要があることと、割り当てられたPBスペースの量を最小化することとのトレードオフです。
最新のGPUは、メモリの間接化を最小限に抑えるように一生懸命努力していますが、PBを歩いてラスタライズステージをフィードすることは、本当に難しく、他に選択肢がないケースの1つです。ありがたいことに、ポインタ追跡は、キャッシュに適した大きなブロックをラップし、コアにストリーミングされます。
他のアーキテクチャはPowerVRとまったく同じように機能しません。これは、PBが私たちのアーキテクチャにある理由の一部は、実装する完全な遅延ピクセルシェーディングコンセプトを支援するためですが、一般的なコンセプトは、私が知っているモバイルスペース。