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 Plattformupdate für Windows 7 verfügbar, das über das Plattformupdate für Windows 7 verfügbar ist.
- Shaderablaufverfolgung und Compilererweiterungen
- Direct3D-Gerätefreigabe
- Überprüfen der Unterstützung neuer Direct3D 11.1-Features und -Formate
- Verwenden der minimalen HLSL-Genauigkeit
- Angeben von Benutzerclipebenen in HLSL auf Featureebene 9 und höher
- Erstellen größerer Konstantpuffer, auf die ein Shader zugreifen kann
- Verwenden logischer Vorgänge in einem Renderziel
- Erzwingen der Beispielanzahl zum Erstellen eines Rasterisierungszustands
- Verarbeiten von Videoressourcen mit Shadern
- Erweiterte Unterstützung für freigegebene Texture2D-Ressourcen
- Ändern von Unterressourcen mit neuen Kopieroptionen
- Verwerfen von Ressourcen und Ressourcensichten
- Unterstützung einer größeren Anzahl von UAVs
- Binden eines Unterbereichs eines Konstantenpuffers an einen Shader
- Abrufen des Unterbereichs eines Konstantenpuffers, der an einen Shader gebunden ist
- Löschen sie eine Ressourcenansicht ganz oder teilweise.
- Zuordnen von SRVs dynamischer Puffer mit NO_OVERWRITE
- Verwenden von UAVs in jeder Pipelinephase
- Erweiterte Unterstützung für WARP-Geräte
- Verwenden von Direct3D in Sitzung 0-Prozessen
- Unterstützung für Schattenpuffer auf Featureebene 9
- Zugehörige Themen
Shaderablaufverfolgung und Compilererweiterungen
Mit Direct3D 11.1 können Sie die Shaderablaufverfolgung verwenden, um sicherzustellen, dass Ihr Code wie vorgesehen funktioniert. Wenn dies nicht der Fall ist, können Sie das Problem ermitteln und beheben. Das Windows Software Development Kit (SDK) für Windows 8 enthält HLSL-Compilererweiterungen. Die Shaderablaufverfolgung und der HLSL-Compiler werden in D3dcompiler_nn.dll implementiert.
Die Shaderablaufverfolgungs-API und die Verbesserungen am HLSL-Compiler 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
Die D3dcompiler.lib-Bibliothek erfordert D3dcompiler_nn.dll. Diese DLL ist nicht Teil von Windows 8. Sie befindet sich im Ordner \bin des Windows SDK für Windows 8 zusammen mit der Fxc.exe Befehlszeilenversion des HLSL-Compilers.
Hinweis
Sie können diese Bibliotheks- und DLL-Kombination zwar für die Entwicklung verwenden, sie können jedoch 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 Shaderblobdaten enthalten. Sie verwenden die ID3DBlob-Schnittstelle , um auf die Blobdaten zuzugreifen. Um Ihre Windows Store-App zu entwickeln, rufen Sie D3DCompile2 oder D3DCompileFromFile auf, um die unformatierte HLSL-Quelle zu kompilieren, und geben Sie dann die resultierenden Blobdaten an Direct3D.
Direct3D-Gerätefreigabe
Mit Direct3D 11.1 können Direct3D 10-APIs und Direct3D 11-APIs ein zugrunde liegendes Renderinggerät verwenden.
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 der Grafiktreiber möglicherweise unterstützt, und nach neuen 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 with D3D11_FEATURE_DATA_D3D11_OPTIONS, D3D11_FEATURE_DATA_ARCHITECTURE_INFO, D3D11_FEATURE_DATA_D3D9_OPTIONS, D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT and D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT Structures
- ID3D11Device::CheckFormatSupport with D3D11_FORMAT_SUPPORT_DECODER_OUTPUT, D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT, D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT, D3D11_FORMAT_SUPPORT_VIDEO_ENCODER and D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP
Verwenden der minimalen HLSL-Genauigkeit
Ab Windows 8 können Grafiktreiber skalare HLSL-Datentypen mit minimaler Genauigkeit implementieren, indem sie eine Genauigkeit verwenden, die größer als oder gleich der angegebenen Bitgenauigkeit ist. Wenn Ihr HLSL-Shadercode mit minimaler Genauigkeit auf Hardware verwendet wird, die eine minimale HLSL-Genauigkeit implementiert, verwenden Sie weniger Speicherbandbreite, sodass Sie auch weniger Systemleistung verbrauchen.
Sie können die minimale Genauigkeitsunterstützung abfragen, die der Grafiktreiber bietet, indem Sie ID3D11Device::CheckFeatureSupport mit dem D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT-Wert aufrufen. Übergeben Sie in diesem ID3D11Device::CheckFeatureSupport-Aufruf einen Zeiger auf eine D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT Struktur, die ID3D11Device::CheckFeatureSupport mit den mindestgenauen Genauigkeitsstufen ausfüllt, die der Treiber für die Pixel-Shaderphase und andere Shaderstufen unterstützt. Die zurückgegebenen Informationen zeigen nur an, dass die Grafikhardware HLSL-Vorgänge mit einer niedrigeren Genauigkeit als die standardmäßige 32-Bit-Floatgenauigkeit 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 minimale Genauigkeit verwenden. Erstellen Sie stattdessen Shader mit minimaler Genauigkeit, und die Minimalgenauigkeitsvariablen verhalten sich bei voller 32-Bit-Genauigkeit, wenn der Grafiktreiber meldet, dass er keine minimale Genauigkeit unterstützt. Weitere Informationen zur minimalen HLSL-Genauigkeit finden Sie unter Verwenden von HLSL-Mindestgenauigkeit.
HLSL-Shader mit minimaler Genauigkeit funktionieren nicht auf Betriebssystemen vor Windows 8.
Angeben von Benutzerclipebenen in HLSL auf Featureebene 9 und höher
Ab Windows 8 können Sie das Funktionsattribut clipplanes in einer HLSL-Funktionsdeklaration anstelle von SV_ClipDistance verwenden, damit Ihr Shader auf Featureebene 9_x sowie auf Featureebene 10 und höher funktioniert. Weitere Informationen finden Sie unter Benutzerclipebenen auf Hardware der Featureebene 9.
Erstellen größerer Konstantpuffer, auf die ein Shader zugreifen kann
Mit Direct3D 11.1 können Sie Konstantenpuffer erstellen, die größer als die maximale konstante Puffergröße sind, auf die ein Shader zugreifen kann (4096 Konstanten mit 32 Bit*4 Komponenten – 64 KB). Wenn Sie später die Puffer 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 ein Renderziel zu überblenden. Sie können jedoch keine Logikvorgänge mit dem Mischen mehrerer Renderziele kombinieren.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Erzwingen der Beispielanzahl zum Erstellen eines Rasterisierungszustands
Mit Direct3D 11.1 können Sie eine Stichprobenanzahl erzwingen, wenn Sie einen Rasterizerstatus erstellen.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Hinweis
Wenn Sie mit der Anzahl der Stichproben rendern möchten, die auf 1 oder höher erzwungen wird, müssen Sie die folgenden Richtlinien befolgen:
- Binden Sie keine Tiefenschablonenansichten.
- Deaktivieren Sie tiefentests.
- Stellen Sie sicher, dass der Shader keine Tiefe ausgibt.
- Wenn Sie Renderzielsichten (D3D11_BIND_RENDER_TARGET) gebunden haben und die Stichprobenanzahl auf größer als 1 erzwungen wurde, stellen Sie sicher, dass jedes Renderziel nur über ein einziges Beispiel verfügt.
- Verwenden Sie den Shader nicht bei der Stichprobenhäufigkeit. Id3D11ShaderReflection::IsSampleFrequencyShader gibt daher FALSE zurück.
Andernfalls ist das Renderingverhalten nicht definiert. Informationen zum Konfigurieren der Tiefenschablone finden Sie unter Konfigurieren Depth-Stencil Funktionalität.
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 schränkt die Formate ein, die die Ansicht verwenden kann. Die DXGI_FORMAT-Enumeration enthält neue Videoressourcenformatwerte. Diese DXGI_FORMAT Werte geben die gültigen Ansichtsformate an, die Sie erstellen können, und wie die Direct3D 11.1-Runtime die Ansicht zuordnet. 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, die Sie erstellt haben, mit bestimmten Ressourcentypen und -formaten freigeben können. Verwenden Sie zum Freigeben von Texture2D-Ressourcen die D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX oder 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, die Sie erstellt haben, mit den folgenden DXGI_FORMAT Werten freigeben können:
- 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, einer Arraygröße von 1, Bindungsflags von D3D11_BIND_SHADER_RESOURCE und D3D11_BIND_RENDER_TARGET kombiniert, Verwendungsstandard (D3D11_USAGE_DEFAULT) und nur diesen D3D11_RESOURCE_MISC_FLAG Werten:
- 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 gemeinsam nutzen. 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 auf eine D3D11_FEATURE_DATA_D3D11_OPTIONS-Struktur . ID3D11Device::CheckFeatureSupport legt das ExtendedResourceSharing-Element von D3D11_FEATURE_DATA_D3D11_OPTIONS auf TRUE fest, wenn die Hardware und der Treiber die erweiterte Textur2D-Ressourcenfreigabe unterstützen.
Wenn ID3D11Device::CheckFeatureSupport in ExtendedResourceSharingTRUE zurückgibt, können Sie von Ihnen erstellte Ressourcen mit den folgenden DXGI_FORMAT Werten freigeben:
- 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::CheckFeatureSupport in ExtendedResourceSharingTRUE zurückgibt, können Sie die von Ihnen erstellten Ressourcen mit den folgenden Features und Flags freigeben:
- D3D11_USAGE_DEFAULT
- D3D11_BIND_SHADER_RESOURCE
- D3D11_BIND_RENDER_TARGET
- D3D11_RESOURCE_MISC_GENERATE_MIPS
- D3D11_BIND_UNORDERED_ACCESS
- Mipmap-Ebenen (mindestens eine Ebene) in den 2D-Texturressourcen (angegeben im MipLevels-Element von D3D11_TEXTURE2D_DESC)
- Arrays von 2D-Texturressourcen (mindestens eine Textur) (angegeben im ArraySize-Element 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
Hinweis
Wenn ExtendedResourceSharingTRUE ist, haben Sie mehr Flexibilität, wenn Sie Bindungsflags für die Freigabe von Texture2D-Ressourcen angeben. Der Grafiktreiber und die Hardware unterstützen nicht nur mehr Bindungsflags, sondern auch mehr mögliche Kombinationen von Bindungsflags. Sie können beispielsweise nur D3D11_BIND_RENDER_TARGET oder keine Bindungsflags usw. angeben.
Auch wenn ID3D11Device::CheckFeatureSupport in ExtendedResourceSharingTRUE zurückgibt, können Sie die von Ihnen erstellten Ressourcen immer noch nicht mit den folgenden Features und Flags freigeben:
- D3D11_BIND_DEPTH_STENCIL
- 2D-Texturressourcen im MSAA-Modus (Multisample Antialiasing) (angegeben mit DXGI_SAMPLE_DESC)
- D3D11_RESOURCE_MISC_RESOURCE_CLAMP
- D3D11_USAGE_IMMUTABLE, D3D11_USAGE_DYNAMIC oder D3D11_USAGE_STAGING (d. a. zuordnungsfähig)
- D3D11_RESOURCE_MISC_TEXTURECUBE
Ändern von Unterressourcen mit neuen Kopieroptionen
Mit Direct3D 11.1 können Sie neue Kopierflags zum Kopieren und Aktualisieren von Unterressourcen verwenden. Wenn Sie eine Unterressource kopieren, können die Quell- und Zielressourcen identisch sein, und die Quell- und Zielregionen können sich überlappen.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Verwerfen von Ressourcen und Ressourcensichten
Mit Direct3D 11.1 können Sie Ressourcen und Ansichten von Ressourcen aus dem Gerätekontext verwerfen. Diese neue Funktionalität 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 Ausgabefusionsphase binden und ein Array von Ansichten für eine nicht sortierte Ressource festlegen.
Direct3D 11.1 aktualisiert die folgenden Methoden für dieses Feature.
- ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews
- ID3D11DeviceContext::CSSetUnorderedAccessViews
Binden eines Unterbereichs 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 bereitstellen und den Unterbereich angeben, den 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 des Unterbereichs 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 sie eine Ressourcenansicht ganz oder teilweise.
Mit Direct3D 11.1 können Sie eine Ressourcenansicht (RTV, UAV oder eine beliebige Videoansicht einer Texture2D-Oberfläche) löschen. Sie wenden den gleichen Farbwert auf alle Teile der Ansicht an.
Dieses Direct3D 11.1-Feature besteht aus der folgenden API.
Zuordnen von SRVs dynamischer Puffer mit NO_OVERWRITE
Mit Direct3D 11.1 können Sie Shaderressourcensichten (SRV) dynamischer Puffer mit D3D11_MAP_WRITE_NO_OVERWRITE zuordnen. Die Direct3D 11- und früheren Runtimes beschränkten die Zuordnung zu Scheitelpunkt- 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 für alle Shaderstufen verwenden, die zuvor nur in Pixel-Shadern 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 waren in Direct3D 11.0 in ps_5_0 und cs_5_0 vorhanden. Da Direct3D 11.1 UAVs in allen Shaderphasen verfügbar macht, sind diese Anweisungen in allen Shaderphasen verfügbar.
Wenn Sie kompilierte Shader (VS/HS/DS/HS), die eine dieser Anweisungen verwenden, an eine Create-Shader-Funktion wie CreateVertexShader auf Geräten übergeben, die UAVs nicht in jeder Phase unterstützen (einschließlich vorhandener Treiber, die nicht mit diesem Feature implementiert sind), schlägt die Create-Shader-Funktion fehl. Die Create-Shader-Funktion schlägt auch fehl, wenn der Shader versucht, einen UAV-Slot über den satz von der Hardware unterstützten UAV-Slots zu verwenden.
Die UAVs, auf die in diesen Anweisungen verwiesen wird, werden in allen Pipelinephasen gemeinsam genutzt. Beispielsweise ist ein UAV, der in der Ausgabefusionsphase an Slot 0 gebunden ist, im Slot 0 an VS/HS/DS/GS/PS verfügbar.
UAV-Zugriffe, die Sie innerhalb oder über Shaderphasen ausstellen, die innerhalb einer bestimmten Draw*() ausgeführt werden, oder die Sie aus dem Compute-Shader innerhalb eines Dispatch*() ausgeben, werden nicht in der Reihenfolge abgeschlossen, in der Sie sie ausgestellt haben. Alle UAV-Zugriffe enden jedoch am Ende von 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 DriverType-Parameter von D3D11CreateDevice übergeben.
Ab Direct3D 11.1 WARP-Geräte unterstützen:
- Alle Direct3D-Featureebenen von 9.1 bis 11.1
- Compute-Shader und Tessellation
- Freigegebene Oberflächen. Das heißt, Sie können Oberflächen sowohl zwischen WARP-Geräten als auch 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 Grafikverarbeitungseinheit (GPU) 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-Benutzeroberfläche ausführen, einschließlich DWM-, Internet-Explorer- und Windows Store-Apps. Dieses WARP-Gerät unterstützt auch die Ausführung von Legacy-Apps, die DirectDraw verwenden oder Apps ausführen, die Direct3D 3 bis Direct3D 11.1 verwenden.
Verwenden von Direct3D in Sitzung 0-Prozessen
Ab Windows 8 und Windows Server 2012 können Sie die meisten Direct3D-APIs in Sitzung 0-Prozessen verwenden.
Hinweis
Diese AUSGABE-, Fenster-, Swapchain- und Präsentations-APIs sind in Sitzung 0-Prozessen nicht verfügbar, da sie nicht für die Session 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 Session 0-Prozess aufrufen, wird DXGI_ERROR_NOT_CURRENTLY_AVAILABLE zurückgegeben.
Unterstützung für Schattenpuffer auf Featureebene 9
Verwenden Sie eine Teilmenge der 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.
Zugehörige Themen