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

Which stage non-preserved attachments use? #1557

Open
krOoze opened this issue Jun 14, 2021 · 1 comment
Open

Which stage non-preserved attachments use? #1557

krOoze opened this issue Jun 14, 2021 · 1 comment
Assignees

Comments

@krOoze
Copy link
Contributor

krOoze commented Jun 14, 2021

If attachments are not preserved, they get undefined data, which sounds as good as a write.

But when subsequent subpass wants to use that attachment again, which pipeline stage should it use in src?


Also the rules are bit confusing when attachments become undefined.

For example it says the attachment only becomes undefined if there is a dependency. But I mean, if there is a dependency with srcStage=dstStage=NO_COMMANDS, and srcAccess=dstAccess=0, does it even count?

Also because the subpasses can technically overlap, it is weird that an attachment can be at the same time undefined and defined. And it is not sufficiently explained away in the spec:

subpass

Above, subpass 1 and 2 can overlap, but in one the attachment is defined, and in the other it is not. The quantum superposition of the state is weird.

In subpass 3, I think the rules in Vulkan break and say the attachment is both defined and undefined, because the subpass depends on both preserving and non-preserving subpass.


Also I think there should be a VU forbidding to reference attachment in preserve attachments, unless it is subsequenly used in another subpass. Otherwisely it would lead to confusion of which subpass last uses an attachment for the purposes of synchronization.

@oddhack
Copy link
Contributor

oddhack commented Nov 23, 2021

@Tobski did you create an internal tracker for this? That's what my notes said should happen, but I can't find one.

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

No branches or pull requests

3 participants