How DirectX Supports DLSS, FSR, and XeSS
DirectX enables modern upscaling technologies—specifically NVIDIA DLSS, AMD FSR, and Intel XeSS—by providing low-level hardware control, standardizing the temporal rendering data these tools require, and offering a unified implementation path through Microsoft DirectSR (DirectX Super Resolution). This article breaks down the mechanisms DirectX uses to interface with vendor-specific upscaling algorithms to enhance frame rates without compromising visual quality.
DirectSR: The Unified Upscaling API
Historically, developers had to integrate separate software development kits (SDKs) for NVIDIA Deep Learning Super Sampling (DLSS), AMD FidelityFX Super Resolution (FSR), and Intel Xe Super Sampling (XeSS). Microsoft addressed this fragmentation by introducing DirectSR, a native DirectX 12 API extension.
DirectSR acts as a standardized abstraction layer. Developers implement a single common interface within the DirectX pipeline, and DirectSR routes the workload to the appropriate vendor-specific upscaler based on the user's graphics hardware. It natively supports multi-vendor solutions, allowing DLSS, FSR, and XeSS to run through an identical set of API calls.
Standardized Temporal Data Buffers
Modern upscalers rely on temporal reconstruction, which combines data from past frames with the current frame rendered at a lower native resolution. DirectX 12 provides the infrastructure necessary to extract, format, and pass this critical data to upscaling engines:
- Motion Vectors: DirectX computes and passes screen-space vectors that track where pixels moved between frames.
- Depth Buffers: High-precision depth targets are exposed directly to the upscaler to determine object occlusion and edge separation.
- Sub-Pixel Jittering: DirectX allows developers to apply precise phase offsets to the camera projection matrix, providing the temporal variety required to reconstruct fine details.
- Exposure and Color Buffers: High dynamic range (HDR) color inputs are fed directly into the upscaling pass before final post-processing.
Because DirectX 12 offers explicit resource management, engines can pipe these buffers between render passes with minimal memory overhead and zero unnecessary CPU-GPU synchronization.
Hardware Execution and Compute Shaders
Each upscaler relies on different underlying execution methods, all of which DirectX accommodates:
- HLSL Compute Shaders (AMD FSR): FSR relies primarily on non-machine-learning spatial and temporal algorithms written in standard High-Level Shader Language (HLSL). DirectX 12 executes these instructions via standard compute pipelines, ensuring compatibility across virtually all modern GPUs.
- Specialized AI Hardware (NVIDIA DLSS): DLSS executes machine learning models trained on supercomputers using NVIDIA Tensor Cores. DirectX allows the graphics driver to hook directly into these dedicated hardware units via low-level driver-level abstractions without disrupting the primary render queue.
- Hybrid DP4a and Matrix Instructions (Intel XeSS): XeSS can run either on Intel Arc's dedicated XMX AI engines or fall back to DP4a (dot product) instructions supported across modern GPUs. DirectX exposes these extended math intrinsics, enabling XeSS to scale dynamically based on available hardware capabilities.
Asynchronous Compute and Latency Management
DirectX 12 supports asynchronous compute queues, allowing upscaling passes to run concurrently with other graphics tasks, such as post-processing or lighting calculations. By decoupling upscaling passes from the main graphics pipeline where possible, DirectX minimizes frame time overhead. Furthermore, integration with low-latency graphics queues ensures that the frame generation and upscaling steps do not introduce disruptive input lag.