Die Standard-Verwendung von Barriers ist relativ einfach, aber ich frage mich, was ist das Verhalten von zwei (oder mehr) überlappenden Image Barriers (vor allem in Bezug auf ihre Nebenwirkung - der Layout-Übergang). Z.B. (Pseudo-Code):Was ist das Verhalten von überlappenden Bildbarrieren?
begin(commandBuffer);
1: write(image);
2: imageBarrier(
image,
src=STAGE_FRAGMENT(from the write at 1:),
dst=STAGE_FRAGMENT(intended for read in FS of read at 4:),
appropriate src and dst access flags,
newLayout=A
);
3: imageBarrier(
image,
src=STAGE_FRAGMENT(from the write at 1:),
dst=STAGE_TRANSFER(intended for read by transfer of readT at 5:),
appropriate src and dst access flags,
newLayout=B
);
4: read(image); // through vkCmdDraw -- expects layout A
5: readT(image); // different kind of read through Transfer -- expects layout B
end(commandBuffer);
- Ist das überhaupt legal? (Können Sie es durch spezifisches Angebot sichern?)
- Was ist das Bild-Layout an jedem Punkt des Programms?
- Der Vollständigkeit halber, was ist der richtige/beste Weg, dies zu schreiben (ein Produzent, zwei Verbraucher Situation)? (Zeilen 3: und 4: tauschen und Read-Read-Abhängigkeit machen?)
Ok, das war meine Intuition (es ist die Verantwortung von Apps - wie immer). Ich habe mich nur gefragt, ob ich mich auf eine bestimmte Reihenfolge der beiden Lesefunktionen festlegen muss. (Es gibt einen Trick mit Subpasses, aber nicht inline dann, denke ich). – krOoze
@krOoze: Sie können nicht zwei unabhängige Subpässe haben, die von demselben Bild mit unterschiedlichen Layouts lesen. Ein * muss * abhängig sein von dem anderen, da die Implementierung Subpässe verschachteln darf, wenn man nicht von dem anderen abhängig ist. –
Ich meinte das (spezifisches Zitat): "Wenn zwei Subpasses denselben Anhang in verschiedenen Layouts verwenden, aber beide Verwendungen schreibgeschützt sind, muss die Anwendung keine Abhängigkeit zwischen den beiden Subpässen ausdrücken. [.. .] " – krOoze