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.

Direct3D 10 och 11 funktionsnivåer
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 );


Nvidia GeForce GTX 400 / 500- serien ( Fermi ); Intel HD Graphics 4000/2500 ( Ivy Bridge )

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;


AMD HD 7700-7900 / 8500-8900 , Rx 240/250/265/270/280 , Rx 330/340/350/370 , R5/R7 400- serien ( GCN1 ); Intel HD Graphics 4200-5200 (7,5 gen, Haswell ), 5300-6300 (8 gen, Broadwell )

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;



Nvidia GeForce 900 /Titan-serien ( Maxwell, 2:a gen ); GeForce 10 -serien ( Pascal ), GeForce 20- serien ( Turing ); AMD RX Vega-serien (GCN5), Radeon RX 5000-serien ( RDNA ); Intel HD Graphics 510-580 (9 gen, Skylake ), 605-620 (9.5 gen, Kaby Lake )

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.

Direct3D 12 funktionsnivåer
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;


AMD HD 7700-7900 / 8500-8900 , Rx 240/250/265/270/280 , Rx 330/340/350/370 , R5/R7 400- serien ( GCN1 ); Intel HD Graphics 4200-5200 (7,5 gen, Haswell ), 5300-6300 (8 gen, Broadwell )

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 )


AMD RX Vega-serien (GCN5), Radeon RX 5000-serien ( RDNA ); Intel HD Graphics 510-580 (9 gen, Skylake ), 605-620 (9.5 gen, Kaby Lake )

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 );


AMD Radeon RX 6000-serien ( RDNA2 ), Radeon RX 7000-serien ( RDNA3 ); Intel Arc Alchemist-serien ( Xe HPG )

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.

Resursbindande nivåer
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.

Kaklade resursnivåer
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

Konservativa rasteriseringsnivåer
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

Direct3D 12 valfri funktionsstödmatris av GPU-leverantör och serie
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

Se även

externa länkar