- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在全面阅读 Vulkan 规范的同步语言后,我试图确认特定场景不会引入数据竞争。考虑下面的代码片段,第二个队列中的工作提交读取第一个提交的工作结果,主机在第一个提交之间的围栏上等待:
VkFence first_work_fence = ... (unsignaled);
VkSubmitInfo first_work_submit_info = ... (no semaphore wait / signal);
vkQueueSubmit(chosen_queue, 1, &first_work_submit_info, first_work_fence); // (1)
...
vkWaitForFences(device, 1, &first_work_fence, VK_TRUE, UINT64_MAX); // (2)
...
VkSubmitInfo reads_first_work_submit_info = ... (no semaphore wait / signal);
vkQueueSubmit(chosen_queue, 1, &reads_first_work_submit_info, ...); // (3)
根据我对规范的阅读,以下三个步骤是正确的:
vkQueueSubmit
执行...一个可见性操作,源范围为设备域,目标范围为设备上的所有代理和引用。” ( spec appendix B )总而言之,这似乎意味着在 (3) 中提交的工作可以访问在 (1) 中提交的工作的所有副作用,而无需进一步同步或显式内存可见性操作(例如,屏障)。这是正确的吗?
最佳答案
差不多,是的。
一个好的规范应该确保人们在没有串通的情况下达成相同的解释。如果您付出了这么多努力,但仍然不确定,请在 KhronosGroup/Vulkan-Docs 报告缺陷。 .
为了避免 VK_KHR_vulkan_memory_model
,我可能不得不调用 Host Write Ordering Guarantees ,它(尽管名称如此)似乎包括对主机上先前 Vulkan 命令的执行依赖性,以及设备上的可见性操作。
关于synchronization - Vulkan:WAITING栅栏后提交的工作可以读取先前提交的写入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66767934/
我有一个栅栏的 3D 模型。该模型包含 1 个起始柱和 1 个末端柱,中间有一个连接玻璃板。假设我希望能够指定任意长度的栅栏,并将其放置在虚拟世界中。如果可能的话,我将如何处理原始 3D 模型以将其更
x86指令lfence/sfence/mfence用于实现Linux内核中的rmb()/wmb()/mb()机制。很容易理解,这些用于序列化内存访问。但是,在遇到运行时行为中的错误之前,在编写代码时确
以下代码实现了一些无锁(且无原子!)的线程间通信,这些通信需要使用存储和加载内存屏障,但是C++ 11 release-acquire语义不适当,也不保证正确性。实际上,该算法暴露了对发布获取语义的某
我是一名优秀的程序员,十分优秀!