WGF11 grensesnitt.

I denne artikkelen.

Denne automatiserte testen verifiserer ulike deler av maskinvaren og driveren for gyldig shader-utforelse nar grensesnitt brukes.

Testen fokuserer pa a dekke skjult bufferinformasjon som leveres til driveren gjennom DDI, som inkluderer grensesnitttyper og ressurssteder. Enkelte opplysninger som brukes i grensesnitt, er innebygd i selve skyggen, for eksempel funksjonstabeller og klassetabeller. Maskinvaren er bare nodvendig for a ringe og indeksere disse tabellene riktig, fordi runtime krever at alle ledelsen krever at informasjonen blir organisert og kartlagt riktig.

Testen utforer bare gyldige scenarier og kontrollerer at resultatene er vellykkede. Det forventes ingen feil pa sertifiserbar D3D11-maskinvare.

Testloggene til WTT som tidligere overensstemmelsestester har, og inneholder nyttig informasjon om manglende hjelp av IHVs til a feilsoke feilene sine.

Dette emnet gjelder for folgende testjobber:

WGF11 grensesnitt (WoW64)

Test detaljer.

Device.Graphics.AdapterRender.D3D111Core.D3D111CorePrimary Device.Graphics.AdapterRender.D3D11Core.D3D11CorePrimary.

Windows 10, klientutgaver (x86) Windows 10, klientutgaver (x64) Windows Server 2016 (x64) Windows 10, klientutgaver (ARM64)

Windows 10 Windows 10, versjon 1511 Windows 10, versjon 1607 Windows 10, versjon 1703 Windows 10, versjon 1709.

Ytterligere dokumentasjon.

Test i dette funksjonsomradet kan ha tilleggsdokumentasjon, inkludert forutsetninger, oppsett og feilsokingsinformasjon, som kan finnes i folgende emne (r):

Kjorer testen.

For du kjorer testen, ma du fullfore testoppsettet som beskrevet i testkravene: Grafisk Adapter eller Chipset Testing Forutsetninger.

Feilsoking.

For generell feilsoking av HLK-testfeil, se Feilsoking av feil i Windows HLK-test.

Testen returnerer SKIP nar kjor pa funksjonsniva & lt; 11. Testen returnerer SKIP nar kjor pa funksjonsniva & lt; 11.

Mer informasjon.

WGF11Interface – Interface Shader Execution.

WGF11Interfaceene dekker alle aspekter av dataoverforing til driveren, sammen med riktig utforelse av shader IL.

En beskrivelse av hver testgruppe og den nodvendige kommandolinjeparameteren er oppfort senere i denne delen. Hele shaders er ikke gitt i denne dokumentasjonen. En beskrivelse av skjermens mal og typer innganger er imidlertid beskrevet for a gi informasjon om hvordan man skal teste i Windows Hardware Quality Labs (WHQL). I tillegg kjores hver test pa alle shader-stadier for a verifisere konsekvent oppforsel for en funksjon som overholder de enhetlige arkitekturmalene.

Tester bruker ints og uints som innganger og under beregning hvor det er mulig, fordi presisjon og verifikasjon av flytende punktmatematikk er dekket i en annen konformitetsprove.

Tester som bruker samplere utforer punktprovetaking og bruker grensefarge for a kontrollere om korrekt sampler brukes. Filtrering og andre aspekter av provetakingsdekning er dekket i en annen konformitetstest. Grensesnitt testing er bare opptatt av riktig indeksering av samplers som brukes av klassetilfeller under utforelsen.

Test som bruker ressurser fokuserer pa formater med 8-biters kanaler og ingen MIP-nivaer. Andre tester verifiserer ressurskorrektur. Grensesnittprove er bare opptatt av riktig indeksering av teksturer som brukes av klassekomponenter under utforelse. Kun ressursbelastninger blir brukt. Fordi de ikke kan indekseres, er UAV ikke viktige for grensesnitt.

Testene blir kjort mot hvert skyggertrinn, fordi funksjonen skal passe inn i den enhetlige arkitekturen i Shader Model 5.0.

Hver test har en Pri-1-oppgave og en Pri-2-oppgave, som, nar kombinert, fullforer dekning av funksjonen. Pri-1-oppgaver krever at en test bare skal kjore i et bestemt lysfase. Pri-2-oppgaver tester de gjenv rende shader-stadiene.

Alle forekomster er opprettet av kjoretiden ved hjelp av folgende API-anrop:

Forekomster angis nar shader er satt ved hjelp av XXSetShader () samtaler.

