Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
lukedan opened this issue Nov 17, 2024 · 1 comment

Comments

@lukedan
Copy link

lukedan commented Nov 17, 2024

Hello,

VUID-vkQueueSubmit-pSubmits-02207 states:

If any element of pSubmits->pCommandBuffers includes a Queue Family Ownership Transfer Acquire Operation, there must exist a previously submitted Queue Family Ownership Transfer Release Operation 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, 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.

@Tobski Tobski self-assigned this Nov 20, 2024
@Tobski
Copy link
Contributor

Tobski commented Nov 20, 2024

Thanks, when these VUs were originally written we didn't have timeline semaphores yet, so that you needed things to be submitted to get happens-before relationships anyway, so this may just be a leftover from that time. With timeline semaphores, it's plausible that these can be relaxed, but we'll have to discuss internally to figure that out. These VUs are also broken for external transfers where only one half of the transfer will be visible the the API. We'll take a look internally and see what we can do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants