Dela via


Prestandaförbättringar för Direct3D-återgivning

Windows Display Driver Model (WDDM) 1.3 och senare drivrutiner kan stödja Prestandaförbättringar för Microsoft Direct3D-rendering som gör att Direct3D 9-maskinvaran bättre kan använda maskinvarukommandobuffertar och räknare och göra effektiva kopior av systemminne till underresurser. Dessa funktioner, som speglar några av de funktioner som är tillgängliga för Direct3D Version 10-maskinvara, är nya från och med Windows 8.1.

Nya trimnings- och kartläggningsförbättringar av Direct3D 11.1-resursernas standardprestanda är också tillgängliga. Standardscenariot för kartan beskrivs i avsnittet Beteendeändringar nedan.

Referens för återgivningsprestanda

Det här referensavsnittet beskriver användarlägets enhetsdrivrutinsgränssnitt (DDI:er).

Direct3D-renderingsprestandafunktioner som implementeras av drivrutinen i användarläge

Det här avsnittet innehåller funktioner som en WDDM(Windows Display Driver Model) 1.3 och senare drivrutin för användarläge implementerar för att stödja prestandaförbättringar för Microsoft Direct3D-återgivning.

PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP

Prestandastrukturer och uppräkningar för Direct3D-rendering

Dessa strukturer och uppräkningar i användarläge stöder prestandaförbättringar för rendering och är nya eller uppdaterade för Windows 8.1. Alla gäller för Direct3D Level 9-drivrutiner förutom för D3D11_1_DDI_FLUSH_FLAGS.

DDI-implementeringskrav som börjar med WDDM 1.3

Från och med WDDM 1.3 krävs följande funktioner eller är valfria för drivrutiner i användarläge att implementera.

Funktionsgrupp Beskrivning

Direct3D 9-funktioner som är valfria före WDDM 1.3. Nu krävs:

Direct3D 9-funktioner som är tillgängliga från och med WDDM 1.3. En drivrutin måste antingen implementera alla dessa funktioner eller ingen av dem:

När de valfria funktionerna WDDM 1.3 och senare omedelbart ovan implementeras har dessa funktioner associerade beteendeändringar:

Dessa scenarier gäller när GetCaps anropas :

  • Om D3DDDICAPS_GETD3DQUERYDATA anges kan drivrutinen eventuellt rapportera stöd för tidsstämplar, vilket innebär att Direct3D-körningen inte maskerar stöd.
  • Om D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT är satt kan drivrutinen rapportera valfritt maskinvarustöd för instansiering.

Dessa Direct3D 11-funktioner har associerade beteendeändringar:

  • CreateResource(D3D11) – standard för buffertkarta (se avsnittet Beteendeändringar nedan)
  • pfnFlush1 – resurstrimning
  • ResourceMap – standard för buffertkarta (se avsnittet Beteendeändringar nedan)
  • ResourceUnmap – standard för buffertkarta (se avsnittet Beteendeändringar nedan)

Beteendeändringar för anrop till funktioner för att skapa, mappa och avmappa resurser

För dessa funktioner som implementeras av WDDM 1.3 och senare drivrutiner tillhandahåller Direct3D-körningen en begränsad uppsättning indatavärden för map-standardscenariot. Dessa begränsade värden gäller endast för drivrutiner som stöder funktionsnivå 11.1 och senare.

Funktionen CreateResource(D3D11)

Dessa indata D3D11DDIARG_CREATERESOURCE strukturmedlemmar är begränsade:

Medlem Beskrivning

ResourceDimension och Förbrukning

Dessa beteendeändringar gäller endast när Direct3D-runtime tillhandahåller typen D3D10DDIRESOURCE_BUFFER för ResourceDimension och typen D3D10_DDI_USAGE_DEFAULT för Usage.

BindFlags

Direct3D-runtime anger endast värdena D3D10_DDI_BIND_SHADER_RESOURCE och D3D11_DDI_BIND_UNORDERED_ACCESS.

MapFlags

Om alla andra medlemskrav som anges här är uppfyllda kan körningstiden ange värden för D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE och D3D10_DDI_MAP_READWRITE. Drivrutinen måste ha stöd för dessa värden. Värdena för D3D10_DDI_MAP_WRITE_DISCARD och D3D10_DDI_MAP_WRITE_NOOVERWRITE är ogiltiga.

MiscFlags

Körningen anger endast värdena för D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS och D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED .

Format

Körtiden anger endast värdet DXGI_FORMAT_UNKNOWN.

SampleDesc

Körtiden anger DXGI_SAMPLE_DESC. Count-medlemmen till 1 och Quality-medlemmen till noll.

MipLevels

Körtiden sätter värdet till 1.

Matrisstorlek

Körtiden anger värdet till 1.

pPrimaryDesc

Körtiden anger värdet till NULL.

ResourceMap-funktionen

Dessa indataparametrar till ResourceMap är begränsade:

Parameter Beskrivning

hResource

Direct3D-körningen anger endast en D3D10DDIRESOURCE_BUFFER resurs när ett värde som inte är noll för MapFlags anges i skapandeanropet till CreateResource(D3D11).

Körtiden ställer endast in värdet DXGI_FORMAT_UNKNOWN.

Underresurs

Körtiden anger endast värdet till 0.

DDIMap

Om alla andra medlemskrav som anges här är uppfyllda kan körmiljön ange D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE eller D3D10_DDI_MAP_READWRITE som ett värde som matchar MapFlags-värdet som angavs i skapanropet till CreateResource(D3D11).

flaggor

Även om indatavärdet under körning inte är begränsat måste drivrutinen kunna stödja D3D10_DDI_MAP_FLAG_DONOTWAIT-värdet.

pMappedSubResource

Även om indatavärdet från körningen inte är begränsat, måste drivrutinen tilldela en giltig CPU-cachebar pekare till D3D10DDI_MAPPED_SUBRESOURCE.pData-medlemmen och ange RowPitch och DepthPitch så att de matchar buffertens storlek och de data som anges i pData.

ResourceUnmap-funktion

Dessa indataparametrar till ResourceUnmap är begränsade:

Parameter Beskrivning

hDevice

Även om indatavärdet från Direct3D-körningen inte är begränsat, är det värdet som matchar hDevice-värdet från det ursprungliga ResourceMap-anropet.

hResource

Körtiden ställer in endast en D3D10DDIRESOURCE_BUFFER resurs när ett värde som inte är noll för MapFlags används i skapandeanropet till CreateResource(D3D11).

Underresurs

Körtiden anger endast värdet till 0.