D3D12DDI_VIDEO_DECODE_TIER_0020-Enumeration (d3d12umddi.h)
Gibt die Video-Decodierungsebene an. Decodieren von Videoebenen definieren eine Reihe von Hardwarefunktionen. Je höher die Ebene, desto leistungsfähiger ist die Hardware.
Syntax
typedef enum D3D12DDI_VIDEO_DECODE_TIER_0020 {
D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED,
D3D12DDI_VIDEO_DECODE_TIER_0020_1,
D3D12DDI_VIDEO_DECODE_TIER_0020_2,
D3D12DDI_VIDEO_DECODE_TIER_0020_3
} ;
Konstanten
D3D12DDI_VIDEO_DECODE_TIER_0020_NOT_SUPPORTED Das Decodierungsprofil wird nicht unterstützt. |
D3D12DDI_VIDEO_DECODE_TIER_0020_1 Video decodieren Ebene 1. Bei der Videodecodierungsstufe 1 erfordert die Hardware die Decodierung von Ausgabetexturen und Verweistexturen, damit ein Datenstrom physisch zusammenhängend ist, wenn Videovorgänge darauf verweisen. Die Referenzressourcen werden von der Anwendung als D3D12-Texturarray zugeordnet. Der Treiber erhält keine expliziten Hinweise, dass die Zuordnung auf Videoszenarien ausgerichtet ist und möglicherweise zunächst nicht physisch zusammenhängenden Arbeitsspeicher zuweist. Von Treibern wird erwartet, dass sie ein neues Feature zum Aktualisieren der Zuordnungseigenschaften verwenden, das vom Speicher-Manager bereitgestellt wird, um eine Konvertierung in physisch zusammenhängende Dateien nach Übermittlung der Videoarbeit zu planen, die tatsächlich eine physische Zusammenhängendkeit erfordert. Hardwaremerkmale, die Hardware in Ebene 1 platzieren: * Die Decodierungshardware erfordert physisch zusammenhängenden Arbeitsspeicher für die Decodierung von Ausgabe und Verweisen. Eingabepuffer mit dem komprimierten Bitstrom erfordern möglicherweise auch physisch zusammenhängende Elemente. * Die Decodierungshardware kann ein spezielles Kachelformat oder eine andere Speicherlayoutdefinition aufweisen, die mit anderen Engines oder Videovorgängen nicht kompatibel ist. Komprimierte Eingabepufferanforderungen: * Alle Slices für einen bestimmten Frame müssen in der reihenfolge und zusammenhängend platziert werden (keine Lücken zwischen Slices). * Treiber dürfen keine zusätzlichen Kopien der Bitstreamdaten durchführen. * Das erste Slice muss an einer 128-Byte-Grenze beginnen. * Hardware muss die Decodierung aus einem Puffer unterstützen, der aus D3D12DDI_MEMORY_POOL_L0 (immer Systemspeicher) zugeordnet ist. * Hardware muss die Decodierung von D3D12DDI_MEMORY_POOL_L1 (Standardpool) mit D3D12DDI_CPU_PAGE_PROPERTY_NOT_AVAILABLE unterstützen. |
D3D12DDI_VIDEO_DECODE_TIER_0020_2 Video-Decodierungsebene 2. Decodierungsebene 2 ermöglicht es dem Aufrufer, Verweis- und Ausgabetexturen als separate 2D-Texturressourcen zuzuweisen. Die Anwendung ist nicht mehr erforderlich, um Texturarrays zuzuweisen, aber dies muss unterstützt werden. Decodierungsebene 2 hat keine physisch zusammenhängenden Anforderungen. Hardware hat möglicherweise zusammenhängende VA-Anforderungen (Videodecodierungsbeschleunigung) in dieser Ebene, und Anwendungen sind erforderlich, um ein Texturarray zu erstellen, um dies zu unterstützen. Um Ebene 2 zu aktivieren, müssen reservierte Ressourcen, die auch als gekachelte Oder Sparse-Ressourcen bezeichnet werden, für die Verweis- und Ausgabeformate unterstützt werden, die vom Treiber unterstützt werden. Dies kann auf zwei Arten erfolgen: * Wenn die Hardware Pro-Prozess-GPU-VA unterstützt und ein Kachelmuster aufweist, das die Anforderungen an die Kachelform reservierter Ressourcen unterstützt, kann der bereits vorhandene Mechanismus für gekachelte D3D12-Ressourcen verwendet werden. * Wenn hardwarebasierte GPU-VA pro Prozess unterstützt, das Kachelmuster jedoch nicht den Anforderungen an die Kachelform reservierter Ressourcen entspricht, und die Hardware eine Kachelzuordnung unterstützen kann, die Kacheln für eine gesamte Unterressource zuordnet und aufhebt, erfordert der Mechanismus, dass diese für jede Ebene einer planaren Ressource, die eine separate Unterressource in D3D12 ist, unabhängig voneinander Kacheln zugeordnet und Kacheln getrennt werden können. Beachten Sie, dass sich dieser Mechanismus in der Entwicklung befindet, aber die Kachelform in der API verschleiert. Hardwaremerkmale, die Hardware in Ebene 2 platzieren: * Erfordert keinen physisch zusammenhängenden Arbeitsspeicher. * Hardware hat eine zusammenhängende VA-Anforderung. * Die Decodierungshardware kann ein spezielles Kachelformat oder eine andere Speicherlayoutdefinition aufweisen, die mit anderen Engines oder Videovorgängen nicht kompatibel ist. Die Anforderungen für komprimierte Eingabepuffer sind identisch mit Ebene 1. |
D3D12DDI_VIDEO_DECODE_TIER_0020_3 Video-Decodierungsebene 3. Diese Ebene wird in WDDM 2.3 unterstützt. Decodierungsebene 3 ermöglicht es dem Aufrufer, Verweis- und Ausgabetexturen als Standardmäßige 2D-Texturressourcen zuzuweisen. Die Anwendung ist nicht mehr erforderlich, um Texturarrays zuzuweisen, aber dies muss unterstützt werden. Decodierungsebene 3 erfordert keine physisch zusammenhängenden Zuordnungen. Hardware darf die D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY nicht mehr erfordern, muss sie aber weiterhin unterstützen. Bei der Abfrage muss das D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY Member der D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020-Struktur auf FALSE festgelegt werden. Um Ebene 3 zu aktivieren, müssen reservierte Ressourcen (auch als gekachelte Ressourcen oder Sparse-Ressourcen bezeichnet) für die vom Treiber unterstützten Referenz- und Ausgabeformate unterstützt werden. Dies kann in zwei Varianten geschehen: * Wenn die Hardware Pro-Prozess-GPU-VA unterstützt und ein Kachelmuster aufweist, das die Anforderungen an die Kachelform reservierter Ressourcen unterstützt, kann der bereits vorhandene Mechanismus für gekachelte D3D12-Ressourcen verwendet werden. * Wenn hardwarebasierte GPU-VA pro Prozess unterstützt, das Kachelmuster jedoch nicht den Anforderungen an die Kachelform reservierter Ressourcen entspricht, und die Hardware eine Kachelzuordnung unterstützen kann, die Kacheln für eine gesamte Unterressource zuordnet und aufhebt, erfordert der Mechanismus, dass diese für jede Ebene einer planaren Ressource, die eine separate Unterressource in D3D12 ist, unabhängig voneinander Kacheln zugeordnet und Kacheln getrennt werden können. Beachten Sie, dass sich dieser Mechanismus in der Entwicklung befindet, aber die Kachelform in der API verschleiert. Die Anforderungen für komprimierte Eingabepuffer sind identisch mit Ebene 1. |
Hinweise
Wenn die Decodierungshardware ein eindeutiges Kachelformat erfordert, das für Vorgänge auf anderen Engines oder anderen Videovorgängen nicht unterstützt wird, kann der Decoder D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY in der D3D12DDI_VIDEO_DECODE_SUPPORT_DATA_0020-Struktur festlegen, wenn die Profilunterstützung abgefragt wird. Dieses Flag gibt an, dass die Anwendung Verweise mit dem D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY-Flag zuordnen muss. Wenn die Ausgabe als zukünftiger Referenzrahmen benötigt wird, ist der an PFND3D12DDI_VIDEO_DECODE_FRAME übergebene Ausgaberahmen eine D3D12-Ressource, die von anderen Teilen der Pipeline genutzt werden kann und nicht über das D3D12DDI_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY-Flag verfügen darf.
In der folgenden Tabelle sind die verschiedenen Funktionen für die einzelnen Ebenen aufgeführt:
Funktion | Ebene 1 | Ebene 2 | Ebene 3 |
---|---|---|---|
Unterstützt einzeln zugeordnete Referenzrahmen und -ausgaben. | No | No | Erforderlich |
Unterstützt Verweise und Zuordnungen als Texturarray. | Erforderlich | Erforderlich | Erforderlich |
Möglicherweise ist optional das REFERENCE_ONLY-Ressourcenflag erforderlich. Beachten Sie, dass alle Ebenen erforderlich sind, um mit vorhandenem Flag zu arbeiten, auch wenn es nicht erforderlich ist. | Optional | Optional | Nein |
Unterstützung für Verweise, die REFERENCE_ONLY zugeordnet sind, auch wenn dies für Obergrenzen nicht erforderlich ist. | Erforderlich | Erforderlich | Erforderlich |
Unterstützt Gekachelte/Sparse-Ressourcen für Verweise, Eingabe und Ausgabe. | No | Erforderlich | Erforderlich |
Komprimierte Bitstreameingangspuffer können als L0 (Standard Systemspeicher) oder L1 (für dGPU, Videospeicher) zugeordnet werden. | Erforderlich | Erforderlich | Erforderlich |
Erfordert komprimierte Bitstreamdaten, damit Sich Slices in einer einzelnen Pufferzuordnung ohne Lücken zwischen Slices befinden. | Erforderlich | Erforderlich | Erforderlich |
Der Offset auf das erste Slice im komprimierten Eingabepuffer muss 256 Byte ausgerichtet sein. | Erforderlich | Erforderlich | Erforderlich |
Treiber dürfen keine zusätzlichen Kopien der komprimierten Bitstreamdaten ausführen. | Erforderlich | Erforderlich | Erforderlich |
Anforderungen
Anforderung | Wert |
---|---|
Header | d3d12umddi.h (include D3d12umddi.h) |