Shader Tracing and Compiler Enhancements
Direct3D 11.1 lets you use shader tracing to ensure that your code is performing as intended and if it isn't you can discover and remedy the problem. The SDK for Windows 8 Consumer Preview
contains HLSL compiler enhancements. Shader tracing and the HLSL compiler are implemented in D3dcompiler_nn.dll.
The D3dcompiler.lib library requires D3dcompiler_nn.dll. This DLL is not part of Windows 8; it is in the \bin folder of the SDK for Windows 8 along with the Fxc.exe command-line version of the HLSL compiler.
Note: While you can use this library and DLL combination for development, you can't deploy Metro style apps that use this combination. Therefore, you must instead compile HLSL shaders before you ship your Metro style app. You can write HLSL compilation binaries to disk, or the compiler can generate headers with static byte arrays that contain the shader blob data. You use the ID3DBlob interface to access the blob data. To develop your Metro style app, call D3DCompile2 or D3DCompileFromFile to compile the raw HLSL source, and then feed the resulting blob data to Direct3D. Direct3D Device Sharing
Direct3D 11.1 enables Direct3D 10 APIs and Direct3D 11 APIs to use one underlying rendering device. Check Support of New Direct3D 11.1 Features and Formats
Direct3D 11.1 lets you check for new features that the graphics driver might support and new ways that a format is supported on a device. Microsoft DirectX Graphics Infrastructure (DXGI) 1.2 also specifies new DXGI_FORMAT values. Create Larger Constant Buffers than a Shader Can Access
Direct3D 11.1 lets you create constant buffers that are larger than the maximum constant buffer size that a shader can access (4096 32-bit*4-component constants - 64KB). Later, when you bind the buffers to the pipeline, for example, via PSSetConstantBuffers or PSSetConstantBuffers1, you can specify a range of buffers that the shader can access that fits within the 4096 limit. Use Logical Operations in a Render Target
Direct3D 11.1 lets you use logical operations rather than blending in a render target. However, you can't mix logic operations with blending across multiple render targets. Force the Sample Count to Create a Rasterizer State
Direct3D 11.1 lets you specify a force sample count when you create a rasterizer state. Process Video Resources with Shaders
Direct3D 11.1 lets you create views (SRV/RTV/UAV) to video resources so that Direct3D shaders can process those video resources. The format of an underlying video resource restricts the formats that the view can use. The DXGI_FORMAT enumeration contains new video resource format values. These DXGI_FORMAT values specify the valid view formats that you can create and how the Direct3D 11.1 runtime maps the view. You can create multiple views of different parts of the same surface, and depending on the format, the sizes of the views can differ from each other. Extended Support for Shared Texture2D Resources
Direct3D 11.1 lets you share a greater variety of Texture2D resource types and formats. To share Texture2D resources, use the D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX, or a combination of the D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX and D3D11_RESOURCE_MISC_SHARED_NTHANDLE (new for Windows 8) flags when you create those resources. Change Subresources with New Copy Options
Direct3D 11.1 lets you use new copy flags to copy and update subresources. When you copy a subresource, the source and destination resources can be identical and the source and destination regions can overlap. Discard Resources and Resource views
Direct3D 11.1 lets you discard resources and views of resources from the device context. This new functionality informs the GPU that existing content in resources or resource views are no longer needed. Support a Larger Number of UAVs
Direct3D 11.1 lets you use a larger number of UAVs when you bind resources to the output-merger stage and when you set an array of views for an unordered resource. Bind a Subrange of a Constant Buffer to a Shader
Direct3D 11.1 lets you bind a subrange of a constant buffer for a shader to access. You can supply a larger constant buffer and specify the subrange that the shader can use. Retrieve the Subrange of a Constant Buffer that is Bound to a Shader
Direct3D 11.1 lets you retrieve the subrange of a constant buffer that is bound to a shader. Clear All or Part of a Resource View
Direct3D 11.1 lets you clear a resource view (RTV, UAV, or any video view of a Texture2D surface). You apply the same color value to all parts of the view. Map SRVs of Dynamic Buffers with NO_OVERWRITE
Direct3D 11.1 lets you map shader resource views (SRV) of dynamic buffers with D3D11_MAP_WRITE_NO_OVERWRITE. The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. Use UAVs at Every Pipeline Stage
Direct3D 11.1 lets you use shader model 5.0 instructions at all shader stages that were previously used in just pixel shaders and compute shaders.
These instructions existed in Direct3D 11.0 in ps_5_0 and cs_5_0. Because Direct3D 11.1 makes UAVs available at all shader stages, these instructions are available at all shader stages.
If you pass compiled shaders (VS/HS/DS/HS) that use any of these instructions to a create-shader function, like CreateVertexShader, on devices that don't support UAVs at every stage (including existing drivers that are not implemented with this feature), the create-shader function fails. The create-shader function also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.
The UAVs that are referenced by these instructions are shared across all pipeline stages. For example, a UAV that is bound at slot 0 at the output-merger stage is available at slot 0 to VS/HS/DS/GS/PS.