Freigeben über


Neuerungen bei Windows 10 Anzeige- und Grafiktreibern

Auf dieser Seite werden die Neuerungen bei Anzeige- und Grafiktreibern für Windows 10, Version 2004 (WDDM 2.7) beschrieben. Features, die in früheren Versionen von WDDM 2.X hinzugefügt wurden, finden Sie unter Neuerungen für frühere WDDM 2.X-Versionen.

Mesh-Shader

Mesh-Shader sind ein Mittel, um die Flexibilität und Leistung der Direct3D 12-Grafikpipeline bei Verwendung der Rasterung zu erhöhen. Sie fungieren als neuer Ersatz für den Eingabeassesser – insbesondere für Vertex- und Geometrie-Shaderstufen – und ersetzen einige der Verhaltensweisen des Eingabeassessators mit festen Funktionen durch flexibles Funktionsverhalten. Mit Mesh-Shadern können Anwendungen Culling früher und damit effizienter anwenden als der Eingabeassemler. Primitive können gekullt werden, ohne dass ihre Indexdaten von der GPU verarbeitet werden, was sehr vorteilhaft ist, da die primitive Anzahl von 3D-Anwendungen im Laufe der Zeit immer höher wird.

Falls ein Pixel-Shader angefügt ist, werden die primitiven Ausgaben eines Mesh-Shaders direkt in die Pixel-Shader-Phase eingespeist.

Das Mesh-Shaderfeature führt die Mesh-Shaderstufe zusammen mit einer neuen Stufe ein: den Verstärkungsshader. Verstärkungsshader ersetzen die GPU-Tessellationsphase. Anwendungen richten ihren Verstärkungsshader so ein, dass bei Bedarf einige Male ein Mesh-Shader aufgerufen wird. Verstärkungsshader sind ein optionaler Schritt, mit dem eine Anwendung ebenen geometrischer Details dynamisch steuern kann.

Das Mesh-Shaderfeature umfasst neue Schattierungssprachenkonstrukte sowie UMD-Änderungen. Zum Melden der Gerätefunktion von Mesh-Shadern gibt es ein Feld namens MeshShaderTier , das über D3D12DDI_D3D12_OPTIONS_DATA_0073 gemeldet wird. Und da dadurch zwei neue Shaderstufen eingeführt werden, gibt es zwei neue Felder in D3D12DDIARG_CREATE_PIPELINE_STATE_0075, hMeshShader und hAmplificationShader. Um die Dinge zu starten, gibt es die Befehlsliste DDI PFND3D12DDI_DISPATCH_MESH_0074 und auch D3D12DDI_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH für die indirekte Verteilung.

DirectX Raytracing (DXR) 1.1

WDDM 2.7 enthält einige neue Features und Verbesserungen, die auf der ersten Veröffentlichung von DXR in Direct3D 12 aufbauen.

  • Inline-Raytracing ist eine alternative Form des Raytracings, die keine separaten dynamischen Shader oder Shadertabellen verwendet. Es bietet dem Entwickler Flexibilität und etwas Komfort in all den Fällen, in denen Shader, die Raytracing im DXR 1.0-Stil verwenden, sie als "dynamisch-shaderbasiertes" Raytracing bezeichnen, nicht passen. Inline-Raytracing ist in jeder Shaderphase verfügbar, einschließlich Compute-Shadern, Pixel-Shadern usw. Dies wird hier als mit WDDM 2.7 verfügbar erwähnt, obwohl es nicht einer DDI-Änderung entspricht.

  • Anwendungen können DispatchRays über ExecuteIndirect aufrufen, sodass Raytracing-Arbeit auf der GPU konfiguriert werden kann. Dies kann für Anwendungen nützlich sein, die raytracing-Arbeit kullen, sortieren oder anpassen möchten, und verwenden dafür Shader. In diesem Fall gibt es jetzt einen D3D12DDI_INDIRECT_ARGUMENT_TYPE Enumerationswert. Bei Verwendung des indirekten Raytracing-Dispatchs ist jedes Element des execute-indirekten Puffers vom Typ D3D12DDIARG_DISPATCH_RAYS_0054.

  • Der Mehraufwand beim Erstellen des Pipelinezustands, um verschiedene Shaderkombinationen zu berücksichtigen, ist eines dieser schwierigen Probleme bei der 3D-Computergrafik. DXR 1.1 enthält etwas, das helfen kann: add-to-state-object. AddToStateObject(), wie es in der API verfügbar gemacht wird, ermöglicht Anwendungen das Hinzufügen von Shadern zu einem vorhandenen Zustandsobjekt, wobei der CPU-Overhead nur proportional zu dem hinzugefügt wird, was hinzugefügt wird. Dazu gibt es zwei DDI-Funktionen des Geräts: PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 und PFND3D12DDI_CALC_PRIVATE_ADD_TO_STATE_OBJECT_SIZE_0072.

Für die allgemeine Funktionsberichterstellung gibt es einen neuen Enumerationswert , D3D12DDI_RAYTRACING_TIER_1_1 für die Berichterstellungsebene 1.1 verwendet wird.

Sampler Feedback

Samplerfeedback ist ein Direct3D 12-Feature zum Erfassen und Aufzeichnen von Texturstichprobeninformationen und -speicherorten. Ohne Samplerfeedback wären diese Details für den Entwickler undurchsichtig. Dieses Feature gibt Anwendungen die Möglichkeit, nicht nur zu wissen, welche Mip-Stichproben verwendet wurden, sondern auch, um zu wissen, wo diese Mips enthalten sind. Anwendungen könnten an Stichprobeninformationen interessiert sein, z. B.:

  • genau wissen, was als Nächstes in einem Texturstreamingsystem geladen werden soll, oder
  • Wissen Sie genau, was in einem Textur-Raum-Schattierungs-Renderingsystem schattiert werden muss.

