Direct3D 11.1-Features
Die folgende Funktionalität wurde in Direct3D 11.1 hinzugefügt, die in Windows 8, Windows RT und Windows Server 2012 enthalten ist. Teilweise Unterstützung für Direct3D 11.1- ist unter Windows 7 und Windows Server 2008 R2 über das Platform Update für Windows 7verfügbar, das über das Platform Update für Windows 7verfügbar ist.
- Shaderablaufverfolgung und Compilerverbesserungen
- Direct3D-Gerätefreigabe-
- Überprüfen der Unterstützung neuer Direct3D 11.1-Features und -Formate
- Verwenden der HLSL-Mindestgenauigkeit
- Festlegen von Benutzerausschnittebenen in HLSL auf Featureebene 9 und höher
- Erstellen größerer Konstantenpuffer als ein Shader auf
- Logische Vorgänge in einem Renderziel- verwenden
- Erzwingen der Beispielanzahl zum Erstellen eines Rasterizerzustands
- Verarbeiten von Videoressourcen mit Shadern
- erweiterte Unterstützung für freigegebene Texture2D-Ressourcen
- Ändern von Unterressourcen mit neuen Kopieroptionen
- Ressourcen- und Ressourcenansichten verwerfen
- Unterstützen einer größeren Anzahl von UAVs
- Binden einer Unterrange eines Konstantenpuffers an einen Shader
- Abrufen der Unterrange eines Konstantenpuffers, der an einen Shader gebunden ist
- Löschen aller oder eines Teils einer Ressourcenansicht
- Zuordnen von SRVs dynamischer Puffer mit NO_OVERWRITE
- Verwenden von UAVs in jeder Pipelinephase
- Erweiterter Support für WARP-Geräte
- Verwenden von Direct3D in Session 0-Prozessen
- Unterstützung für Schattenpuffer auf Featureebene 9
- Verwandte Themen
Shaderablaufverfolgung und Compilerverbesserungen
Mit Direct3D 11.1 können Sie die Shaderablaufverfolgung verwenden, um sicherzustellen, dass Ihr Code wie beabsichtigt ausgeführt wird und wenn es nicht möglich ist, das Problem zu ermitteln und zu beheben. Das Windows Software Development Kit (SDK) für Windows 8 enthält HLSL-Compilerverbesserungen. Shaderablaufverfolgung und der HLSL-Compiler werden in D3dcompiler_nn.dllimplementiert.
Die Shaderablaufverfolgungs-API und die Verbesserungen des HLSL-Compilers bestehen aus den folgenden Methoden und Funktionen.
- ID3D11RefDefaultTrackingOptions::SetTrackingOptions
- ID3D11RefTrackingOptions::SetTrackingOptions
- ID3D11TracingDevice::SetShaderTrackingOptions
- ID3D11TracingDevice::SetShaderTrackingOptionsByType
- ID3D11ShaderTraceFactory::CreateShaderTrace
- ID3D11ShaderTrace::TraceReady
- ID3D11ShaderTrace::ResetTrace
- ID3D11ShaderTrace::GetTraceStats
- ID3D11ShaderTrace::P SSelectStamp-
- ID3D11ShaderTrace::GetInitialRegisterContents
- ID3D11ShaderTrace::GetStep
- ID3D11ShaderTrace::GetWrittenRegister
- ID3D11ShaderTrace::GetReadRegister
- D3DCompile2-
- D3DCompileFromFile-
- D3DDisassemble11Trace
- D3DDisassembleRegion
- D3DGetTraceInstructionOffsets
- D3DReadFileToBlob
- D3DSetBlobPart-
- D3DWriteBlobToFile
Für die D3dcompiler.lib-Bibliothek ist D3dcompiler_nn.dllerforderlich. Diese DLL ist nicht Teil von Windows 8; sie befindet sich in der \bin folder of the Windows SDK for Windows 8 along with the Fxc.exe Befehlszeilenversion des HLSL-Compilers.
Anmerkung
Während Sie diese Bibliotheks- und DLL-Kombination für die Entwicklung verwenden können, können Sie keine Windows Store-Apps bereitstellen, die diese Kombination verwenden. Daher müssen Sie stattdessen HLSL-Shader kompilieren, bevor Sie Ihre Windows Store-App versenden. Sie können HLSL-Kompilierungsbinärdateien auf den Datenträger schreiben, oder der Compiler kann Header mit statischen Bytearrays generieren, die die Shader-BLOB-Daten enthalten. Sie verwenden die ID3DBlob Schnittstelle, um auf die BLOB-Daten zuzugreifen. Um Ihre Windows Store-App zu entwickeln, rufen Sie D3DCompile2- oder D3DCompileFromFile- auf, um die unformatierte HLSL-Quelle zu kompilieren und dann die resultierenden BLOB-Daten an Direct3D zu übermitteln.
Direct3D-Gerätefreigabe
Direct3D 11.1 ermöglicht Direct3D 10-APIs und Direct3D 11-APIs die Verwendung eines zugrunde liegenden Renderinggeräts.
Dieses Direct3D 11.1-Feature besteht aus den folgenden Methoden und Schnittstellen.
- ID3D11Device1::CreateDeviceContextState
- ID3D11DeviceContext1::SwapDeviceContextState
- ID3DDeviceContextState
Überprüfen der Unterstützung neuer Direct3D 11.1-Features und -Formate
Mit Direct3D 11.1 können Sie nach neuen Features suchen, die vom Grafiktreiber unterstützt werden können, und neue Möglichkeiten, wie ein Format auf einem Gerät unterstützt wird. Microsoft DirectX Graphics Infrastructure (DXGI) 1.2 gibt auch neue DXGI_FORMAT Werte an.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
- ID3D11Device::CheckFeatureSupport mit D3D11_FEATURE_DATA_D3D11_OPTIONS, D3D11_FEATURE_DATA_ARCHITECTURE_INFO, D3D11_FEATURE_DATA_D3D9_OPTIONS, D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORTund D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT Strukturen
- ID3D11Device::CheckFormatSupport mit D3D11_FORMAT_SUPPORT_DECODER_OUTPUT, D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT, D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT, D3D11_FORMAT_SUPPORT_VIDEO_ENCODERund D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP
Verwenden der HLSL-Mindestgenauigkeit
Ab Windows 8 können Grafiktreiber minimale Genauigkeit HLSL-Skalardatentypen implementieren, indem sie eine beliebige Genauigkeit verwenden, die größer oder gleich ihrer angegebenen Bitgenauigkeit ist. Wenn Ihr HLSL-Shadercode mit minimaler Genauigkeit auf Hardware verwendet wird, die DIE HLSL-Mindestgenauigkeit implementiert, verwenden Sie weniger Arbeitsspeicherbandbreite und verwenden daher auch weniger Systemleistung.
Sie können die minimale Genauigkeitsunterstützung abfragen, die der Grafiktreiber bereitstellt, indem Sie ID3D11Device::CheckFeatureSupport mit dem D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT Wert aufrufen. Übergeben Sie in diesem ID3D11Device::CheckFeatureSupport Aufruf einen Zeiger an eine D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT Struktur, die ID3D11Device::CheckFeatureSupport mit den minimalen Genauigkeitsebenen ausfüllt, die der Treiber für die Pixelshaderstufe und für andere Shaderphasen unterstützt. Die zurückgegebenen Informationen deuten nur darauf hin, dass die Grafikhardware HLSL-Vorgänge mit einer niedrigeren Genauigkeit als die standardmäßige 32-Bit-Gleitkommagenauigkeit ausführen kann, aber nicht garantiert, dass die Grafikhardware tatsächlich mit einer niedrigeren Genauigkeit ausgeführt wird.
Sie müssen nicht mehrere Shader erstellen, die die Mindestgenauigkeit nicht verwenden. Erstellen Sie stattdessen Shader mit minimaler Genauigkeit, und die minimalen Genauigkeitsvariablen verhalten sich bei voller 32-Bit-Genauigkeit, wenn der Grafiktreiber meldet, dass er keine minimale Genauigkeit unterstützt. Weitere Informationen zur MINDESTgenauigkeit von HLSL finden Sie unter Verwenden der HLSL-Mindestgenauigkeit.
HLSL-Shader mit minimaler Genauigkeit funktionieren nicht auf Früheren Betriebssystemen als Windows 8.
Angeben von Benutzerausschnittebenen in HLSL auf Featureebene 9 und höher
Ab Windows 8 können Sie das clipplanes Funktionsattribute in einer HLSL-Funktionsdeklaration anstelle SV_ClipDistance verwenden, um den Shader auf Featureebene 9_x sowie featureebene 10 und höher zu bearbeiten. Weitere Informationen finden Sie unter Beschneidungsebenen auf Featureebene 9 Hardware-.
Erstellen größerer Konstantenpuffer als ein Shader zugreifen kann
Mit Direct3D 11.1 können Sie Konstantenpuffer erstellen, die größer als die maximale Größe des Konstantenpuffers sind, auf die ein Shader zugreifen kann (4096 32-Bit*4-Komponentenkonstanten – 64 KB). Wenn Sie die Puffer später an die Pipeline binden, z. B. über PSSetConstantBuffers oder PSSetConstantBuffers1, können Sie einen Pufferbereich angeben, auf den der Shader zugreifen kann, der innerhalb des Grenzwerts von 4096 passt.
Direct3D 11.1 aktualisiert die ID3D11Device::CreateBuffer-Methode für dieses Feature.
Verwenden logischer Vorgänge in einem Renderziel
Mit Direct3D 11.1 können Sie logische Vorgänge verwenden, anstatt in einem Renderziel zu mischen. Sie können jedoch keine Logikvorgänge mit einer Mischung über mehrere Renderziele hinweg kombinieren.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Erzwingen der Beispielanzahl zum Erstellen eines Rasterizerzustands
Mit Direct3D 11.1 können Sie beim Erstellen eines Rasterizerzustands eine Erzwingungsbeispielanzahl angeben.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Anmerkung
Wenn Sie mit der Beispielanzahl rendern möchten, die auf 1 oder höher erzwungen wurde, müssen Sie die folgenden Richtlinien befolgen:
- Binden Sie keine Tiefenschablonenansichten.
- Tiefentests deaktivieren.
- Stellen Sie sicher, dass der Shader keine Tiefe ausgibt.
- Wenn Sie über gebundene Renderzielansichten (D3D11_BIND_RENDER_TARGET) verfügen und die Beispielanzahl auf mehr als 1 erzwungen haben, stellen Sie sicher, dass jedes Renderziel nur über ein einzelnes Beispiel verfügt.
- Verwenden Sie den Shader nicht mit der Beispielhäufigkeit. Daher gibt ID3D11ShaderReflection::IsSampleFrequencyShaderFALSEzurück.
Andernfalls ist das Renderingverhalten nicht definiert. Informationen zum Konfigurieren der Tiefenschablone finden Sie unter Configuring Depth-Stencil Functionality.
Verarbeiten von Videoressourcen mit Shadern
Mit Direct3D 11.1 können Sie Ansichten (SRV/RTV/UAV) für Videoressourcen erstellen, damit Direct3D-Shader diese Videoressourcen verarbeiten können. Das Format einer zugrunde liegenden Videoressource beschränkt die Formate, die die Ansicht verwenden kann. Die DXGI_FORMAT-Aufzählung enthält neue Werte im Videoressourcenformat. Diese DXGI_FORMAT Werte geben die gültigen Ansichtsformate an, die Sie erstellen und wie die Direct3D 11.1-Laufzeit die Ansicht ordnet. Sie können mehrere Ansichten verschiedener Teile derselben Oberfläche erstellen, und je nach Format können sich die Größen der Ansichten voneinander unterscheiden.
Direct3D 11.1 aktualisiert die folgenden Methoden für dieses Feature.
- ID3D11Device::CreateShaderResourceView-
- ID3D11Device::CreateRenderTargetView
- ID3D11Device::CreateUnorderedAccessView-
Erweiterte Unterstützung für freigegebene Texture2D-Ressourcen
Direct3D 11.1 garantiert, dass Sie Texture2D-Ressourcen freigeben können, die Sie mit bestimmten Ressourcentypen und -formaten erstellt haben. Verwenden Sie zum Freigeben von Texture2D-Ressourcen die Flags D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEXoder eine Kombination aus den Flags D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX und D3D11_RESOURCE_MISC_SHARED_NTHANDLE (neu für Windows 8), wenn Sie diese Ressourcen erstellen.
Direct3D 11.1 garantiert, dass Sie Texture2D-Ressourcen freigeben können, die Sie mit diesen DXGI_FORMAT Werten erstellt haben:
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8X8_UNORM
- DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R16G16B16A16_FLOAT
Darüber hinaus garantiert Direct3D 11.1, dass Sie Texture2D-Ressourcen freigeben können, die Sie mit einer Mipmap-Ebene von 1, Arraygröße 1 erstellt haben, Binden von Flags von D3D11_BIND_SHADER_RESOURCE und D3D11_BIND_RENDER_TARGET kombiniert, Verwendungsstandard (D3D11_USAGE_DEFAULT) und nur diese D3D11_RESOURCE_MISC_FLAG Werte:
- D3D11_RESOURCE_MISC_SHARED
- D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX
- D3D11_RESOURCE_MISC_SHARED_NTHANDLE
- D3D11_RESOURCE_MISC_GDI_COMPATIBLE
Mit Direct3D 11.1 können Sie eine größere Vielfalt von Texture2D-Ressourcentypen und -formaten teilen. Sie können abfragen, ob der Grafiktreiber und die Hardware die erweiterte Texture2D-Ressourcenfreigabe unterstützen, indem Sie ID3D11Device::CheckFeatureSupport mit dem wert D3D11_FEATURE_D3D11_OPTIONS aufrufen. Übergeben Sie in diesem ID3D11Device::CheckFeatureSupport Aufruf einen Zeiger an eine D3D11_FEATURE_DATA_D3D11_OPTIONS Struktur. ID3D11Device::CheckFeatureSupport legt den ExtendedResourceSharing Member von D3D11_FEATURE_DATA_D3D11_OPTIONS auf TRUE- fest, wenn die Hardware und der Treiber die erweiterte Texture2D-Ressourcenfreigabe unterstützen.
Wenn ID3D11Device::CheckFeatureSupportTRUE- in ExtendedResourceSharing-zurückgibt, können Sie Ressourcen freigeben, die Sie mit diesen DXGI_FORMAT Werten erstellt haben:
- DXGI_FORMAT_R32G32B32A32_TYPELESS
- DXGI_FORMAT_R32G32B32A32_FLOAT
- DXGI_FORMAT_R32G32B32A32_UINT
- DXGI_FORMAT_R32G32B32A32_SINT
- DXGI_FORMAT_R16G16B16A16_TYPELESS
- DXGI_FORMAT_R16G16B16A16_FLOAT
- DXGI_FORMAT_R16G16B16A16_UNORM
- DXGI_FORMAT_R16G16B16A16_UINT
- DXGI_FORMAT_R16G16B16A16_SNORM
- DXGI_FORMAT_R16G16B16A16_SINT
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R10G10B10A2_UINT
- DXGI_FORMAT_R8G8B8A8_TYPELESS
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_R8G8B8A8_UINT
- DXGI_FORMAT_R8G8B8A8_SNORM
- DXGI_FORMAT_R8G8B8A8_SINT
- DXGI_FORMAT_B8G8R8A8_TYPELESS
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_B8G8R8X8_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8X8_TYPELESS
- DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
- DXGI_FORMAT_R32_TYPELESS
- DXGI_FORMAT_R32_FLOAT
- DXGI_FORMAT_R32_UINT
- DXGI_FORMAT_R32_SINT
- DXGI_FORMAT_R16_TYPELESS
- DXGI_FORMAT_R16_FLOAT
- DXGI_FORMAT_R16_UNORM
- DXGI_FORMAT_R16_UINT
- DXGI_FORMAT_R16_SNORM
- DXGI_FORMAT_R16_SINT
- DXGI_FORMAT_R8_TYPELESS
- DXGI_FORMAT_R8_UNORM
- DXGI_FORMAT_R8_UINT
- DXGI_FORMAT_R8_SNORM
- DXGI_FORMAT_R8_SINT
- DXGI_FORMAT_A8_UNORM
- DXGI_FORMAT_AYUV
- DXGI_FORMAT_YUY2
- DXGI_FORMAT_NV12
- DXGI_FORMAT_NV11
- DXGI_FORMAT_P016
- DXGI_FORMAT_P010
- DXGI_FORMAT_Y216
- DXGI_FORMAT_Y210
- DXGI_FORMAT_Y416
- DXGI_FORMAT_Y410
Wenn ID3D11Device::CheckFeatureSupportTRUE- in ExtendedResourceSharing-zurückgibt, können Sie Ressourcen freigeben, die Sie mit diesen Features und Flags erstellt haben:
- D3D11_USAGE_DEFAULT
- D3D11_BIND_SHADER_RESOURCE
- D3D11_BIND_RENDER_TARGET
- D3D11_RESOURCE_MISC_GENERATE_MIPS
- D3D11_BIND_UNORDERED_ACCESS
- Mipmap-Ebenen (eine oder mehrere Ebenen) in den 2D-Texturressourcen (angegeben im MipLevels Member von D3D11_TEXTURE2D_DESC)
- Arrays von 2D-Texturressourcen (eine oder mehrere Texturen) (angegeben im ArraySize Member von D3D11_TEXTURE2D_DESC)
- D3D11_BIND_DECODER
- D3D11_RESOURCE_MISC_RESTRICTED_CONTENT
- D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE
- D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER
Anmerkung
Wenn ExtendedResourceSharing-TRUEist, haben Sie mehr Flexibilität, wenn Sie Bindungskennzeichnungen für die Freigabe von Texture2D-Ressourcen angeben. Nicht nur der Grafiktreiber und die Hardware unterstützen mehr Bindungskennzeichnungen, sondern auch mögliche Kombinationen von Bindungskennzeichnungen. Sie können z. B. nur D3D11_BIND_RENDER_TARGET oder keine Bindungskennzeichnungen usw. angeben.
Selbst wenn ID3D11Device::CheckFeatureSupportTRUE- in ExtendedResourceSharing-zurückgibt, können Sie weiterhin keine Ressourcen freigeben, die Sie mit diesen Features und Flags erstellt haben:
- D3D11_BIND_DEPTH_STENCIL
- 2D-Texturressourcen im MsAA-Modus (multisample antialiasing) (mit DXGI_SAMPLE_DESCangegeben)
- D3D11_RESOURCE_MISC_RESOURCE_CLAMP
- D3D11_USAGE_IMMUTABLE, D3D11_USAGE_DYNAMICoder D3D11_USAGE_STAGING (d. a. zugeordnet)
- D3D11_RESOURCE_MISC_TEXTURECUBE
Ändern von Unterressourcen mit neuen Kopieroptionen
Mit Direct3D 11.1 können Sie neue Kopierkennzeichnungen verwenden, um Unterressourcen zu kopieren und zu aktualisieren. Wenn Sie eine Unterressource kopieren, können die Quell- und Zielressourcen identisch sein, und die Quell- und Zielbereiche können sich überlappen.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Ressourcen- und Ressourcenansichten verwerfen
Mit Direct3D 11.1 können Sie Ressourcen und Ansichten von Ressourcen aus dem Gerätekontext verwerfen. Diese neue Funktion informiert die GPU darüber, dass vorhandene Inhalte in Ressourcen- oder Ressourcenansichten nicht mehr benötigt werden.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
- ID3D11DeviceContext1::D iscardResource-
- ID3D11DeviceContext1::D iscardView-
- ID3D11DeviceContext1::D iscardView1
Unterstützung einer größeren Anzahl von UAVs
Mit Direct3D 11.1 können Sie eine größere Anzahl von UAVs verwenden, wenn Sie Ressourcen an die Ausgabezusammenführungsstufe binden und ein Array von Ansichten für eine ungeordnete Ressource festlegen.
Direct3D 11.1 aktualisiert die folgenden Methoden für dieses Feature.
- ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews
- ID3D11DeviceContext::CSSetUnorderedAccessViews
Binden einer Unterrange eines Konstantenpuffers an einen Shader
Mit Direct3D 11.1 können Sie einen Unterbereich eines Konstantenpuffers binden, auf den ein Shader zugreifen kann. Sie können einen größeren Konstantenpuffer angeben und die Unterrange angeben, die der Shader verwenden kann.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
- ID3D11DeviceContext1::CSSetConstantBuffers1
- ID3D11DeviceContext1::D SSetConstantBuffers1
- ID3D11DeviceContext1::GSSetConstantBuffers1
- ID3D11DeviceContext1::HSSetConstantBuffers1
- ID3D11DeviceContext1::P SSetConstantBuffers1
- ID3D11DeviceContext1::VSSetConstantBuffers1
Abrufen der Unterrange eines Konstantenpuffers, der an einen Shader gebunden ist
Mit Direct3D 11.1 können Sie den Unterbereich eines Konstantenpuffers abrufen, der an einen Shader gebunden ist.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
- ID3D11DeviceContext1::CSGetConstantBuffers1
- ID3D11DeviceContext1::D SGetConstantBuffers1
- ID3D11DeviceContext1::GSGetConstantBuffers1
- ID3D11DeviceContext1::HSGetConstantBuffers1
- ID3D11DeviceContext1::P SGetConstantBuffers1
- ID3D11DeviceContext1::VSGetConstantBuffers1
Löschen aller oder eines Teils einer Ressourcenansicht
Mit Direct3D 11.1 können Sie eine Ressourcenansicht (RTV, UAV oder eine beliebige Videoansicht einer Texture2D-Oberfläche) löschen. Sie wenden denselben Farbwert auf alle Teile der Ansicht an.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Zuordnen von SRVs von dynamischen Puffern mit NO_OVERWRITE
Mit Direct3D 11.1 können Sie Shaderressourcenansichten (SRV) dynamischer Puffer mit D3D11_MAP_WRITE_NO_OVERWRITE zuordnen. Die Direct3D 11- und früheren Laufzeiten beschränkten die Zuordnung zu Vertex- oder Indexpuffern.
Direct3D 11.1 aktualisiert die ID3D11DeviceContext::Map-Methode für dieses Feature.
Verwenden von UAVs in jeder Pipelinephase
Mit Direct3D 11.1 können Sie die folgenden Shadermodell 5.0-Anweisungen in allen Shaderphasen verwenden, die zuvor nur in Pixelshadern und Compute-Shadern verwendet wurden.
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- Alle Atome und unmittelbaren Atome (z. B. atomic_and und imm_atomic_and)
Direct3D 11.1 aktualisiert die folgenden Methoden für dieses Feature.
- ID3D11DeviceContext::CreateDomainShader
- ID3D11DeviceContext::CreateGeometryShader
- ID3D11DeviceContext::CreateGeometryShaderWithStreamOutput
- ID3D11DeviceContext::CreateHullShader
- ID3D11DeviceContext::CreateVertexShader
Diese Anweisungen sind in Direct3D 11.0 in ps_5_0 und cs_5_0 vorhanden. Da Direct3D 11.1 UAVs in allen Shaderphasen verfügbar macht, stehen diese Anweisungen auf allen Shaderstufen zur Verfügung.
Wenn Sie kompilierte Shader (VS/HS/HS/HS) übergeben, die eine dieser Anweisungen an eine Create-Shader-Funktion wie CreateVertexShaderverwenden, auf Geräten, die UAVs nicht in jeder Phase unterstützen (einschließlich vorhandener Treiber, die mit diesem Feature nicht implementiert sind), schlägt die Create-Shader-Funktion fehl. Die Create-Shader-Funktion schlägt auch fehl, wenn der Shader versucht, einen UAV-Steckplatz außerhalb der Von der Hardware unterstützten UAV-Steckplätze zu verwenden.
Die UAVs, auf die von diesen Anweisungen verwiesen wird, werden für alle Pipelinephasen freigegeben. Beispielsweise ist ein UAV, das an Steckplatz 0 an der Ausgabezusammenführungsphase gebunden ist, an Steckplatz 0 bis VS/HS/DS/GS/PS verfügbar ist.
UAV greift auf das Problem innerhalb oder über Shaderphasen zu, die innerhalb eines bestimmten Draw*() ausgeführt werden oder dass Sie aus dem Compute-Shader innerhalb einer Dispatch*() ausgeben, werden nicht garantiert in der Reihenfolge, in der Sie sie ausgestellt haben, abgeschlossen. Aber alle UAV-Zugriffe enden am Ende der Draw*() oder Dispatch*().
Erweiterte Unterstützung für WARP-Geräte
Direct3D 11.1 erweitert die Unterstützung für WARP--Geräte, die Sie erstellen, indem Sie D3D_DRIVER_TYPE_WARP im parameter DriverType von D3D11CreateDeviceübergeben.
Ab Direct3D 11.1 unterstützen WARP-Geräte:
- Alle Direct3D-Featureebenen von 9,1 bis 11.1
- Computeshader und Tessellation
- Gemeinsam genutzte Oberflächen. Das heißt, Sie können Oberflächen zwischen WARP-Geräten sowie zwischen WARP-Geräten in verschiedenen Prozessen vollständig freigeben.
WARP-Geräte unterstützen diese optionalen Features nicht:
Wenn Sie einen virtuellen Computer (VM), Hyper-V, mit deaktivierter GPU (Graphics Processing Unit) oder ohne Anzeigetreiber ausführen, erhalten Sie ein WARP-Gerät, dessen Anzeigename "Microsoft Basic Display Adapter" lautet. Dieses WARP-Gerät kann die vollständige Windows-Oberfläche ausführen, die DWM-, Internet Explorer- und Windows Store-Apps umfasst. Dieses WARP-Gerät unterstützt auch das Ausführen von Legacy-Apps, die DirectDraw verwenden oder Apps ausführen, die Direct3D 3 bis Direct3D 11.1 verwenden.
Verwenden von Direct3D in Sitzungs-0-Prozessen
Ab Windows 8 und Windows Server 2012 können Sie die meisten Direct3D-APIs in Sitzungs-0-Prozessen verwenden.
Anmerkung
Diese Ausgabe-, Fenster-, Swapchain- und präsentationsbezogenen APIs sind in Sitzung 0-Prozessen nicht verfügbar, da sie nicht für die Sitzung 0-Umgebung gelten:
- IDXGIFactory::CreateSwapChain
- IDXGIFactory::GetWindowAssociation
- IDXGIFactory::MakeWindowAssociation
- IDXGIAdapter::EnumOutputs
- ID3D11Debug::SetFeatureMask
- ID3D11Debug::SetPresentPerRenderOpDelay
- ID3D11Debug::SetSwapChain
- ID3D10Debug::SetFeatureMask
- ID3D10Debug::SetPresentPerRenderOpDelay
- ID3D10Debug::SetSwapChain-
- D3D10CreateDeviceAndSwapChain
- D3D10CreateDeviceAndSwapChain1
- D3D11CreateDeviceAndSwapChain
Wenn Sie eine der vorherigen APIs in einem Sitzungs 0-Prozess aufrufen, wird DXGI_ERROR_NOT_CURRENTLY_AVAILABLEzurückgegeben.
Unterstützung für Schattenpuffer auf Featureebene 9
Verwenden Sie eine Teilmenge von Direct3D 10_0+-Schattenpufferfeatures, um Schatteneffekte auf Featureebene 9_x zu implementieren. Informationen dazu, was Sie tun müssen, um Schatteneffekte auf Featureebene 9_x zu implementieren, finden Sie unter Implementieren von Schattenpuffern für Direct3D-Featureebene 9.
Verwandte Themen