Direct3D-Featureebenen
Um die Vielfalt von Grafikkarten auf neuen und vorhandenen Computern zu bewältigen, führt Microsoft Direct3D 11 das Konzept der Featureebenen ein. In diesem Thema werden Direct3D-Featureebenen erläutert.
Jedes Video Karte implementiert abhängig von den installierten Grafikverarbeitungseinheiten (GPUs) eine bestimmte Ebene von Microsoft DirectX (DX)-Funktionalität. In früheren Versionen von Microsoft Direct3D konnten Sie herausfinden, welche Version von Direct3D das Video implementiert Karte, und dann Ihre Anwendung entsprechend programmieren.
Mit Direct3D 11 wird ein neues Paradigma eingeführt, das als Featureebenen bezeichnet wird. Eine Featureebene ist ein klar definierter Satz mit GPU-Funktionen. Für instance implementiert die Featureebene 9_1 die in Microsoft Direct3D 9 implementierte Funktionalität, die die Funktionen von Shadermodellen ps_2_x und vs_2_x verfügbar macht, während die Featureebene 11_0 die in Direct3D 11 implementierte Funktionalität implementiert.
Wenn Sie nun ein Gerät erstellen, können Sie versuchen, ein Gerät für die Featureebene zu erstellen, die Sie anfordern möchten. Wenn die Geräteerstellung funktioniert, ist diese Featureebene vorhanden. Wenn dies nicht der Fall ist, unterstützt die Hardware diese Featureebene nicht. Sie können entweder versuchen, ein Gerät auf einer niedrigeren Featureebene neu zu erstellen, oder Sie können die Anwendung beenden. Weitere Informationen zum Erstellen eines Geräts finden Sie unter der D3D11CreateDevice-Funktion .
Mithilfe von Featureebenen können Sie eine Anwendung für Direct3D 9, Microsoft Direct3D 10 oder Direct3D 11 entwickeln und diese dann auf 9, 10 oder 11 Hardware ausführen (mit einigen Ausnahmen; z. B. werden neue 11-Features nicht auf einer vorhandenen 9 Karte ausgeführt). Im Folgenden finden Sie einige weitere grundlegende Eigenschaften von Featureebenen:
- Eine GPU, die das Erstellen eines Geräts ermöglicht, erfüllt oder überschreitet die Funktionalität dieser Featureebene.
- Eine Featureebene umfasst immer die Funktionalität vorheriger oder niedrigerer Featureebenen.
- Eine Featureebene impliziert keine Leistung, nur Funktionalität. Die Leistung hängt von der Hardwareimplementierung ab.
- Wählen Sie eine Featureebene aus, wenn Sie ein Direct3D 11-Gerät erstellen.
Informationen zu Einschränkungen beim Erstellen von Geräten vom Typ "Nonhardware" auf bestimmten Featureebenen finden Sie unter Einschränkungen beim Erstellen von WARP- und Referenzgeräten.
Um Sie bei der Entscheidung zu unterstützen, mit welcher Featureebene Sie entwerfen möchten, vergleichen Sie die Features für die einzelnen Featureebenen.
Im Abschnitt 10Level9-Referenz werden die Unterschiede zwischen dem Verhalten der verschiedenen METHODEN ID3D11Device und ID3D11DeviceContext auf verschiedenen 10Level9-Featureebenen aufgeführt.
Formate von Versionsnummern
Es gibt drei Formate für Direct3D-Versionen, Shadermodelle und Featureebenen.
- Direct3D-Versionen verwenden einen Punkt; Beispiel: Direct3D 12.0.
- Shadermodelle verwenden einen Punkt; Beispiel: Shadermodell 5.1.
- Featureebenen verwenden einen Unterstrich; Beispiel: Featureebene 12_0.
Direct3D 12-Featureunterstützung (Featureebenen 12_2 bis 11_0)
Die folgenden Features sind für die aufgeführten Featureebenen verfügbar. Die Überschriften in der obersten Zeile sind Direct3D 12-Featureebenen. Die Überschriften in der linken Spalte sind Features. Siehe auch Fußnoten für die Tabellen.
Feature \ Featureebene | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
---|---|---|---|---|---|
Shadermodell | 6,5 | 5.12 | 5.12 | 5.12 | 5.12 |
WDDM-Treibermodell | 2,0 | 1.x | 1.x | 1.x | 1.x |
Raytracing | Ebene 1.1 | Optional | Optional | Optional | Optional |
Variable Schattierungsrate | Ebene 2 | Optional | Optional | Optional | Optional |
Mesh-Shader | Ebene 1 | Optional | Optional | Optional | Optional |
Sampler-Feedback | Ebene 0.9 | Optional | Optional | Optional | Optional |
Ressourcenbindung | Ebene 3 | Ebene 3 | Ebene 3 | Ebene 3 | Ebene 1 |
Stammsignatur | 1.1 | 1 | 1 | 1 | 1 |
Tiefenbegrenzungstest | Ja | Optional | Optional | Optional | Optional |
Sofortiges Schreiben des Puffers | Direct, Compute, Bundle | Optional | Optional | Optional | Optional |
Bits für virtuelle GPU-Adressen | 4010 | 4010 | 4010 | ||
Kacheln von Ressourcen | Ebene3 | Ebene 26 | Ebene 26 | Optional | Optional |
Konservative Rasterung | Ebene3 | Ebene 16 | Optional | Optional | Nein |
Rasterizerreihenfolgeansichten | Ja | Ja | Optional | Optional | Nein |
Min/Max Filter | Ja | Ja | Ja | Optional | Nein |
Standardpuffer zuordnen | – | Optional | Optional | Optional | Optional |
Von Shader festgelegter Schablonenreferenzwert | Optional | Optional | Optional | Optional | Nein |
Typisierte, ungeordnete Zugriffsansichtsladevorgänge | 18 Formate, optionaler | 18 Formate, optionaler | 18 Formate, optionaler | 3 Formate, optionaler | 3 Formate, optionaler |
Geometry-Shader | Ja | Ja | Ja | Ja | Ja |
Stream Out | Ja | Ja | Ja | Ja | Ja |
DirectCompute/Compute-Shader | Ja | Ja | Ja | Ja | Ja |
Hull- und Domänen-Shader | Ja | Ja | Ja | Ja | Ja |
Feature \ Featureebene | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Texturressourcenarrays | Ja | Ja | Ja | Ja | Ja |
Cubemap-Ressourcenarrays | Ja | Ja | Ja | Ja | Ja |
BC4/BC5-Komprimierung | Ja | Ja | Ja | Ja | Ja |
BC6H/BC7-Komprimierung | Ja | Ja | Ja | Ja | Ja |
Alpha-to-Coverage | Ja | Ja | Ja | Ja | Ja |
Erweiterte Formate (BGRA usw.) | Ja | Ja | Ja | Ja | Ja |
10-Bit-XR-Format mit hoher Farbtiefe | Ja | Ja | Ja | Ja | Ja |
Logikvorgänge (Output Merger) | Ja | Ja | Ja | Ja | Optional1 |
Zielunabhängige Rasterung | Ja | Ja | Ja | Ja | Nein |
Multiple Render Target (MRT) mit ForcedSampleCount 1 | Ja | Ja | Ja | Ja | Optional1 |
UAV-Slots | Tiered9 | 64 | 64 | 64 | 8 |
UAVs in jeder Phase | Ja | Ja | Ja | Ja | Nein |
Feature\Featureebene | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Maximale Anzahl erzwungener Beispiele für reines UAV-Rendering | 16 | 16 | 16 | 16 | 8 |
Konstanter Pufferabsatz und partielle Updates | Ja | Ja | Ja | Ja | Optional1 |
16 Bits pro Pixel (bpp) | Ja | Ja | Ja | Ja | Optional1 |
Maximale Texturdimension | 16384 | 16384 | 16384 | 16384 | 16384 |
Maximale Cubemap-Dimension | 16384 | 16384 | 16384 | 16384 | 16384 |
Maximale Volumeausdehnung | 2048 | 2048 | 2048 | 2048 | 2048 |
Maximale Texturwiederholung | 16384 | 16384 | 16384 | 16384 | 16384 |
Max. Anisotropie | 16 | 16 | 16 | 16 | 16 |
Maximale primitive Anzahl | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
Max Scheitelpunktindex | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
Max. Eingabeslots | 32 | 32 | 32 | 32 | 32 |
Gleichzeitige Renderziele | 8 | 8 | 8 | 8 | 8 |
Feature\Featureebene | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Occlusionsabfragen | Ja | Ja | Ja | Ja | Ja |
Separate Alpha-Mischung | Ja | Ja | Ja | Ja | Ja |
Einmal spiegeln | Ja | Ja | Ja | Ja | Ja |
Überlappende Scheitelpunktelemente | Ja | Ja | Ja | Ja | Ja |
Unabhängige Schreibmasken | Ja | Ja | Ja | Ja | Ja |
Instanziierung | Ja | Ja | Ja | Ja | Ja |
Nonpowers-of-2 bedingt3 | Nein | Nein | Nein | Nein | Nein |
Nonpowers-of-2 bedingungslos4 | Ja | Ja | Ja | Ja | Ja |
Zusätzlich werden die folgenden Flags festgelegt:
Feature\Featureebene | 12_28 |
---|---|
WaveOps | TRUE |
OutputMergerLogicOp | TRUE |
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation | TRUE |
CopyQueueTimestampQueriesSupported | TRUE |
CastingFullyTypedFormatSupported | TRUE |
Int64ShaderOps | TRUE |
Direct3D 11-Featureunterstützung (Featureebenen 12_1 bis 9_1)
Die folgenden Features sind für die aufgeführten Featureebenen verfügbar. Die Überschriften in der obersten Zeile sind Direct3D 11-Featureebenen. Die Überschriften in der linken Spalte sind Features. Siehe auch Fußnoten für die Tabellen.
Feature\Featureebene | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Shadermodell | 5.12 | 5.12 | 5.02 | 5.02 | 4.x | 4,0 | 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 | 2.0 (4_0_level_9_1) | 2.0 (4_0_level_9_1) | ||
WDDM-Treibermodell | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | ||
Gekachelte Ressourcen | Ebene2 6 | Ebene2 6 | Optional | Optional | Nein | Nein | Nein | Nein | Nein | ||
Konservative Rasterung | Ebene1 6 | Optional | Optional | Nein | Nein | Nein | Nein | Nein | Nein | ||
Rasterungsreihenfolgeansichten | Ja | Optional | Optional | Nein | Nein | Nein | Nein | Nein | Nein | ||
Min/Max Filter | Ja | Ja | Optional | Nein | Nein | Nein | Nein | Nein | Nein | ||
Standardpuffer zuordnen | Optional | Optional | Optional | Optional | Nein | Nein | Nein | Nein | Nein | ||
Von Shader festgelegter Schablonenreferenzwert | Optional | Optional | Optional | Nein | Nein | Nein | Nein | Nein | Nein | ||
Getippte, nicht sortierte Zugriffsansichten werden geladen | 18 Formate, optional | 18 Formate, optional | 3 Formate, optional | 3 Formate, optional | Nein | Nein | Nein | Nein | Nein | ||
Geometry-Shader | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | ||
Stream Out | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | ||
DirectCompute/Compute-Shader | Ja | Ja | Ja | Ja | Optional | Optional | – | – | – | ||
Hull- und Domänen-Shader | Ja | Ja | Ja | Ja | Nein | Nein | Nein | Nein | Nein | ||
Feature \ Featureebene | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Texturressourcenarrays | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | ||
Cubemap-Ressourcenarrays | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | Nein | ||
BC4/BC5-Komprimierung | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | ||
BC6H/BC7-Komprimierung | Ja | Ja | Ja | Ja | Nein | Nein | Nein | Nein | Nein | ||
Alpha-to-Coverage | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | ||
Erweiterte Formate (BGRA usw.) | Ja | Ja | Ja | Ja | Optional | Optional | Ja | Ja | Ja | ||
10-Bit-XR-Format mit hoher Farbtiefe | Ja | Ja | Ja | Ja | Optional | Optional | – | – | – | ||
Logikvorgänge (Output Merger) | Ja | Ja | Ja | Optional1 | Optional1 | Optional1 | Nein | Nein | Nein | ||
Zielunabhängige Rasterung | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein | Nein | Nein | Nein |
Multiple Render Target (MRT) mit ForcedSampleCount 1 | Ja | Optional1 | Optional1 | Optional1 | Nein | Nein | Nein | ||||
UAV-Slots | 64 | 64 | 64 | 8 | 1 | 1 | – | – | – | ||
UAVs in jeder Phase | Ja | Ja | Ja | Nein | Nein | Nein | – | – | – | ||
Feature\Featureebene | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Maximale Anzahl erzwungener Beispiele für reines UAV-Rendering | 16 | 16 | 16 | 8 | N/V | – | – | – | – | ||
Konstanter Pufferabsatz und partielle Updates | Ja | Ja | Ja | Optional1 | Optional1 | Optional1 | Ja1 | Ja1 | Ja1 | ||
bpp-Formate (16 Bits pro Pixel) | Ja | Ja | Ja | Optional1 | Optional1 | Optional1 | Optional1 | Optional1 | Optional1 | ||
Max. Texturdimension | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 4096 | 2048 | 2048 | ||
Maximale Cubemap-Dimension | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 4096 | 512 | 512 | ||
Maximale Volumeausdehnung | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 256 | 256 | 256 | ||
Max. Texturwiederholung | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 8192 | 2048 | 128 | ||
Max. Anisotropie | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 2 | ||
Maximale Anzahl von Grundtypen | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65.535 | ||
Max. Scheitelpunktindex | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65534 | ||
Max. Eingabeslots | 32 | 32 | 32 | 32 | 32 | 16 | 16 | 16 | 16 | ||
Gleichzeitige Renderziele | 8 | 8 | 8 | 8 | 8 | 8 | 4 | 1 | 1 | ||
Feature \ Featureebene | 12_28 | 12_10 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Okklusionsabfragen | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Nein | ||
Separate Alphamischung | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Nein | ||
Einmal spiegeln | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Nein | ||
Überlappende Vertexelemente | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Nein | ||
Unabhängige Schreibmasken | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | ||
Instanziierung | Ja | Ja | Ja | Ja | Ja | Ja | Ja7 | Nein | Nein | ||
Nonpowers-of-2 bedingt3 | Nein | Nein | Nein | Nein | Nein | Nein | Ja | Ja | Ja | ||
Nonpowers-of-2 bedingungslos4 | Ja | Ja | Ja | Ja | Ja | Ja | Nein | Nein | Nein |
Fußnoten für die Tabellen
0 Erfordert die Runtime Direct3D 11.3 oder Direct3D 12.
1 Erfordert die Direct3D 11.1-Runtime.
2 Shadermodell 5.0 und höher kann optional Shader mit doppelter Genauigkeit, erweiterte Shader mit doppelter Genauigkeit, die SAD4-Shaderanweisung und Shader mit teilweiser Genauigkeit unterstützen. Rufen Sie ID3D11Device::CheckFeatureSupport auf, um die Optionen des Shadermodells 5.0 zu bestimmen, die für DirectX 11 verfügbar sind. Eine gewisse Kompatibilität hängt davon ab, auf welcher Hardware Sie ausgeführt werden. Shadermodell 5.1 und höher werden nur über die DirectX 12-API unterstützt, unabhängig von der verwendeten Featureebene. DirectX 11 unterstützt nur bis zum Shadermodell 5.0. Die DirectX 12-API wird nur auf Featureebene 11_0 heruntergefahren.
3 Auf den Featureebenen 9_1, 9_2 und 9_3 unterstützt das Anzeigegerät die Verwendung von 2D-Texturen mit Dimensionen, die unter zwei Bedingungen nicht zwei sind. Erstens kann nur eine MIP-Kartenebene für jede Textur erstellt werden, und zweitens sind keine Wrapper-Samplermodi für Texturen zulässig (d. a. die AddressU-, AddressV- und AddressW-Member von D3D11_SAMPLER_DESC können nicht auf D3D11_TEXTURE_ADDRESS_WRAP festgelegt werden).
4 Auf den Featureebenen 10_0, 10_1 und 11_0 unterstützt das Anzeigegerät bedingungslos die Verwendung von 2D-Texturen mit Dimensionen, die keine Potenzen von zwei sind.
5 Vertex-Shader 2a mit 256 Anweisungen, 32 temporären Registern, statischer Strömungssteuerung von Tiefe 4, dynamischer Strömungssteuerung von Tiefe 24 und D3DVS20CAPS_PREDICATION. Pixelshader 2x mit 512 Anweisungen, 32 temporären Registern, statischer Flusssteuerung von Tiefe 4, dynamischer Flusssteuerung von Tiefe 24, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT und D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT.
6 Höhere Ebenen optional.
7 Für Featureebene 9_3 werden nur Die Renderingmethoden Draw, DrawIndexed und DrawIndexInstanced unterstützt. Auch für Featureebene 9_3 wird das Rendern von Punktlisten nur für das Rendern über Zeichnen unterstützt.
8 Wird von Windows 11 unterstützt.
9 In der Direct3D 12-API gibt es Grenzwerte für die Anzahl von Deskriptoren in einem CBV/SRV/UAV-Heap. Weitere Informationen finden Sie unter Hardwareebenen . Separat gibt es eine Beschränkung für die Anzahl von UAVs in allen Deskriptortabellen über alle Phasen hinweg, die auf der Ressourcenbindungsebene basiert.
10 Für einen 64-Bit-Prozess sind 40 Bit Adressraum pro Ressource und pro Prozess erforderlich. Ein 32-Bit-Prozess kann auf 31 Bits des Adressraums beschränkt sein. In der API stehen zwei Funktionen (Obergrenzen) zur Verfügung: pro Prozess und pro Ressource. Der Adressraum pro Prozess ist immer größer oder gleich dem Adressraum pro Ressource.
Ausführliche Informationen zur Formatunterstützung auf verschiedenen Hardwarefeatureebenen finden Sie unter:
- DXGI-Formatunterstützung für Direct3D-Hardware der Featureebene 12.1
- DXGI-Formatunterstützung für Direct3D-Hardware der Featureebene 12.0
- DXGI-Formatunterstützung für Direct3D-Hardware der Featureebene 11.1
- DXGI-Formatunterstützung für Direct3D-Hardware der Featureebene 11.0
- Hardwareunterstützung für Direct3D 10Level9-Formate
- Hardwareunterstützung für Direct3D 10.1-Formate
- Hardwareunterstützung für Direct3D 10-Formate