vulkan Semaphore和 Fence同步

在 Vulkan 中,Semaphore和 Fence都用于同步,但同步的方向和用途并不相同,无法随意互换:

Semaphore(GPU-GPU 同步)

主要用于 GPU 和 GPU 之间的执行顺序控制,例如:
等待渲染完成后再进行后续渲染
等待渲染完成后再进行呈现操作(queuePresent() 里用的就是信号量)
通常不会让 CPU 等待。Semaphore 一旦在 GPU 端被 vkQueueSubmit 等操作使用完,就会自动重置供下次使用。
Fence(CPU-GPU 同步)

主要用于 CPU 等待 GPU 工作完成:
提交指令后,CPU 可以使用 vkWaitForFences 等待 GPU 渲染结束
Fence 在完成后会保持已触发状态(signaled),必须手动 vkResetFences 才能再用
对 GPU 来说,Fence 不会用来控制命令缓冲区之间的执行顺序,而是让 CPU 知道某个提交是否完成。
因此,二者并不等价。常见场景中,呈现(queuePresent)需要使用信号量来与渲染进行 GPU 级同步,而在需要 CPU 知道渲染是否完成时(比如重用命令缓冲区或进行下一帧逻辑),就需要使用栅栏来让 CPU 等待 GPU。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值