Gefahrennachverfolgung im Vergleich mit den Kachelpoolressourcen
Bei nicht gekachelten Ressourcen kann Direct3D bestimmte Gefährdungsbedingungen während des Renderings verhindern, aber da die Risikonachverfolgung auf Kachelebene für gekachelte Ressourcen liegt, ist die Nachverfolgung von Gefährdungsbedingungen während des Renderings von gekachelten Ressourcen möglicherweise zu teuer.
Für nicht gekachelte Ressourcen lässt die Runtime beispielsweise nicht zu, dass eine bestimmte Unterressource gleichzeitig als Eingabe (z. B. ShaderResourceView) und als Ausgabe (z. B. RenderTargetView) gebunden wird. Wenn ein solcher Fall auftritt, entbindt die Laufzeit die Eingabe. Dieser Nachverfolgungsaufwand in der Laufzeit ist kostengünstig und erfolgt auf Unterressourcenebene. Einer der Vorteile dieses Nachverfolgungsaufwands besteht in der Minimierung der Wahrscheinlichkeit von Anwendungen, die versehentlich von der Ausführungsrichtung des Hardware-Shaders abhängig sind. Die Ausführungs reihenfolge des Hardware-Shaders kann variieren, wenn dies nicht für eine bestimmte Grafikprozessor (GPU) und dann für unterschiedliche GPUs der Fall ist.
Das Nachverfolgen der Bindung von Ressourcen ist für gekachelte Ressourcen möglicherweise zu teuer, da die Nachverfolgung auf Kachelebene vor sich geht. Es treten neue Probleme auf, z. B. mögliche Validierungsversuche zum Rendern in rendern in renderTargetView mit einer Kachel, die mehreren Bereichen auf der Oberfläche gleichzeitig zugeordnet ist. Wenn sich herauserweist, dass diese Kacheln-Nachverfolgung für die Laufzeit zu aufwendig ist, ist dies im Idealfall zumindest eine Option in der Debugebene.
Eine Anwendung muss den Anzeigetreiber darüber informieren, wenn sie einen Schreib- oder Lesevorgang für eine gekachelte Ressource ausgegeben hat, die auf den Kachelpoolspeicher verweist, auf den auch durch separate kachelierte Ressourcen in bevorstehenden Lese- oder Schreibvorgängen verwiesen wird, dass der erste Vorgang abgeschlossen werden soll, bevor die folgenden Vorgänge beginnen können. Weitere Informationen zu dieser Bedingung finden Sie in den Anmerkungen zu ID3D11DeviceContext2::TiledResourceBarrier.