Skip to content
This repository was archived by the owner on Jul 19, 2018. It is now read-only.
This repository was archived by the owner on Jul 19, 2018. It is now read-only.

Validate synchronization correctness #2525

@zeux

Description

@zeux

This was probably discussed before, but I want to make sure there's at least a GH issue for this.
Layers currently don't validate correctness of synchronization. I can freely go launch two back-to-back transfers where the second transfer reads data from the first one without any barriers, and this will "work" - validation layers won't complain.

This is a very very very big issue. Vulkan barriers are hard to reason about - if anything, this is THE area that needs validation. We've had sync bugs in code we wrote. We've seen sync bugs in SDK samples from IHVs. We've had sync bugs in the driver but with no validation layers it took a long time to convince ourselves that the driver is at fault.

I'm sure this is non-trivial to track. There are subtle issues with bindless of course, and it will probably take time to add the necessary infra to the layers - but it has to be done. Right now we're running blind, and games that ship on Vulkan are in permanent forward compatibility hazard since newer drivers or hardware may start using existing barriers in ways that weren't tested before, and if the app has broken sync code, we'll end up in a bad spot.

There's a separate issue where some bindless patterns can only be reliably validated on GPU (DX12 has a GPU validation layer for this) - I'm not asking for this here, this should probably be tracked separately.

So the request here would be to reconsider priority on sync tracking - IMO it is the absolute highest one, I can't imagine any other validation work that is more valuable for the community - and somehow get it in :) FWIW if this is necessary we'd be fine with having this as a separate layer that you have to enable explicitly while it takes time to stabilize.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions