Verbesserungen der Direct3D-Renderingleistung

Windows Display Driver Model (WDDM) 1.3 und höher können Microsoft Direct3D-Rendering-Leistungsverbesserungen unterstützen, die es Direct3D 9-Hardware ermöglichen, Hardwarebefehlspuffer und Leistungsindikatoren besser zu nutzen und effiziente Kopien des Systemspeichers in Unterressourcen zu erstellen. Diese Funktionen, die einige der für Direct3D Version 10 verfügbaren Funktionen Spiegel, sind ab Windows 8.1 neu.

Neue Direct3D 11.1-Ressourcenkürzungen und Verbesserungen der Kartenstandardleistung sind ebenfalls verfügbar. Das Kartenstandardszenario wird im Abschnitt Verhaltensänderungen unten beschrieben.

Referenz zur Renderingleistung

In diesem Referenzabschnitt werden die Benutzermodus-Gerätetreiberschnittstellen (DDIs) beschrieben.

Vom Benutzermodustreiber implementierte Direct3D-Renderingleistungsfunktionen

Dieser Abschnitt enthält Funktionen, die ein Windows Display Driver Model (WDDM) 1.3 und höher für den Benutzermodusanzeigetreiber implementiert, um Verbesserungen der Microsoft Direct3D-Renderingleistung zu unterstützen.

PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP

Direct3D-Renderingleistungsstrukturen und -enumerationen

Diese Benutzermodusstrukturen und Enumerationen unterstützen Renderingleistungsverbesserungen und sind für Windows 8.1 neu oder aktualisiert. Alle gelten für Direct3D Level 9-Treiber mit Ausnahme von D3D11_1_DDI_FLUSH_FLAGS.

DDI-Implementierungsanforderungen ab WDDM 1.3

Ab WDDM 1.3 sind die folgenden Funktionen für die Implementierung von Benutzermodustreibern erforderlich oder optional.

Funktionsgruppe BESCHREIBUNG

Direct3D 9-Funktionen, die vor WDDM 1.3 optional sind. Jetzt erforderlich:

Direct3D 9-Funktionen, die ab WDDM 1.3 verfügbar sind. Ein Treiber muss entweder alle oder keine dieser Funktionen implementieren:

Wenn die optionalen Funktionen wddm 1.3 und höher unmittelbar oben implementiert sind, weisen diese Funktionen verhaltensänderungen auf:

Diese Szenarien gelten, wenn GetCaps aufgerufen wird:

  • Wenn D3DDDICAPS_GETD3DQUERYDATA festgelegt ist, kann der Treiber optional die Unterstützung für Zeitstempel melden, was bedeutet, dass die Direct3D-Runtime keine Maskierungsunterstützung bietet.
  • Wenn D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT festgelegt ist, kann der Treiber optionale Hardwareunterstützung für die Instancing melden.

Diese Direct3D 11-Funktionen weisen Verhaltensänderungen auf:

  • CreateResource(D3D11) – Pufferzuordnungsstandard (siehe Abschnitt Verhaltensänderungen unten)
  • pfnFlush1 – Ressourcenkürzung
  • ResourceMap – Pufferzuordnungsstandard (siehe Abschnitt Verhaltensänderungen unten)
  • ResourceUnmap – Pufferzuordnungsstandard (siehe Abschnitt Verhaltensänderungen unten)

Verhaltensänderungen für Aufrufe von Funktionen zum Erstellen, Zuordnen und Aufheben der Zuordnung von Ressourcen

Für diese Funktionen, die von WDDM 1.3- und höher-Treibern implementiert werden, stellt die Direct3D-Runtime einen eingeschränkten Satz von Eingabewerten für das Kartenstandardszenario bereit. Diese eingeschränkten Werte gelten nur für Treiber, die die Featureebene 11.1 und höher unterstützen.

CreateResource(D3D11)-Funktion

Diese Eingabe-D3D11DDIARG_CREATERESOURCE Strukturmember sind eingeschränkt:

