Freigeben über


Grenzwerte für Stammsignaturen

Die Stammsignatur ist erstklassige Immobilien, und es gibt strenge Grenzwerte und Kosten zu berücksichtigen.

Speicherbeschränkungen und Kosten

Die maximale Größe einer Stammsignatur beträgt 64 DWORDs.

Diese maximale Größe wird ausgewählt, um den Missbrauch der Stammsignatur als Möglichkeit zum Speichern von Massendaten zu verhindern. Jeder Eintrag in der Stammsignatur kostet diesen 64 DWORD-Grenzwert:

  • Deskriptortabellen kosten jeweils 1 DWORD.
  • Stammkonstanten kosten jeweils 1 DWORD, da sie 32-Bit-Werte sind.
  • Stammdeskriptoren (virtuelle 64-Bit-GPU-Adressen) kosten jeweils 2 DWORDs.

Statische Sampler haben keine Kosten in der Größe der Stammsignatur.

Leistungskosten

Die Leistungskosten (in Bezug auf Dereferenzierungsebenen) sind null für eine Stammkonstante, 1 für einen Stammdeskriptor und 2 für eine Deskriptortabelle. Wenn eine Stammsignatur groß ist und aus dem schnellsten Speicher in etwas langsameren Speicher überläuft (was auf einer hardwarebasierten Ausführung auftreten kann), fügen Sie 1 zu den Leistungskosten für die überlaufenden Elemente am Ende der Stammsignatur hinzu.

Ein Überlauf kann auf Hardware auftreten, die z. B. eine feste Größe von 16 DWORDs für den Stammargumentbereich aufweisen kann. Dieser Grenzwert kann um einen weiteren Wert reduziert werden, wenn der Eingabeassembler verwendet wird. In diesem Fall gibt es einen Überlauf in etwas langsameren Speicher, wenn die Stammsignatur für den nativen Speicher von 15 oder 16 DWORD zu groß ist. In anderer Hardware gibt es keinen festen systemeigenen Stammargumentspeicher (sodass die Überlaufsituation nie auftritt).

Wenn sich ein Stammargument ändert, muss der Treiber für alle Hardwareargumente eine Version aller Stammargumente beibehalten (im Gegensatz zu einem anderen Speicher wie Deskriptor-Heaps und Pufferressourcen, die nicht vom Treiber versioniert werden). In hardware that an overflow situation occurs, only the native or overflow area needs to be versioned, depending on where the change occurred. Die Versionsverwaltung sollte offensichtlich auf das erforderliche Minimum beschränkt werden.

Beachten Sie im Allgemeinen die folgenden Richtlinien:

  • Verwenden Sie bei Bedarf eine kleine Stammsignatur, während Sie dies mit der Flexibilität einer größeren Stammsignatur ausgleichen.
  • Ordnen Sie Parameter in einer großen Stammsignatur an, damit die Parameter wahrscheinlich häufig geändert werden, oder wenn die Latenz für einen bestimmten Parameter wichtig ist, zuerst auftreten.
  • Verwenden Sie bei Bedarf Stammkonstanten- oder Stammkonstantenpufferansichten, um Konstantenpufferansichten in einem Deskriptor-Heap zu platzieren.

Statische Sampler

Statische Sampler (Sampler, bei denen der Zustand vollständig definiert und unveränderlich ist) sind Teil der Stammsignaturen, zählen jedoch nicht zum DWORD-Grenzwert von 64. Wenn ein Sampler als statisch definiert werden kann, muss der Sampler nicht Teil eines Deskriptor-Heaps sein.

Es gibt keine Leistungskosten für die Verwendung statischer Sampler, und eine Stammsignatur kann eine Mischung aus statischen Samplern (gespeichert in der Stammsignatur oder im reservierten Speicherplatz auf einigen Hardware) und dynamischen Samplern (in einem Samplerdeskriptor-Heap gespeichert) enthalten. Sampler in einem Deskriptor-Heap 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-).

Stammsignaturen