Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >vkQueuePresentKHR是否阻止在等待信号量时执行以后的命令?

vkQueuePresentKHR是否阻止在等待信号量时执行以后的命令?
EN

Stack Overflow用户
提问于 2022-05-24 13:20:22
回答 1查看 78关注 0票数 0

这是这个问题的后续问题,也是基于同样的Vulkan教程提供的代码。

下面是一个简化的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Vulkan handles defined and initialized elsewhere
VkDevice device;
VkQueue queue;
VkSempahore semaphore;
VkSwapchain swapchain;
VkCommandBuffer cmd_buffer;

// Renderer code
uint32_t image_index;   // image acquisition is omitted

VkPresentInfoKHR present_info{};
present_info.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
present_info.waitSemaphoreCount = 1;
present_info.pWaitSemaphores = &semaphore;
present_info.swapchainCount = 1;
present_info.pSwapchains = &swapchain;
present_info.pImageIndices = &image_index;

VkSubmitInfo submit_info{};
submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
// ... irrelevant code omitted
submit_info.pCommandBuffers = &cmd_buffer;

vkQueuePresentKHR(queue, &present_info);
vkQueueSubmit(queue, 1, &submit_info, VK_NULL_HANDLE);

在上面的示例中,cmd_buffer中的命令是否也必须等待直到发出semaphore信号?

我问这个问题是因为本教程下面的评论提到:

但是,如果图形和当前队列的结果是相同的,那么renderFinished信号量可以保证正确的执行顺序。这是因为vkQueuePresentKHR命令等待该信号量,并且它必须在队列开始中以后的命令开始之前开始(由于隐式排序),并且只有在从上一个帧呈现完成后才会发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-25 02:44:09

在上面的例子中,cmd_buffer中的命令是否也必须等待信号量被发出?

只有当您将信号量用作后一次提交的waitSemaphore时,才行。

这是因为vkQueuePresentKHR命令等待该信号量,并且它必须在队列开始中以后的命令开始之前开始(由于隐式排序),并且只有在从上一个帧呈现完成后才会发生。

我不相信这是真的。

命令相对于队列中的其他命令以隐式顺序开始,但这是在逐阶段的基础上执行的。还请注意,规范的措辞是“按顺序开始”,而不是“按顺序完成”,这是一种规范花招。硬件完全可以自由地重叠和无序地执行单独的命令,这些命令在流中是顺序的,除非流包含停止执行的同步原语。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72369593

