You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用Timeline Semaphore等待完成队列传输后免额外屏障使用资源?

Vulkan同步:Timeline Semaphore等待后是否无需额外图像屏障?

我需要把数据从暂存Buffer复制到Image,再提交到传输队列完成同步传输(因架构限制不能用异步传输,要在主机端等待传输完成)。想确认用Timeline Semaphore等待指定值后,后续在图形队列使用该资源时是否不需要额外的一次性图像屏障。我的流程代码如下:

command_buffer.begin()
command_buffer.copy_buffer_to_image(buffer, image);
command_buffer.pipeline_barrier(image_barrier(image, transfer_queue_family, graphics_queue_family); 
command_buffer.end()

timeline_semaphore(0); 
submit_info(semaphore_submit_info{timeline_semaphore, 1}, command_buffer_submit_info(command_buffer)); 

transfer_queue.submit(submit_info);
timeline_semaphore.wait(1); 

可以安全地在图形队列中使用该资源,无需再执行额外的图像屏障,原因如下:

  • 你的传输命令缓冲内已经包含了跨队列族的图像屏障,该屏障会将Image的布局和访问权限同步至图形队列可合法使用的状态。
  • Timeline Semaphore的wait(1)操作确保了传输队列上的所有提交任务(包括上述屏障)已完全执行完毕,主机端等待完成时,Image的状态已满足图形队列的使用要求。
  • 只要你设置的图像屏障正确指定了目标队列族(图形队列族)、目标布局以及对应的访问掩码,图形队列后续对该Image的操作就能直接合法访问,无需重复做同步屏障。

内容的提问来源于stack exchange,提问作者Krupip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:44:57