Microsoft releases the DirectX 11.1 specification

DirectX 11.1 specifications are here!

4 minutes & 18 seconds read time

Microsoft have unleashed upon the world, the DirectX 11.1 specifications. There's a massive list of things that are being included, so don your thinking cap and get directly into it! We shouldn't expect too much to change until consoles are updated with next-gen GPUs, which should hopefully happen next year.

Until then, it's a nice list and we should expect some small changes to the way games are made, look and react. Nonetheless, the specifications are neat, and as a tech junkie, this is just another fix for me, and hopefully you. Check out the latest DirectX 11.1 specifications below:

Microsoft releases the DirectX 11.1 specification  |

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.


Anthony joined the TweakTown team in 2010 and has since reviewed 100s of graphics cards. Anthony is a long time PC enthusiast with a passion of hate for games built around consoles. FPS gaming since the pre-Quake days, where you were insulted if you used a mouse to aim, he has been addicted to gaming and hardware ever since. Working in IT retail for 10 years gave him great experience with custom-built PCs. His addiction to GPU tech is unwavering and has recently taken a keen interest in artificial intelligence (AI) hardware.

Newsletter Subscription

Related Tags