我不清楚在什麼時候使用VK_IMAGE_LAYOUT_GENERAL是一個好主意,而不是爲了我將要執行的任何操作而轉換到最佳佈局。目前,我的政策是始終過渡到最佳佈局。什麼時候使用VK_IMAGE_LAYOUT_GENERAL
但存在VK_IMAGE_LAYOUT_GENERAL。也許我應該在短時間內使用給定的佈局時使用它。
例如,現在,我正在編寫使用vkCmdBlitImage生成mipmap的代碼。當我循環執行vkCmdBlitImage命令的子資源時,當我縮小爲mip時,是否應該轉換爲VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,然後當我成爲下一個mip的源時轉換到VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,然後當我轉到VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL時全做完了?看起來好像有很多轉換,並且可能在VK_IMAGE_LAYOUT_GENERAL中生成mips更好。我很欣賞答案可能是衡量,但很難衡量我所有的目標GPU(特別是因爲我還沒有在Android上運行任何東西),所以如果任何人有任何體面的經驗法則來應用它會非常感謝。我正在寫Vulkan代碼,可以在桌面GPU和Android上運行,但我主要關注後者的性能。
重要的是要注意,這些測量需要在適當的實現上進行。 IE:已知對佈局敏感的那些。 –
^好吧,這是暗示的。測量應該始終在代碼應該運行的機器上完成。 – krOoze
接受了這個答案。我認爲你關於過早優化的觀點實際上是問題的關鍵。我想我擔心我目前可能過度使用轉換的方法是不成熟的優化,但是您可以令人信服地說,在這種情況下,嘗試*避免*轉換將是不成熟的優化。我將繼續使用轉換到最佳佈局,直到我有足夠的進展來測量目標硬件。 – Columbo