WGF11Interfaces.exe Interfaces \ FunctionTables og fcall \ [PS]

Den store funksjonstabellen testen verifiserer om maskinvare er i stand til a administrere shader-programmene som utgis av kompilatoren. Denne bekreftelsen er spesifikk for shaders som har mange cascading grensesnittanrop som resulterte i store generasjoner av kode som har mange funksjonslegemer. Denne testen tester ikke ytelsen til slike shaders, men tester om utforelsen er korrekt sammenlignet med referanse rasterizer.

Det er skrevet flere shaders som i rekkefolge vil doble antall funksjonslegemer som er opprettet av kompilatoren. Disse shaders kjores deretter med flere variasjoner pa tilfellene som fyller sporene, for a verifisere korrekt utforelse gjennom en delmengde av kodebaner. Testet kan til enhver tid forsoke a validere alle kodebaner, og det forventes at maskinvare ikke vil mislykkes pa noen av dem. Hvis maskinvaren returnerer utenom minne under skaperopprettelsestid, returnerer testen RESULT_SKIP, nar det er rimelig. Ressursbehovene til disse shaders bor ikke presse begrensningene til maskinvare. Som sadan burde shaderen binde og utfore helt fint. Hvis maskinvare mislykkes pa selv sma funksjonstabeller, oppstar en advarsel. Maskinvaren skal stotte minst 4 KB funksjonsorganer.

Cascading-funksjonene er designet ved a bruke flere grensesnitttyper, hver som er avhengig av et objekt av en annen forekomst for dens parameter. Disse samtalene er utformet for a v re flere lag dyp og kan lett resultere i at mer enn 1 k funksjonsorganer skal opprettes.

Testen gir ogsa dekning av fcall-instruksjonen ved a ringe for ovrig andre funksjoner for a fa passende dekning av funksjonene 4 KB i skyggeren. Dette kan gjores ved a variere de bundne tilfellene ved a bruke XXSetShader av kjoretiden. Rammen gir en enkel mate a fa tilstrekkelig dekning gjennom permutasjoner av bundet typer.

For a sikre at testen ikke trenger vedlikehold pa grunn av endringer i kompilatoren, ma hver funksjonsdel v re unik fra alle andre funksjonsorganer. Dette skyldes at kompilatoren pa et eller annet tidspunkt kan kollapse funksjonslegemer med identisk kode for a redusere kodestorrelsen og gi et mer optimert funksjonsbord. Ved a sikre at alle funksjonsorganer er forskjellige, forhindrer du testen i a bli forandret eller blir foreldet nar denne optimaliseringen legges til kompilatoren. Det er viktig a gjennomga IL for a sikre at den forventede koden blir produsert.

Hvis grensesnittet for Type3 kalles, og hver implementering kaller grensesnittmetoden til en inngangsparameter, opprettes 720 funksjonslegemer av alle mulige kodebaner, hver optimalisert for sin spesifikke kodebane. Fordi det ikke er noen begrensning for kodestorrelse annet enn minne, bor selv meget store shaders utfores uten feil.

Shader-koden er optimalisert pa fcall-omrader, sa det er mulig for hver samtale a v re unik basert pa informasjon fra den som ringer og callee. Enkel multiplikasjon med en konstant er ikke nok; I stedet ma hver funksjonsgruppe v re unik ved a gjore forskjellige operasjoner og bruke medlemsvariabler. Den resulterende produksjonen ma verifiseres, slik at multiplikasjon med primtal eller noe lignende vil fungere. For a verifisere at skyggeren ble utfort korrekt, ma samme matte gjores pa CPU basert pa de bundne klassetilfeller.

Denne testen dekker ogsa kalltreetdybde (32). Det er viktig a teste at mer enn 32 fcalls resulterer i no-ops (du kan bare teste 33 pa et gitt tidspunkt). Kompilatoren tillater ikke at kode skrives for a bare teste dette tilfellet, sa du trenger en mer sofistikert tiln rming som dynamisk kan endre anropsdybden og verifisere at hvert anrop ble gjort (eller ikke gjort).

En fibinachi-sekvens eller lignende kan v re nyttig for dette. Rekursive samtaler er ikke tillatt, sa det ma v re 33 grensesnitt som kan kalles etter hverandre. Lokalt ma forekomstene avgjore hvorvidt eller ikke a fortsette falsedybden. Rundtiden binder dataene til a kjore disse testene.

Denne testen er skrevet for pixel shader som Pri-1.