Feedback zu Beispielvorgängen wird in eine "Feedbackzuordnung" geschrieben, die als eine Art undurchsichtige Ressource fungiert, die transcodiert werden muss, um anwendungsprüfbare Informationen zu erhalten. Was das Schreiben von Feedback selbst angeht, gibt es hlSL-Konstrukte im Shadermodell 6_5 dafür. Die Semantik ähnelt der Semantik für das Beispiel von Texture2D und seinen Varianten sehr.

Das Samplerfeedback nutzt zwar neue Schattierungssprachenkonstrukte, beinhaltet aber auch UMD-Änderungen. Für die Überprüfung der Gerätefähigkeit gibt es eine Obergrenze namens SamplerFeedbackTier, die über D3D12DDI_D3D12_OPTIONS_DATA_0073 gemeldet wird. Die Ressourcenerstellung wurde überarbeitet, um ein neues Feld zu verwenden, die Samplerfeedback-MIP-Region vom Typ D3D12DDI_MIP_REGION_0075. Dazu gibt es auch eine neue Deskriptorerstellungsmethode, PFND3D12DDI_CREATE_SAMPLER_FEEDBACK_UNORDERED_ACCESS_VIEW_0075.

Content Protection

Optionale Unterstützung geschützter Ressourcen wurde zu Direct3D 12-Videovorgängen in WDDM 2.7 hinzugefügt. Für den Hintergrund waren geschützte Ressourcen vor WDDM 2.7 vorhanden, waren aber nur für apiübergreifende Freigabe und Grafik oder Compute verfügbar, nicht für Video.

Die Unterstützung für geschützte Ressourcen wird vom Treiber nicht als globale Sache gemeldet. Dies erfolgt auf Vorgangsbasis. Wenn ein Treiber die Unterstützung geschützter Ressourcen für einen bestimmten Vorgang meldet, bedeutet dies, dass dieser Vorgang geschützte Ressourcen lesen und schreiben kann und apiübergreifende Freigabe unterstützt, sofern der Ressourcentyp dies zulässt. Eine weitere erwähnenswerte Sache ist, dass ein Treiber, wenn er die Unterstützung geschützter Ressourcen für ein bestimmtes Format beansprucht, dieses Format auch als nicht geschützte Ressource unterstützen muss.

Mit WDDM 2.7 werden Ressourcenerstellungsmethoden so geändert, dass sie eine optionale D3D12DDI_HPROTECTEDRESOURCESESSION instance. Treiber erhalten diesen Parameter zum Zeitpunkt der Objekterstellung, um Setup und Zuordnungen zu informieren. Darüber hinaus werden die Speicherbudgetprüfungen überarbeitet, um anzugeben, ob der Vorgang geschützte Ressourcen verwendet oder nicht. Wenn der parameter protected-resource-session nicht NULL ist, gibt dies an, dass der Vorgang in geschützte Ressourcen schreibt. Um in eine nicht geschützte Ressource zu schreiben, muss das Vorgangsobjekt neu erstellt werden.

Decoder- und Bewegungsschätzungsreferenzen müssen geschützte Ressourcen sein, wenn es sich bei der Ausgabe um eine geschützte Ressource handelt. Die Videoverarbeitung kann beim Schreiben in eine geschützte Ressource aus einer Kombination aus geschützten und nicht geschützten Ressourcen gelesen werden.

Vor dem Aufzeichnen eines oder mehrerer Vorgänge, die in eine geschützte Ressource schreiben, muss PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 mit einer nicht NULL geschützten Ressourcensitzung aufgerufen werden. Das Aufrufen PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 mit NULL ist erforderlich, bevor sie einen oder mehrere Vorgänge aufzeichnen, die in nicht geschützte Ressourcen schreiben.

Weitere Informationen zu DDI-Änderungen für den Inhaltsschutz in WDDM 2.7 finden Sie unter D3D12DDI_VIDEO_DECODE_PROTECTED_RESOURCES_DATA_0072 als Ausgangspunkt.

Verbesserte Verlaufspufferberichterstattung für Tools

WDDM 2.7 führt eine DDI-Änderung ein, die der Verwendung von Verlaufspuffern von GPU-Debuggingtools zugutet. Mit dieser Änderung kann eine einzelne Befehlspufferübermittlung Arbeit enthalten, die mehreren Befehlslisten und nicht nur einzelnen Befehlslisten gleichzeitig entspricht. Durch diese Änderung können GPU-Debuggingtools die Leistungsmerkmale von Anwendungen genauer melden.

Diese Funktion wird über D3D12DDICAPS_TYPE_0073_SUPPORT_BATCHED_MARKERS gemeldet. Es gibt eine neue D3DDDI_MARKERLOGTYPE des Enumerationswerts D3DDDIMLT_BATCHED, der D3DDDI_BATCHEDMARKERDATA entspricht. ETW-Ereignisdatenstrukturen wurden überarbeitet, um eine gewisse Anzahl von D3DDDI_BATCHEDMARKERDATA Elementen zu enthalten, wenn sie vom Typ D3DDDIMLT_BATCHED sind.

DisplayPort (DP) AUX/I2C

Der DP Auxiliary-Kanal (AUX) bietet Zugriff auf DP-Konfigurationsdaten (DPCD), bei der es sich um eine Geräteregisterdatei handelt, die zum Lesen der Funktionen des DP-Geräts, zum Linktraining, zur Topologieermittlung, zum I2C-Buszugriff usw. verwendet wird. Sehen Sie sich DXGK_DP_INTERFACE als Ausgangspunkt an.