假設我有一個VkBuffer
綁定到每個設備分配,並使用vkCmdCopyBuffer
的適當組合來逐塊執行碎片整理。Vulkan:使用緩衝區別名實現碎片整理方案
說一個競技場可能包含任何適當排列的線性和非線性數據。由於綁定後VkImage
的不變性,碎片整理將涉及在已移動的圖像數據的新位置構建和綁定新的VkImage
。
在舞臺上進行碎片整理的任何資源都不受任何約束,或者可能被視爲「正在使用」。
這並不難實現,但我有一個擔憂:
是否UB使用vkCmdCopyBuffer
使圖像移動的數據(以避免多餘的佈局轉換),然後在新構造一個新的VkImage
位置?
我的想法是,也許一個實現會做一些奇怪的事情,比如依靠某些內部簿記結構中的絕對設備地址,使UB將圖像數據視爲POD,直到綁定到新對象。
您的最後一段描述了這個問題。 「圖像佈局」涵蓋無損壓縮等內容。壓縮通常涉及與像素數據分離的元數據,該數據告訴如何解釋存儲在「像素」存儲器中的字節。在某些實現中,此元數據是VkImage內存的一部分,但是以非位置無關的方式進行尋址。在其他地方,它可能被存儲在其他地方並由像素數據的物理地址來尋址。還有其他障礙,比如對物理對齊敏感的混合佈局,以實現在內存通道/銀行上的良好分配。 –