Fullforing av denne testen viser folgende:

Fcall fungerer.

Funksjonstabellene er riktige og brukes riktig.

Funksjonstabellgrensen pa 4 KB stottes.

Samtaledybden er 32.

Resultater for testen er fanget i folgende gjengemal:

WGF11Interfaces.exe grensesnitt \ FunctionTables og fcall \ [VS, GS, HS, DS, CS]

Testen dekker alle skyggefaser.

Verifisering av denne funksjonen stotter et bredt spekter av gyldige designmonstre og OO programmeringsteknikker som Shader Model 5.0 ble designet for a stotte.

Resultatene for disse testene er fanget i en utstromningsbuffer for VS, HS, DS og GS. Resultater for PS og CS blir tatt ved a gjengi mal og skrivbare buffere.

WGF11Interfaces.exe grensesnitt \ GroupExecutionPathDifferences \ [CS]

Utnyttelse av parallellisme er sv rt viktig nar du designer maskinvare. Imidlertid bor kapitalisering pa slike muligheter ikke forstyrre riktig utforelse av en skygge nar kodebaner avviker. Denne testen gar i hvert skyggerstadium og gir dekning som utforer forskjellige kodebaner til tross for at piksler, poeng og andre pipeline-scene-primitiver kan bli utfort som lasesteggrupper. Denne testen tester ikke ytelse i slike tilfeller. I stedet er det bare verifiserer et gyldig resultat etter utforelse.

A levere data til hvert rorledningstrinn er viktig og ma gjores i store biter for a bekrefte dekning av variert kjoring over grupper. Folgende metode gir dataene til testene for hvert skyggefase:

Data som brukes til a velge forekomster som er basert pa array-spor, leveres ved a bruke ressurser til beregningsskyggeren. SV_GroupID og SV_GroupThreadID brukes til a velge de riktige dataene fra ressursen for a velge hvilke klasser som skal brukes under innkallingen av en skygge. Resultatene av utforelsen er skrevet til en skrivbar buffer som skal bekreftes at den er riktig. En stor dimensjon av trader i hver dimensjon blir brukt. Dette inkluderer store prim re trader og flere grupper som skal sendes for a fa tilstrekkelig dekning for denne testen.

Hver maskinvare-trad skal utfore et metallsamtale i en annen type som tilbys av kjoretiden. Rundtiden er i stand til a beregne resultatet for verifisering basert pa den brukte typen, dataene og algoritmen til typen. Koden for hver metode bor variere i lengde og kompleksitet for a bevise at maskinvaren kan handtere shaders som dette. 12-18 forskjellige klasse implementeringer skal brukes, og hver SV_ [Index] verdi kan pseudo modded for a velge hvilken array indeks og hvilken klasse forekomst a utfore.

Testen utvides til de andre shader-stadiene.

Et sett med grensesnittsporings arrayindekser legges til vertexdataene og brukes under vertex shader-utforelse for a bestemme hvilket grensesnitt-tilfelle som skal paberopes. Dataene dekker ogsa hvilke forekomster som brukes som parametre nar metoder paberopes. En blokk med minst 512 poeng trekkes for a verifisere maskinvareadferd. Resultatene er fanget av en strom ut buffer.

Grensesnittsporingsarrayindeksene legges til kontrollpunktsinndatestrukturen, slik at hvert punkt kan bestemme hvilke klassetilfeller som paberopes i lopet av shader. Disse dataene dekker ogsa hvilke forekomster som brukes som parametre nar metoder paberopes. En full 32-punkts lapp tegnes flere ganger for a bekrefte maskinvareadferd. Resultatene vil bli fanget av en stream-ut buffer.

Denne testen overforer ogsa dataene til Patch Constant-funksjonen, som ogsa verifiserer riktig oppforsel.

I tillegg er SV_OutputControlPointID og spesifikk forkingskode slatt pa i kompilatoren. Forkingskoden forarsaker divergente kodeutforelsesbaner ved a bruke grensesnitt i dette trinnet ogsa. Forking kan nas ved a bruke en loop og kaller en grensesnittmetode fra lokken.

Data sendes gjennom Hull shader pa hvert kontrollpunkt og deretter gjenopprettes ved a bruke SV_PrimitiveID som er tilgjengelig i Domain Shader. Tessellatorutgangsposisjonene er kombinert med SV_PrimitiveID for a opprette indeksene i de tilgjengelige klassesentralsporene under utforelse. Den fullstendige 32-punkts oppdateringen trekkes flere ganger for a bekrefte maskinvareadferd. Resultatene er fanget av en strom ut buffer. Fokuset er ikke a dekke alle domenetyper.

