KhronosGroup / KhronosGroup/Vulkan-Docs

[Question] Necessity of VUID-vkQueueSubmit-pSubmits-02207 and VUID-vkQueueSubmit2-commandBuffer-03879

Open
#2,464 4 comments 0 reactions 1 assignee Claimed by @Tobski View on GitHub
Resolving Inside Khronos
Dominant language
JavaScript
Stars
3.3k
Forks
549
Avg merge
5d 5h
Merged PRs (30d)
2

Description

Hello,

VUID-vkQueueSubmit-pSubmits-02207 states:

> If any element of pSubmits->pCommandBuffers includes a [Queue Family Ownership Transfer Acquire Operation](https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire), there must exist a previously submitted [Queue Family Ownership Transfer Release Operation](https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release) on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such [acquire operations](https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire), and which happens-before the acquire operation

VUID-vkQueueSubmit2-commandBuffer-03879 is similar.

I do not understand the necessity of the part where it requires that a queue family ownership transfer release operation has already been recorded. To me, the only substantial part is that the release operation happens-before the acquire operation, which is admittedly hard to validate at submission time.

As far as I understand, command list recording is a process that only appends data to the command list and does not change the state of any other object in any way - in other words, it has no side effects. Please correct me if my understanding is incorrect. This requirement seems to contradict my understanding, as it seems to imply that the recording of the release command has some side effect on the resource such that it must happen before the recording of the acquire command.

The existence of this requirement is also limiting as to how an application can handle these transitions. For example, if I would like to record command lists for different command queues in parallel, this requirement means that I would need to carefully synchronize the recording process, or else I'll get a validation error, even if the appropriate synchronization operations are submitted.

I would like to know more about the considerations behind this requirement and whether there are any platform limitations that necessitates it. If possible, it would be great to relax this requirement, while preferably still having a way to validate these transitions.

Thank you.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.