Michael-Lfx / GPU_Tuning

MIT License
9 stars 0 forks source link

[Vulkan] 纹理上传优化 #1

Open Michael-Lfx opened 5 years ago

Michael-Lfx commented 5 years ago

Staging Buffer 优化

vkCmdCopyBufferToImage 资源同步优化

StagingBufferImage,要么vkQueueWaitIdle(),要么vkWaitForFences()。不加的话还是会有潜在同步问题,实测发现 CommandBuffer::submitqueue 然后立即删除 CommandBuffer,不加vkQueueWaitIdle()vkWaitForFences()在Metal上会出错:删除处于忙碌状态的对象。

Image Layout 优化

bhlzlx commented 5 years ago

因为通过 staging buffer 传输完成之后的操作(对纹理采样或者呈现)也是一种入队,异步的操作,在barrier 之后,这些操作是绝对安全的,但是 删除对象是一种完全同步的操作,队列里的资源正在被引用这时删除是绝对会出问题的,所以如果(假设),这个删除操作也可以异步入队执行(实际不行),那么这个删除操作也是绝对安全的。