Interface slot indekser er knyttet til punkt primitives som er gitt til geometri shader. Indeksene brukes til a velge klassevaner for a paberope metoder pa og bruke som parametere under shader-utforelse. En blokk med minst 512 poeng trekkes for a verifisere maskinvareadferd. Resultatene er fanget i en strom ut buffer for verifisering.

For pikselskyggere brukes en tekstur til a gi klasseeksempelindeksene for hver piksel. Tekstur samsvarer akkurat med storrelsen pa gjengemalet ved a tegne en stor quad. Et omrade pa minst 512 x 512 piksler er tegnet, med de stottende ressursene, for a verifisere maskinvareadferd. Resultatene er fanget i et gjengivelsesmal for validering. SV_Position og SV_SampleIndex kan ogsa brukes til a bestemme hvordan en pixel indekserer i grensesnittsporene. Tegne en trekant er mer interessant enn a tegne en quad.

WGF11Interfaces.exe grensesnitt \ IndexingResources og denne [] \ [VS]

Alle ressurser som brukes av et grensesnitt, ble gjort indeksible av IL for a stotte dynamisk runtime-binding. Dataene leveres gjennom DDI og inneholder folgende informasjon:

Denne testen sikrer at all denne informasjonen er riktig brukt av driveren og utforelsen av shader. Tilgang til denne informasjonen kan bare gjores gjennom «dette» sokeord, som bruker en skjult reservert buffer. Klassetilfeller som er 256 bytescan, er bundet til en skygge, sa denne testen gir dekning for a bruke alle 256 forekomstspor. A gjore det inneb rer at dette ma brukes i kombinasjon med hvert av de andre omradene i denne testen. De andre omradene trenger imidlertid ikke a verifiseres gjennom permutasjon med hverandre.

Testsyklusene plasserer for alle de forskjellige sporene og offsets i ressursene og bruker disse ressursene nar de produserer resultater.

For a fa full dekning bor hver klasse forekomme utfore en metode som bruker ressursdataene til a produsere et resultat. Ved a gjore dette sikrer det at forekomsttypen ID blir brukt riktig med hensyn til funksjonstabellene.

Hver cbuffer ma testes for klassedata. Dataene ma plasseres gjennom bufferen ved hjelp av offset-parameteren. Dette kan gjores ved a binde 256 eksemplarer hver med et annet sted satt av kjoretiden. Skyggeren kan utfore 256 hjorner og bruke SV_PrimitiveID til a bestemme forekomstsporet som skal brukes.

Hver tbufferspor i de 128 tilgjengelige ma brukes pa samme mate som tidligere nevnt. Bare en enkel buffer eller texture2d ma brukes, og bare belastningsinstruksjonen er testet. Testen er bare interessert i riktig indeksering av teksturregisterene.

Hver samplerspor i de 16 som er tilgjengelige for et skyggerstadium, ma brukes pa samme mate som tidligere nevnt. Provetakere blir samplet utenfor teksturgrensen, slik at en kantfarge returneres. Hver av de 16 samplerne skal ha en unik grensefarge for at testen skal verifisere at korrekt sampler ble brukt.

Disse kan testes separat – kombinert dekning er unodvendig.

F11Intefaces.exe grensesnitt \ IndexingResources og dette [] \ [GS, PS, HS, DS, CS]

Den forrige testen er utvidet til a dekke alle skyggefaser.

(Pri 1 18 timer) Den utsatte konteksten bor ogsa brukes i disse testene.

Testsakene skissert vil ogsa bli kjort i en utsatt kontekst ved a bruke kommandolinjer for a angi klasser og forekomster.

Kommandolister arver ikke stat fra den umiddelbare konteksten. Derfor bor forekomster som er angitt i den umiddelbare konteksten, ikke v re tilgjengelige nar du utforer en kommandoliste.

Statens clearing pa utsatt kontekst (gjennom bool-parameteren i ExecuteCommandList og FinishCommandList) bor testes med grensesnitt og klasser.

Kommandosyntax.

Kjorer testjobbene. Uten noen alternativer teller testen enheter.

Angir funksjonen lewlve, hvor XX.X er funksjonsnivaet testen vil kjore pa: 10.0, 10.1 eller 11.0.

For kommandolinjehjelp for denne test-bin ren, skriv /? .


Vil du spille i det mest ærlige kasinoet? Vi forbereder det for deg. Prøv her nå!