共用方式為


著色器可見描述元堆積

著色器可見描述元堆積是描述項堆積,可透過描述項資料表由著色器參考。

概觀

著色器可透過描述中繼資料表參考的描述元堆積有幾種類型:一種堆積類型,D3D12_SRV_UAV_CBV_DESCRIPTOR_HEAP可以保存著色器資源檢視、未排序的存取檢視,以及常數緩衝區檢視,全部混合。 堆積中的任何指定位置可以是其中一種列出的描述項類型。 另一個堆積類型D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER只會儲存取樣器,反映大部分硬體的取樣器,取樣器會與 SRV、UAV、CBV 分開管理。

當建立堆積時,這些類型的描述元堆積可能會要求為可看見的著色器,或是在後者 (顯示非著色器時,對 CPU) 上的暫存描述元很有用。 當要求為著色器可見時,上述每個堆積類型可能會有任何個別描述元堆積配置的硬體大小限制。

應用程式可以建立任意數目的描述元堆積,而非著色器可見描述項堆積的大小不受限制。 如果應用程式所建立的著色器可見描述元堆積小於硬體大小限制,驅動程式可以選擇從較大的基礎描述元堆積堆積中子配置描述元堆積,讓多個 API 描述項堆積符合一個硬體描述元堆積。 這可能是因為在某些硬體上,在執行期間切換硬體描述元堆積需要 GPU 等候閒置 (,以確保先前描述元堆積的 GPU 參考已完成) 。 如果應用程式建立的所有描述項堆積都符合適用硬體堆積的最大容量,則在轉譯期間切換 API 描述元堆積時不會發生這類等候。 不過,應用程式必須允許可能,切換目前的描述元堆積可能會等待閒置。

為了避免受到這個可能等候描述元堆積交換器閒置的影響,應用程式可以利用轉譯中斷,因為有時間執行描述元堆積交換器時,GPU 會閒置,因為仍然會發生閒置等候。

API 參考會說明在命令清單/套件組合錄製期間識別著色器描述項堆積的機制和語意。

範例

下圖顯示兩個描述元堆積,參考兩個不同的 2D 紋理,並儲存在大型預設堆積的兩個位置。 圖形管線可以存取可看見著色器的描述元堆積, (包括著色器) ,因此管線可以使用 2D 紋理。

可見和非可見描述元堆積

注意

CPU (稱為描述項堆積的寫入合併記憶體) ,通常會限制 GPU 硬體的 GPU 本機記憶體數量。 一般而言,所有進程都會有大約 96 MB 的限制。 例如,具有 32 位元組描述元的一百萬個成員描述元堆積會使用最多 32MB。 驅動程式會視需要回復系統記憶體,但最好不要建立大量大型描述元堆積。

 

描述項堆積