Grenzwerte für Stammsignaturen
Die Stammsignatur ist erstklassige Immobilien, und es gibt strenge Grenzwerte und Kosten zu berücksichtigen.
Speichergrenzwerte und -kosten
Die maximale Größe einer Stammsignatur beträgt 64 DWORDs.
Diese maximale Größe wird gewählt, um einen Missbrauch der Stammsignatur als Möglichkeit zum Speichern von Massendaten zu verhindern. Jeder Eintrag in der Stammsignatur hat Kosten für diesen Grenzwert von 64 DWORD:
- Deskriptortabellen kosten jeweils 1 DWORD.
- Stammkonstanten kosten jeweils 1 DWORD, da es sich um 32-Bit-Werte handelt.
- Stammdeskriptoren (virtuelle 64-Bit-GPU-Adressen) kosten jeweils 2 DWORDs.
Statische Sampler haben keine Kosten für die Größe der Stammsignatur.
Leistungskosten
Die Leistungskosten (in Bezug auf Die Indirektierungsebenen) sind 0 für eine Stammkonstante, 1 für einen Stammdeskriptor und 2 für eine Deskriptortabelle. Wenn eine Stammsignatur groß ist und aus dem schnellsten Arbeitsspeicher in etwas langsameren Arbeitsspeicher überläuft (was auf einer Bestimmten Hardware vorkommen kann), fügen Sie den Leistungskosten für die überlaufenden Elemente am Ende der Stammsignatur den Wert 1 hinzu.
Ein Überlauf kann auf Hardware auftreten, die beispielsweise eine feste Größe von 16 DWORDs für den Stammargumentbereich aufweisen kann. Dieser Grenzwert kann um eins reduziert werden, wenn der Eingabeassemierer verwendet wird. In diesem Fall tritt ein Überlauf in etwas langsameren Arbeitsspeicher auf, wenn die Stammsignatur für den nativen DWORD-Arbeitsspeicher mit 15 oder 16 zu groß ist. Auf anderer Hardware gibt es keinen festen nativen Stammargumentspeicher (daher tritt die Überlaufsituation nie auf).
Wenn sich ein Stammargument ändert, muss der Treiber für die gesamte Hardware eine Version aller Stammargumente beibehalten (im Gegensatz zu anderen Speicher wie Deskriptorheaps und Pufferressourcen, die nicht vom Treiber versioniert werden). Bei Hardware, in der eine Überlaufsituation auftritt, muss nur der native Oder Überlaufbereich versioniert werden, je nachdem, wo die Änderung aufgetreten ist. Der Umfang der Versionsverwaltung sollte natürlich auf das erforderliche Minimum beschränkt werden.
Beachten Sie im Allgemeinen die folgenden Richtlinien:
- Verwenden Sie nach Bedarf eine kleine Stammsignatur, aber ausgleichen Sie dies mit der Flexibilität einer größeren Stammsignatur.
- Ordnen Sie Parameter in einer großen Stammsignatur so an, dass sich die Parameter wahrscheinlich häufig ändern, oder wenn eine niedrige Zugriffslatenz für einen bestimmten Parameter wichtig ist, zuerst auftreten.
- Verwenden Sie bei Bedarf Stammkonstanten oder Stammkonstantenpuffersichten, um konstanten Puffersichten in einem Deskriptorheap zu platzieren.
Statische Sampler
Statische Sampler (Sampler, bei denen der Zustand vollständig definiert und unveränderlich ist) sind Teil von Stammsignaturen, zählen aber nicht auf den DWORD-Grenzwert von 64 an. Wenn ein Sampler als statisch definiert werden kann, muss der Sampler nicht Teil eines Deskriptorheaps sein.
Die Verwendung statischer Sampler verursacht keine Leistungskosten, und eine Stammsignatur kann eine Mischung aus statischen Samplern (gespeichert in der Stammsignatur oder im reservierten Speicherplatz auf einer Hardware) und dynamischen Samplern (gespeichert in einem Samplerdeskriptorheap) enthalten. Sampler in einem Deskriptorheap können dynamisch zugewiesen und indiziert werden, was statische Sampler nicht können.
Statische Sampler können als Teil der Stammsignatur in HLSL-Shadern geschrieben werden (siehe Angeben von Stammsignaturen in HLSL).
Zugehörige Themen