Microsoft's new DirectX 12 Agility SDK opens the door to direct CPU VRAM access
The new features introduce multiple efficiencies and eliminates the need to keep two copies of data for component accessBy Jimmy Pezzone
Why it matters: On Thursday, Microsoft's Agility SDK development team announced the preview release of Agility SDK version 126.96.36.199. The new version brings developers two new features, GPU upload heaps and non-normalized sampling. The updates, in conjunction with VRAM resizable base address register (BAR), provide more efficient VRAM data handling across the CPU and GPU, as well as enhancements improving texture-related information management and use.
The first of the new features, known as GPU upload heaps, decreases dynamic random access memory (DRAM) utilization by allowing the CPU to access the GPU's video RAM (VRAM). This access eliminates the need for data to be copied from VRAM to DRAM for CPU access and use. While the impact is currently unknown and requires further testing, the reduction in resources and required data could very well translate to new available efficiencies for developers and performance enhancements for end users.
The second feature, non-normalized sampling, provides developers with a more absolute method to obtain texture sampling data. Texture sampling refers to the method used to retrieve data from a specific texture, which is later combined or processed to create the sample. The new Agility SDK's non-normalized sampling feature moves away from typical sampling methods, instead allowing developers to place a sampler using the D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES flag. When used, the flag refers to the absolute texel location within a texture, rather than being bound by the traditional values of 0 and 1. Like GPU upload heaps, non-normalized sampling requires thorough testing before any actual benefits can be documented.
GPU upload heap relies on the use of resizable BAR, the PCIE-based technology that is available across many of AMD, NVIDIA, and Intel's more recent GPUs. It allows a user's CPU to access the GPU's framebuffer, resulting in the ability to send more assets per transaction. Transactions that don't use resizable bar are typically limited to accessing 256MB chunks of VRAM. Testing has shown that resizable BAR's impact on game performance can vary, with some games seeing double-digit performance increases, while others see no tangible benefit.
Developers requiring Intel driver support for the new Agility SDK features can use the Intel Arc & Iris Xe Graphics Driver version 188.8.131.5255 package. NVIDIA also provides support for the new DirectX 12 Agility SDK package via their Game Ready and Studio Drivers version 531.41. AMD has not yet publicly released a supported version of their driver package. Per Microsoft's announcement, developers interested in early access to the DirectX 12 Agility SDK-enabled AMD drivers should contact their AMD alliance manager directly.