Agility SDK 1.602.0
The Agility SDK 1.602.0 has been published, which fixes bugs related to depth and stencil buffer resource state validation and contains a first round of new D3D12 features aimed at quality-of-life improvements and alignment with other graphics APIs.
Head over to Agility SDK Downloads to try it out.
New Minor Features
Each of the following features is behind a capability flag which can be queried and checked with the CheckFeatureSupport API. Call CheckFeatureSupport on an ID3D12Device with D3D12_FEATURE_D3D12_OPTIONS13 and a pointer to a D3D12_FEATURE_DATA_D3D12_OPTIONS13.
Buffer/Texture Copy Pitch and Offset Alignment
We’ve relaxed copies between buffers and textures to no longer require alignment according to D3D12_TEXTURE_DATA_PITCH_ALIGNMENT for row pitch and D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT for offsets. Keeping these alignments in your copies can still result in better performance in some cases, but where supported, they are no longer required.
Copying between textures when dimensionality doesn’t match
We’ve formally specified support for this operation. While D3D12 didn’t explicitly disallow this, and won’t moving forward to avoid breaking apps, it is now officially supported behind a feature capability.
Input Layout Alignment
For this one, we’ve changed alignment validation when setting up input layouts on pipeline state objects. Previously, validation would fail if the input layout’s elements weren’t properly aligned according to their types. The final memory addresses at draw still need to be aligned, but now wherever this feature is supported, the D3D12 runtime will consider the input layout together with the vertex buffer description and validate at draw instead. Input layout creation will still fail validation if it is impossible to end up with aligned addresses, but otherwise will succeed and then be finally validated at draw.
Where supported, we now allow
- Specifying a negative-height viewport to flip the Y-axis interpretation. This is equivalent to setting y = -y in your vertex shaders.
- Specifying the viewport’s MaxDepth as being less than its MinDepth.
Alpha Blend Factor
This one adds two blend factors to D3D12_BLEND:
When using these, the blend factor used is (A, A, A, A) for ALPHA_FACTOR and (1 – A, 1 – A, 1 – A, 1 – A) for INV_ALPHA_FACTOR, where the constant, A, is taken from the blend factor set with OMSetBlendFactor.
- Fixes a crash using GBV with shader patch mode TRACKING_ONLY.
- Fixes false debug validation output resulting from depth slice state being confused with depth slice state.
- Fixes a bug causing promoted COPY_DEST to not decay back to COMMON.
- Report live objects when encountering device removed from a kernel memory failure.