KhronosGroup / KhronosGroup/Vulkan-Docs

vkQueueBindSparse not covered by vkQueueWaitIdle?

Open
#1,324 0 comments 0 reactions 0 assignees View on GitHub
Resolving Inside Khronos
Dominant language
JavaScript
Stars
3.3k
Forks
549
Avg merge
5d 5h
Merged PRs (30d)
2

Description

In _signal operation order_, the `vkQueueBindSparse` is missing. I suppose that means the state of its fence cannot be inferred by another fence singlan. I.e.:

```
VkQueue q;
VkFence f1, f2, f3, f4;

vkQueueSubmit(q, f1);
vkQueueSubmit(q, f2);
vkWaitForFences(f2);
// I know both f1 and f2 are signaled now

vkQueueBindSparse(q, f3);
vkQueueSubmit(q, f4);
vkWaitForFences(f4);
// I know both f4 is signaled, but I do not know the state of f3
```

Now, `vkQueueWaitIdle` (and by transitional property, `vkDeviceWaitIdle`) seems to be defined in terms of `vkQueueSubmit`:

> `vkQueueWaitIdle` is equivalent to submitting a fence to a queue and waiting with an infinite timeout for that fence to signal.

That means it would **not** cover `vkQueueBindSparse`:

```
VkQueue q; VkFence f;
vkQueueBindSparse(q, f);
vkQueueWaitIdle(q); // equivalent to vkQueueSubmit(q, implicit_f); vkWaitFences(implicit_f);
vkDeviceWaitIdle(); // equivalent to vkQueueWaitIdle( all(VkQueue) )
// I still don't know the state of f
```

Since this seems bit awkward, I want to ask if this is intentional. If so, perhaps it is worth a Note.

(Similar issue with `vkAquireNextImageKHR` fence and `vkDeviceWaitIdle`, but I suppose that was already answered by #1059.)

Contributor guide

Open the contributing guide

Research direction

Start with the Vulkan specification language for vkQueueBindSparse, vkQueueSubmit, vkQueueWaitIdle, and vkDeviceWaitIdle, then compare the stated fence and operation-order guarantees. Confirm whether the described uncertainty is intentional and document the result with a note or clarification in the relevant specification section.

Written by the indexing model from the issue text.

Assessment

Domain
api, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.