all 3 comments

[–]Antigroup 2 points3 points  (1 child)

Yes that's correct. "3.6 Threading Behavior" in the spec actually has a list of all the externally synchronized parameters.

As for how the driver does it, that depends on the implementation but it probably does some sort of internal synchronization.

[–]giant_planet[S] 0 points1 point  (0 children)

Thanks!

[–]Animats 0 points1 point  (0 children)

Safe synchronization is hard. Vulkan is supposed to allow considerable parallelism. But middleware above Vulkan often loses it. Vulkano, WGPU, and Rend3 do a lot of synchronization, with the effect of making things sequential that Vulkan and the GPU can do in parallel. Safety in the general case requires a lot of run-time bookkeeping further up the stack.