Member BESCHREIBUNG

ResourceDimension und Usage

Diese Verhaltensänderungen gelten nur, wenn die Direct3D-Runtime den Typ D3D10DDIRESOURCE_BUFFER für ResourceDimension und den Typ D3D10_DDI_USAGE_DEFAULT für Usage bereitstellt.

BindFlags

Die Direct3D-Runtime legt nur die werte für die D3D10_DDI_BIND_SHADER_RESOURCE und D3D11_DDI_BIND_UNORDERED_ACCESS fest.

MapFlags

Wenn alle anderen hier aufgeführten Memberanforderungen erfüllt sind, kann die Runtime D3D10_DDI_MAP_READ-, D3D10_DDI_MAP_WRITE- und D3D10_DDI_MAP_READWRITE-Werte festlegen. Der Treiber muss diese Werte unterstützen. Die Werte von D3D10_DDI_MAP_WRITE_DISCARD und D3D10_DDI_MAP_WRITE_NOOVERWRITE sind ungültig.

MiscFlags

Die Laufzeit legt nur die D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS - und D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED-Werte fest.

Format

Die Runtime legt nur den wert DXGI_FORMAT_UNKNOWN fest.

SampleDesc

Die Runtime legt die DXGI_SAMPLE_DESC fest. Zählen Sie Member auf 1, und das Quality-Element auf 0.

MipLevels

Die Laufzeit legt den Wert auf 1 fest.

ArraySize

Die Laufzeit legt den Wert auf 1 fest.

pPrimaryDesc

Die Laufzeit legt den Wert auf NULL fest.

ResourceMap-Funktion

Diese Eingabeparameter für ResourceMap sind eingeschränkt:

Parameter BESCHREIBUNG

hResource

Die Direct3D-Runtime legt nur eine D3D10DDIRESOURCE_BUFFER-Ressource fest, wenn ein Wert ungleich 0 für MapFlags im Erstellungsaufruf auf CreateResource(D3D11) festgelegt wird.

Die Runtime legt nur den wert DXGI_FORMAT_UNKNOWN fest.

Subresource

Die Runtime legt den Wert nur auf 0 fest.

DDIMap

Wenn alle anderen hier aufgeführten Memberanforderungen erfüllt sind, kann die Runtime D3D10_DDI_MAP_READ-, D3D10_DDI_MAP_WRITE- oder D3D10_DDI_MAP_READWRITE-Werte festlegen, die dem MapFlags-Wert entsprechen, der im Erstellungsaufruf von CreateResource(D3D11) festgelegt wurde.

Flaggen

Obwohl der Eingabewert aus der Runtime nicht eingeschränkt ist, muss der Treiber in der Lage sein, den D3D10_DDI_MAP_FLAG_DONOTWAIT-Wert zu unterstützen.

pMappedSubResource

Obwohl der Eingabewert der Runtime nicht eingeschränkt ist, muss der Treiber dem D3D10DDI_MAPPED_SUBRESOURCE einen gültigen CPU-zwischenspeicherbaren Zeiger zuweisen. pData-Member und müssen rowPitch und DepthPitch so festlegen, dass sie der Größe des Puffers und den in pData bereitgestellten Daten entsprechen.

ResourceUnmap-Funktion

Diese Eingabeparameter für ResourceUnmap sind eingeschränkt:

Parameter BESCHREIBUNG

hGeräte

Obwohl der Eingabewert aus der Direct3D-Runtime nicht eingeschränkt ist, ist der Wert, der mit dem hDevice-Wert aus dem ursprünglichen ResourceMap-Aufruf übereinstimmt.

hResource

Die Runtime legt nur eine D3D10DDIRESOURCE_BUFFER Ressource fest, wenn im Erstellungsaufruf von CreateResource(D3D11) ein Wert ungleich 0 für MapFlags festgelegt wird.

Subresource

Die Runtime legt den Wert nur auf 0 fest.