Funktionsnivåer i Direct3D
Funktionsnivåer i Direct3D definierar strikta uppsättningar funktioner som krävs av vissa versioner av Direct3D API och runtime, samt ytterligare valfria funktionsnivåer tillgängliga inom samma API-version.
Översikt
Funktionsnivåer kapslar in hårdvaruspecifika funktioner som finns utöver vanliga obligatoriska krav och funktioner i en viss version av API:et. Nivåerna är grupperade i strikta superset av varandra, så varje högre nivå inkluderar alla funktioner som krävs på varje lägre nivå.
Vissa funktionsnivåer inkluderar tidigare valfria hårdvarufunktioner som flyttas till en obligatorisk status med nya revisioner av API för att bättre exponera nyare hårdvara. Mer avancerade funktioner som nya shader-modeller och renderingssteg exponeras endast på hårdvara på högre nivå, men hårdvaran krävs inte för att stödja alla dessa funktionsnivåer och Direct3D-runtime kommer att göra de nödvändiga översättningarna.
Funktionsnivåer tillåter utvecklare att förena renderingspipelinen och använda en enda version av API:t på både nyare och äldre hårdvara, och dra fördel av prestanda- och användbarhetsförbättringar i den nyare körtiden.
Det finns separata möjligheter för att indikera stöd för specifika texturoperationer och resursformat; dessa specificeras vanligtvis för varje texturformat med en kombination av funktionsflaggor, men några av dessa valfria funktioner flyttas till obligatoriska på övre funktionsnivåer.
Direct3D 10
Direct3D 10 introducerade en fast uppsättning obligatoriska krav för grafikhårdvaran. Innan Direct3D 10 introducerade nya versioner av API:et stöd för nya hårdvarufunktioner, men dessa funktioner var valfria och måste efterfrågas med "capability bits" eller "caps".
Direct3D 10.1 API var det första att använda ett koncept med "funktionsnivåer" för att stödja både Direct3D 10.0 och 10.1 hårdvara.
Direct3D 11
I Direct3D 11 har konceptet med funktionsnivåer utökats ytterligare för att kunna köras på de flesta hårdvara på lägre nivåer inklusive Direct3D 9-kort med WDDM- drivrutiner .
Det finns sju funktionsnivåer som tillhandahålls av strukturen D3D_FEATURE_LEVEL ;
nivåerna 9_1, 9_2 och 9_3 (gemensamt kända som Direct3D 10 Level 9 ) omkapslar olika funktioner hos populära Direct3D 9-kort som överensstämmer med Shader Model 2.0, medan nivåerna 10_0, 10_1, 11_0 och 11_1 hänvisar till respektive versioner av Direct3D API. "10 nivå 9" funktionsnivåer innehåller en delmängd av Direct3D 10/11 API och kräver att shaders skrivs i HLSL som överensstämmer med Shader Model 4.0 4_0_LEVEL_9_x
kompilatorprofiler och inte i det faktiska "shader assembly" -språket i Shader Model 1.1/2.0 ; SM 3.0 ( vs_3_0
/ ps_3_0
) har utelämnats medvetet i Direct3D 10 nivå 9.
Sedan Direct3D 11.1 för Windows 8 är vissa obligatoriska funktioner införda för nivå 11_1 tillgängliga som tillval på nivåerna 10_0, 10_1 och 11_0 - dessa funktioner kan kontrolleras individuellt via CheckFeatureSupport-funktionen, men funktionsnivå 11_1 och
valfria funktioner är inte tillgängliga i Direct3D 11.1 för Windows 7- plattformsuppdatering eftersom den inte stöder WDDM 1.2.
Direct3D 11.2 för Windows 8.1 lägger till valfria mapparbara buffertar och valfria sida vid sida resurser för nivåerna 11_0 och 11_1; dessa funktioner kräver WDDM 1.3-drivrutiner.
Direct3D 11.3 för Windows 10 kräver WDDM 2.0-drivrutiner; den lägger till fler valfria funktioner och nivåerna 12_0 och 12_1 från Direct3D 12.
Nödvändiga funktioner | Valfria funktioner | GPU:er stödjer som en maximal funktionsnivå | |||||
---|---|---|---|---|---|---|---|
Funktionsnivå | Direct3D körtid | Förarmodell | Funktioner | Direct3D körtid | Förarmodell | Funktioner | |
9_1 | 11.0 | WDDM 1.0 | Shader Model 2.0 ( vs_2_0 / ps_2_0 ), 2K-texturer, volymtexturer, händelsefrågor, BC1-3 (aka DXTn), några andra specifika funktioner. |
— | Nvidia GeForce FX ; Intel GMA 950/3100 (945G/965G/G31/G33 chipset); Tegra 3 , Tegra 4 | ||
9_2 | Ocklusionsfrågor, flyttalsformat (ingen blandning), utökade tak, alla 9_1-funktioner. | ATI Radeon 9800/9700/9600/9500 | |||||
9_3 |
vs_2_a / ps_2_x med instancing och ytterligare shader-lock, 4K-texturer, flera renderingsmål (4 MRTs), flytande-punktsblandning (begränsad), alla 9_2-funktioner. |
ATI Radeon X800/X700 , X1900/X1800/X1600/X1300 ; Nvidia GeForce 6 , 7-serien ; Adreno 220/300-serien; Mali-T 6xx/720/820/830, Mali-G51; Matrox M-serien; Vivante GC2000-serien och framåt | |||||
10_0 | 10,0 | Shader Model 4.0, geometriskuggning, stream out, alfa-till-täckning, 8K-texturer, MSAA-texturer, 2-sidig stencil, allmänna renderade målvyer, texturmatriser, BC4/BC5, stöd för fullt flyttalsformat, alla 9_3-funktioner. | ATI Radeon HD2000- serien; Nvidia GeForce 8/9 / GTX 200 - serien ; Intel GMA X3500-X4500 (G35/G41/G43/G45 chipset) | ||||
10_1 | 10.1 | Shader Model 4.1, cubemap arrays, utökad MSAA, alla 10_0 funktioner. | ATI Radeon HD 3000 / 4000 -serien; Nvidia GT 205-240 / GT 300 -serien; Intel HD Graphics ( Arrandale / Clarkdale CPUs), Intel HD Graphics 3000/2000 ( Sandy Bridge ) |
||||
11_0 | 11.0 | WDDM 1.1 | Shader Model 5.0, skrov & domän shaders, DirectCompute (CS 5.0), 16K texturer, BC6H/BC7, utökade pixelformat, alla 10_1 funktioner. | 11.1 | WDDM 1.2 |
10_x: DirectCompute (CS 4.0/CS 4.1), utökade pixelformat, logiska blandningsoperationer. 11_0: UAV-rendering endast med kraftprovsräkning, konstant buffertförskjutning och partiella uppdateringar, dubbel precision (64-bitars) flyttalsoperationer, minsta flyttalsprecision (10 eller 16 bitar). |
AMD Radeon HD 5000 / 6000 / 7300-7600 / 8300-8400 , R5 210-235 -serien ( Terascale 2 ), HD 6900 ( Terascale 3 );
|
11.2 | WDDM 1.3 | 11_x: Sidade resurser (två nivåer), min/max-filtrering | Nvidia GeForce GTX 600/700 / Titan-serien ( Kepler ), GTX 745/750 -serien ( Maxwell, 1:a gen ) | ||||
11_1 | 11.1 | WDDM 1.2 | Logiska blandningsoperationer, måloberoende rasterisering, UAV:er i varje pipelinesteg med ökat antal luckor, UAV-rendering endast med kraftprovsräkning, konstant buffertförskjutning och partiella uppdateringar, alla 11_0-funktioner. | 11.3 | WDDM 2.0 | 11_x/12_x: Konservativ rastrering (tre nivåer), sida vid sida resurser (fyra nivåer), stencilreferensvärde från Pixel Shader, rastreringsordnade vyer, skrivna UAV-laddningar för ytterligare format, UMA/hUMA - stöd |
Mali-T 760/860/880, Mali-G71/72; Adreno 400-serien;
|
12_0 | 11.3 | WDDM 2.0 | Kaklade resurser nivå 2 (Texture2D), maskinskrivna UAV-belastningar (ytterligare format). | AMD HD 7790 / 8770 , Rx 260/290 , Rx 360/390 , R7 455- serien , Xbox One ( GCN2 ), R9 285/380, Fury/Nano-serien (GCN3), RX 460-480 , RX 500-serien | |||
12_1 | Konservativ rastreringsnivå 1, rastreringsbeställda vyer. |
Adreno 500/600-serien;
|
|||||
Funktionsnivå | Direct3D körtid | Förarmodell | Funktioner | Direct3D körtid | Förarmodell | Funktioner | GPU:er stödjer som en maximal funktionsnivå |
Nödvändiga funktioner | Valfria funktioner |
Direct3D 12
Direct3D 12 kräver grafikhårdvara som överensstämmer med funktionsnivåerna 11_0 och 11_1 som stöder översättningar av virtuella minnesadresser.
Det finns två nya funktionsnivåer, 12_0 och 12_1, som inkluderar några funktioner som är valfria på nivåerna 11_0 och 11_1. På grund av omstruktureringen av API:t har vissa tidigare valfria funktioner justerats som baslinje på nivåerna 11_0 och 11_1.
Direct3D 12 från Windows 10 Anniversary-uppdatering (version 1607) inkluderar Shader Model 6.0, som kräver WDDM 2.1-drivrutiner, och ny DXIL-kompilator baserad på LLVM . Windows 10 Creators Update version 1703 och 1709 inkluderar Shader Model 6.1 och WDDM 2.2/2.3.
Nivå | Förarmodell | Nödvändiga funktioner | Valfria funktioner | GPU:er stödjer som en maximal funktionsnivå |
---|---|---|---|---|
11_0 | WDDM 2.0 | Alla obligatoriska 11_0-funktioner från Direct3D 11, Shader Model 5.1, Resource binding Tier 1. UAV:er i varje pipelinestadium, UAV-rendering endast med kraftprovsräkning, konstant buffertförskjutning och partiella uppdateringar. |
Resursbindning (tre nivåer), sida vid sida resurser (fyra nivåer), konservativ rasterisering (tre nivåer), stencilreferensvärde från Pixel Shader, rastreringsordnade vyer, maskinskrivna UAV-laddningar för ytterligare format, UMA/hUMA-stöd, visningsinstansering . Logiska blandningsoperationer, dubbel precision (64-bitars) flyttalsoperationer, minsta flyttalsprecision (10 eller 16 bitar). Shader modell 6.0-6.7 Metakommandon, variabel skuggningshastighet, raytracing, mesh shaders, sampler-feedback. Andra valfria funktioner definierade av D3D_FEATURE-strukturer. |
Nvidia GeForce GTX 400 / 500 -serien ( Fermi ), GeForce GTX 600 / 700 / Titan-serien ( Kepler ), GTX 745/750 -serien ( Maxwell, 1:a gen ) |
11_1 | Logiska blandningsoperationer, måloberoende rasterisering, ökat antal UAV-platser. |
Mali-G 71/72;
|
||
12_0 | WDDM 2.0 | Resource Binding Tier 2, Tiled Resources Tier 2 (Texture2D), Typed UAV Loads (ytterligare format) | AMD HD 7790 / 8770 , Rx 260/290 , Rx 360/390 , R7 455- serien , Xbox One ( GCN2 ), R9 285/380, Fury/Nano-serien (GCN3), RX 460-480 , RX 500-serien | |
WDDM 2.1 | Shader Model 6.0, DXIL | |||
12_1 | Nvidia GeForce 900 /Titan-serien ( Maxwell, 2:a generationen ), GeForce 10-serien ( Pascal ), GeForce 16-serien ( Turing )
|
|||
WDDM 2.0 | Konservativ rastreringsnivå 1, rastreringsbeställda vyer. | |||
12_2 | WDDM 2.9 | DirectX 12 Ultimate : Shader Model 6.5, Raytracing Tier 1.1, Mesh Shaders, Variable-Rate Shading, Sampler Feedback, Resource Binding Tier 3, Tiled Resources Tier 3 (Texture3D), Conservative Rasterization Tier 3, 40-bit virtuell adressrymd. | Nvidia GeForce 20-serien ( Turing ), GeForce 30-serien ( Ampere ), GeForce 40-serien ( Lovelace );
|
|
CORE_1_0 | MCDM | Endast beräkningsenhet: Resource Binding Tier 1 (med begränsningar), Shader Model 6.0, DXIL, endast Compute Shaders | Shader Model 6.0-6.7, metakommandon. | ? |
Direct3D 12 introducerar en förnyad resursbindningsmodell som tillåter explicit kontroll av minnet. Abstrakta resurs "view"-objekt som tillät slumpmässig läs/skrivåtkomst representeras nu av resursdeskriptorer, som allokeras med hjälp av minneshögar och tabeller. Denna modell stöds på de flesta befintliga GPU-arkitekturer för stationära datorer och kräver WDDM 2.0-drivrutiner. Hårdvara som stöds är uppdelad i tre resursbindningsnivåer, som definierar maximalt antal deskriptorer som kan användas för CBV (konstant buffertvy), SRV (skuggningsresursvy) och UAV (oordnad åtkomstvy); CBV och SRV per pipelinesteg; UAV för alla steg i pipeline; provtagare per steg; och antalet SRV-deskriptortabeller. Tier 3-hårdvara som AMD GCN och Intel Skylake har inga begränsningar, vilket tillåter helt bindfria resurser endast begränsade av storleken på deskriptorhögen, medan Tier 1 (Nvidia Fermi, Intel Haswell/Broadwell) och Tier 2 (Nvidia Kepler/Maxwell) hårdvara sätter vissa gränser för antalet deskriptorer ("vyer") som kan användas samtidigt. Dessutom kan buffertar och texturer blandas ihop i samma resurshög endast på hårdvara som stöder Resource Heap Tier 2, medan Tier 1-hårdvara kräver separata minneshögar för buffertar, texturer och rendering-mål- och djupstencilytor. Resursbindningsnivå 1 och resurshögnivå 1 krävs för all stödjande hårdvara.
Resursbegränsningar | Nivå 1 | Nivå 2 | Nivå 3 |
---|---|---|---|
Beskrivningar i CBV/SRV/UAV-hög | 1M | >1 M | |
CBVs per shader-steg | 14 | full hög | |
SRVs per shader-steg | 128 | full hög | |
UAV över alla stadier | 8 | 64 | full hög |
64 † | |||
Provtagare per shader-steg | 16 | full hög | |
Funktionsnivå krävs | 11_0 | 11_1 | |
Ej ifyllda rotsignaturposter | Nej | Endast SRV-högar | alla högar |
† 64 platser på funktionsnivå 11_1 och CORE_1_0 hårdvara |
Några av de valfria funktionerna som sida vid sida resurser och konservativ rasterisering har "nivåer" som definierar uppsättningen av stödda funktioner.
Förmåga | Nivå 1 | Nivå 2 | Nivå 3 | Nivå 4 |
---|---|---|---|---|
Kaklad buffert | Ja | |||
Kaklad Texture2D | Ja | |||
Prov med LOD-klämma | Nej | Ja | ||
Prov med feedback | Nej | Ja | ||
NULL-bricka läst | odefinierad | noll | ||
NULL bricka skriva | odefinierad | kasseras | ||
Kaklad Texture3D | Nej | Ja | ||
Textur kakel data-arv | Nej | Ja |
Förmåga | Nivå 1 | Nivå 2 | Nivå 3 |
---|---|---|---|
Erforderlig osäkerhetsregion | 1/2 px | 1/256 px | |
Post-snap degenererade trianglar | Nej | Inte slaktad | |
Inre ingångstäckning | Nej | Ja |
De flesta funktioner är valfria för alla funktionsnivåer, men vissa av dessa funktioner flyttas till obligatoriska på högre funktionsnivåer.
Stödmatris
Funktion
|
Microsoft | AMD Radeon | Nvidia GeForce | Intel HD Graphics / Intel Xe Discrete GPU | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namn | Nivåer | WARP12 | GCN 1 | GCN 2 / GCN 3 / GCN 4 | GCN 5 / RDNA | RDNA 2 | Fermi | Kepler |
Maxwell (första generationen) |
Maxwell (andra generationen) |
Pascal | Volta | Turing 16-serien | Turing 20-serien / Ampere |
Haswell (7,5 gen) |
Broadwell (8 gen) |
Skylake (9 gen) / Kaby Lake (9,5 gen) |
Ice Lake (11 gen) |
Tiger Lake (12 gen) |
Intel Arc Graphics (12.7 gen) |
Maximal funktionsnivå | 12_1 | 11_1 | 12_0 | 12_1 | 12_2 | 11_0 | 12_1 | 12_2 | 11_1 | 12_1 | 12_2 | |||||||||
Resursbindning | 3 | Nivå 3 | Nivå 3 | Nivå 1 | Nivå 2 | Nivå 3 | Nivå 1 | Nivå 3 | ||||||||||||
Kaklade resurser | 4 | Nivå 3 | Nivå 1 | Nivå 2 | Nivå 3 | Nivå 1 | Nivå 3 | Nej | Nivå 1 | Nivå 3 | ||||||||||
Skrivet UAV laddas för ytterligare format | Ja | Ja | Nej | Ja | Nej | Ja | ||||||||||||||
Konservativ rasterisering | 3 | Nivå 3 | Nej | Nivå 3 | Nej | Nivå 1 | Nivå 2 | Nivå 3 | Nej | Nivå 3 | ||||||||||
Rasteriserare-ordnade vyer | Ja | Nej | Ja | Nej | Ja | Ja | ||||||||||||||
Stencilreferensvärde från Pixel Shader | Ja | Ja | Nej | Nej | Ja | |||||||||||||||
UAV-platser för alla stadier | full hög | full hög | 8 | 64 | full hög | 64 | full hög | |||||||||||||
Logiska blandningsoperationer | Ja | Ja | Ja | Ja | ||||||||||||||||
Dubbel precision (64-bitars) flyttalsoperationer | Ja | Ja | Ja | Ja | Nej | |||||||||||||||
Minsta flyttalsprecision | 10 eller 16 bitar | 32 bitar | 16 bitar | 32 bitar | 16 bitar | 32 bitar | 16 bitar | |||||||||||||
Resurshög | 2 | Nivå 2 | Nivå 2 | Nivå 1 | Nivå 2 | Nivå 2 | Nivå 1 | |||||||||||||
Virtuell adressering per resurs | 32 bitar | 40 bitar | 44 bitar | 40 bitar | 31 bitar | 38 bitar | 44 bitar | |||||||||||||
Virtuell adressering per process | 47 bitar | 40 bitar | 44 bitar | 40 bitar | 31 bitar | 48 bitar | ||||||||||||||
Visa instanser | 3 | Nivå 1 | Nivå 1 | Nivå 1 | Nivå 2 | Nivå 3 | Nivå 1 | Nivå 2 | ||||||||||||
Raytracing | 2 | Nej | Nej | Nivå 1.1 | Nej | Nivå 1 | Nivå 1.1 | Nej | Nivå 1.1 | |||||||||||
Skuggning med variabel hastighet | 2 | Nivå 1 | Nej | Nivå 2 | Nej | Nivå 2 | Nej | Nivå 1 | Nivå 2 | |||||||||||
Mesh shaders | 1 | Nivå 1 | Nej | Nivå 1 | Nej | Nivå 1 | Nej | Nivå 1 | ||||||||||||
Sampler feedback | 2 | Nej | Nej | Nivå 1 | Nej | Nivå 0,9 | Nej | Nivå 0,9 |