复制
相关文章
MySQL信号量等待日志阅读
lock_word的初始值为X_LOCK_DECR,每次添加x锁时原子递减X_LOCK_DECR,每次添加S锁时原子递减1。每次添加SX锁时递减X_LOCK_HALF_DECR。如果读写锁支持递归写,那么第一个递归写锁加锁成功时,lock_word 依然原子递减X_LOCK_DECR,而后续的递归写锁加锁成功是,lock_word 只是原子递减1。
donghy
2022/09/17
1.1K0
【兼容写法】HttpServerUtility.Execute 在等待异步操作完成时被阻止。关键词:MVC,分布视图,异步
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html MVC6之前的版本,对分部视图的异步支持不是很好 问题: 视图里面有分布视图:@{
逸鹏
2018/04/10
1.3K0
【兼容写法】HttpServerUtility.Execute 在等待异步操作完成时被阻止。关键词:MVC,分布视图,异步
怎样阻止Linux服务器执行rm -rf /*命令
今天我们使用的是替换rm命令的方法,然后做一个简单的配置,让系统不能执行rm -rf /*
极客开发者
2022/01/18
2.9K0
怎样阻止Linux服务器执行rm -rf /*命令
gdb在执行maintenance info program-spaces命令时coredump
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/details/46874053
血狼debugeeker
2018/09/20
1.6K0
阻止js事件执行
问题来自群里的一位骚年@い♂壹惢; 他的问题是:a下有一个checkbox a上绑定着两个事件:看代码; 想要点击a的同时阻止tan()和href:javascript的执行;
2021/11/08
7.4K0
Filebeat 执行 setup命令等待时长过久问题处理
Beats是一个代理平台,其监控数据主要发往Logstash和Elasticsearch,其官方组件大致如下:
南非骆驼说大数据
2020/12/02
2K0
Filebeat 执行 setup命令等待时长过久问题处理
SORT命令在Redis中的实现以及多个选项时的执行顺序
SORT命令在Redis中实现了对存储在列表、集合、有序集合数据类型的元素进行排序的功能。
一凡sir
2023/10/05
6050
SORT命令在Redis中的实现以及多个选项时的执行顺序
在 MSBuild 编译项目时阻止输出所有的警告信息
大型旧项目可能存在大量的 Warning,在编译之后 Visual Studio 会给出大量的警告。Visual Studio 中可以直接点掉警告,然而如果是通过命令行 msbuild 编译的,那如何不要让警告输出呢?
walterlv
2020/02/10
1.4K0
[nptl][pthread]一种判断thread是否在执行的方法
前言: 主线程中怎么确定某线程是否在执行? 作者遇到这个问题,第一感觉有点蒙。翻了一下glibc的代码,算是找到一个比较好的办法吧。 分析: 1,变量控制 这个很简单,在线程执行进入的时候,写控制变量running = true。线程将要退出的时候,写控制变量running = false,判断running这个变量就可以知道线程是否在执行了。 这个方法简单粗暴,在绝大多数的情况下都是能工作的。但是,有一种比较极端的情况:某线程正好赋值完控制变量,但是函数体还没有结束(对应的内核task当然也还在),这
皮振伟
2018/04/09
2K0
[nptl][pthread]一种判断thread是否在执行的方法
姗姗来迟的疫苗是否值得等待
本期「熊言熊语」是我们科普系列的第一期节目,听日本京都大学的医学博士斯佳聊聊疫苗那些事儿。
生信菜鸟团
2020/05/18
3110
姗姗来迟的疫苗是否值得等待
Ajax等待返回结果时,弹出一个友好的等待提示
jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。
似水的流年
2019/12/13
3.9K0
Windows SmartScreen阻止文件执行如何关闭?
或者运行control.exe /name Microsoft.SecurityCenter直接打开操作中心
Windows技术交流
2020/02/13
2.7K0
Ajax等待返回结果时,弹出一个友好的等待提示
巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。 具体可参考jquery官方文档:http://api.jquery.com/Ajax_Events/ $.ajax({       beforeSend: function(){        // Handle the beforeSend event       },       c
似水的流年
2018/01/18
5K0
java等待所有子线程执行完毕再执行
前言:在工作项目中,有很多耗时处理都需要开多线程运行。简单的接口可以直接异步处理解决,但是对于一些业务逻辑复杂需要同步返回的这时候就需要用到以下三个多线程等待方法了。
王念博客
2021/03/17
8.2K0
homebrew禁止执行install命令时自动更新
Homebrew 是 macOS 下的默认的包管理器,不需要sudo权限就可以安装包,比较好用。
王云峰
2023/10/23
5400
查看Mysql正在执行的事务、锁、等待
EXPLAIN命令,用于显示SQL语句的查询执行计划。EXPLAIN为用于SELECT语句中的每个表返回一行信息。
wuweixiang
2019/03/12
17.4K0
在python脚本中执行shell命令的方法
最近在写python的一些脚本,之前使用python都是在django中使用,可能大部分内容都是偏向于后端开发方面的,最近在写一些脚本的时候,发现了python的另外一种面貌,发现还挺有意思,分享一下,共大家参考。
AsiaYe
2019/12/18
5.3K0
在 Shell 脚本中跟踪调试命令的执行
本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的例子展示了如何在这些模式下启用 shell 脚本调试。
小小工匠
2021/08/16
9310
查看Mysql正在执行的事务、锁、等待
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
收心
2022/01/19
8.1K0
点击加载更多

相似问题

最佳实践:在等待异步方法时阻止执行

32

是否在等待完全释放的信号量?

14

flock()是否阻止(等待)执行,直到锁可用?

11

IProgress<T>在更新UI时是否等待/阻止

12

是否可以存储Ruby命令并在以后执行它们的输出?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文