Vulkan Specification(Vulkan規範):第十一章 11.8. 內存別名

11.8. 內存別名

VkDeviceMemory 內存的一段區間可以被稱爲 aliased(被別名),若它通過 vkBindImageMemoryvkBindBufferMemory,或者通過稀疏內存綁定,被同時綁定到多個資源上。 在兩個圖像或者兩個緩衝區之間的 一段別名內存區間,其定義是:在綁定到兩個資源上的內存的一段內存區間。 在兩個資源之間(一個是緩衝區或者線性圖像,另一個是優化圖像)的 一個內存區間別名,其他定義是 綁定到兩個資源的內存區間的 相交區域。每個區間首先被填補並按照bufferImageGranularity 對齊。 應用程序可以給內存起別名,但是使用多個別名需要遵循多個限制條件。

 

注意

如果一些大型的資源被用於不連續的階段,內存別名可以有效的減少應用程序中設備內存使用痕跡。

當一個不透明,非 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT 圖像被綁定到一個別名區間,圖像所有的 圖像子資源 在區間上重疊。 當一個線性圖像被綁定到一個別名區間,包含 別名區間的圖像子資源(遵頊圖像被建議的佈局方式)將重疊該區域。 當一個 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT 圖像有稀疏圖像塊被綁定一個別名區間上, 只有包含這些稀疏圖像塊的圖像子資源會重疊該區間,且當內存被綁定到圖像的mip tail與別名區間重疊時,mip tail中的圖像子資源 將重疊該區間。

VK_IMAGE_LAYOUT_PREINITIALIZED 或者 VK_IMAGE_LAYOUT_GENERAL 佈局的緩衝區,線性圖像子資源,都是  host-accessible subresources。 亦即,只有host端能夠正確的尋址,並解釋其內容,故若這些別名時是host-accessible 子資源,內存中數據的佈局可以通過別名被一致性的解釋。 其他佈局下的不透明圖像和圖像子資源,不是host-accessible。

若兩個別名都是both host-accessible,那麼它們使用一致的方式去解讀內存的內容,且寫入到別名內的數據可以被另外一個別名讀取。

若兩個別名都不是host-accessible,那麼別名依不同的方式解讀內存的內容,通過一個別名寫入的內容對於另外一個別名來說也是部分或全未定義的。 若第一個別名是 host-accessible 子資源,那麼受影響的字節,是那些通過它的尋址方式內存操作寫入的部分。 若第一個別名不能被主機端訪問,那麼被影響的字節是那些被寫入的圖像子資源重疊的部分。 若第二個別名是不能被主機端訪問的子資源,那麼被影響的字節將變得未定義。 若第二個別名不能被主機端訪問,所有的稀疏圖像塊(爲稀疏部分駐留圖像)或者所有的圖像子資源(爲非稀疏圖像和全駐留稀疏圖像)重疊的字節將變得未定義。

若因爲寫入alias而導致任何圖像子資源變成未定義的,那麼 圖像子資源的每一個必須讓它被使用之前從它的佈局從VK_IMAGE_LAYOUT_UNDEFINED 轉換到一個有效的佈局, 或者若內存已經被host端寫入,需要從VK_IMAGE_LAYOUT_PREINITIALIZED 轉換到一個有效佈局。 若稀疏圖像的任何稀疏塊已經變成未定義的,那麼只有包含它們的圖像子資源 必須被轉換。

兩個alias使用一分重疊區間 必須通過使用合適的 access types的內存依賴 來分割,若至少 其中一個使用操作寫入,不管alias持續終端內存與否。 若緩衝區或 圖像內存屏障被使用來,屏障的週期必須包含整個區間,和/或 重疊的圖像子資源的集合。

若在同一個緩衝區中使用兩個別名圖像視圖,那麼render pass 必須使用 VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT聲明附件,且必須符合該節中其他的規則。

在着色器中使用 Coherent修飾的變量來訪問別名內存的資源,將不會自動保持一致性。

 

注意

Memory recycled via an application suballocator (i.e. without freeing and reallocating the memory objects) is not substantially different from memory aliasing. However, a suballocator usually waits on a fence before recycling a region of memory, and signaling a fence involves sufficient implicit dependencies to satisfy all the above requirements.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章