The Intel Graphics Extensions SDK gives Direct3D 11 and Direct3D 12 applications access to features of Intel graphics hardware that are not exposed by the standard Direct3D APIs — multi-draw indirect, UAV overlap, depth bounds test, 64-bit typed atomics, CPU-visible VRAM, host-side BVH builds, GPU crash breadcrumbs and more.
The SDK is a thin static library plus a header. It talks to the Intel Graphics Driver at runtime, so an application that links it still runs normally on non-Intel hardware and on older Intel drivers — extensions simply report as unavailable and your existing code path is used instead.
Licensed under the MIT License.
| Feature | What it does |
|---|---|
| CPU Visible VRAM | Create committed, placed, reserved resources and heaps in CPU-visible device memory, and query how much is free. |
| Emulated Typed 64-bit Atomics | 64-bit typed atomic operations on Texture2D resources. |
| BVH CPU Build | Build, copy and query raytracing acceleration structures on the host timeline, then transfer them to device memory. |
| Breadcrumbs | Place event markers in command lists and capture, decode and inspect GPU crash dumps to find the work that was in flight. |
| Get Cached Blob | Retrieve the cached blob for a pipeline state. |
| Offline Compiler | Point the driver at precompiled shader binaries on disk. |
| Command Throttle Policy | Create a command queue with a throttle policy that biases shared CPU/GPU power toward the GPU. |
| Driver Metadata | Attach metadata to a command list for driver-side tooling. |
| Application Discovery | Register your application name, version and engine with the driver. |
| GetCurrentShaderHeapUsage | Query current shader heap usage. |
| XeSS | Driver support queries backing Intel Xe Super Sampling. |
| Feature | What it does |
|---|---|
| Multi Draw Indirect | Submit many indirect draws in one call, optionally with a GPU-side draw count, instead of one call per draw. |
| UAV Overlap | Disable GPU synchronization between consecutive draws and dispatches that share a UAV when you know they do not conflict. |
| Depth Bounds Test | Set the depth bounds range dynamically. |
| Emulated Typed 64-bit Atomics | 64-bit typed atomics on textures created through the extension. |
| Retrieve Resource Driver Handle | Obtain the driver-side handle for a resource, with the retrieval path off by default so normal resource creation is unaffected. |
Availability depends on both the GPU and the installed driver. The per-platform support matrix and the complete API reference are in sdk/docs/GraphicsExtensionsAPI.md.
- Windows, x64 or Win32
- An Intel GPU and an installed Intel Graphics Driver. The extensions are reached through
igdext64.dll/igdext32.dll, which ships with the driver. Do not copy that DLL next to your application or replace it — the SDK locates the installed one. - Visual Studio 2022 to build the samples
Add sdk/include to your include path and link the static library for your architecture:
sdk/lib/x64/Release/igdext64.lib or sdk/lib/Win32/Release/igdext32.lib. There is nothing
to redistribute.
The library is a thin wrapper: it finds the extensions DLL that ships with the installed
driver, resolves the entry points and forwards calls. Its sources are in sdk/src, so you
can read exactly what it does and rebuild it yourself — see sdk/BUILDING.md.
#define INTC_IGDEXT_D3D12
#include "igdext.h"
// 1. Load the extensions library that shipped with the installed driver.
// Fails cleanly when there is no Intel GPU or the driver is too old.
if( FAILED( INTC_LoadExtensionsLibrary() ) )
return false;
// 2. Ask the device which extension versions it supports.
uint32_t count = 0;
INTC_D3D12_GetSupportedVersions( pDevice, nullptr, &count );
std::vector<INTCExtensionVersion> supported( count );
INTC_D3D12_GetSupportedVersions( pDevice, supported.data(), &count );
// 3. Create a context for the version you need. Check it against the list
// above before requesting it.
INTCExtensionInfo1 info = {};
info.RequestedExtensionVersion = { 4, 21, 0 }; // HW feature level, API version, revision
INTCExtensionAppInfo1 appInfo = {};
appInfo.pApplicationName = L"My Application";
appInfo.pEngineName = L"My Engine";
INTCExtensionContext* pContext = nullptr;
if( FAILED( INTC_D3D12_CreateDeviceExtensionContext2( pDevice, &pContext, &info, &appInfo ) ) )
{
INTC_UnloadExtensionsLibrary();
return false; // Fall back to your standard Direct3D path.
}
// ... call extension entry points with pContext ...
INTC_DestroyDeviceExtensionContext( &pContext );
INTC_UnloadExtensionsLibrary();Every extension entry point returns an HRESULT. Treat a failure as "this extension is not
available here" and fall back, rather than as a fatal error.
samples/igdext_dx12_helloworld is a Direct3D 12
application that performs the full sequence above. Open
igdext_dx12_helloworld.sln in Visual Studio 2022 and build the x64 configuration. The
project restores the Microsoft.Direct3D.D3D12 Agility SDK NuGet package at build time.
samples/igdext_common holds a small reusable wrapper
(igdext_impl) around initialization, version selection and teardown that the sample builds
on and that you can lift into your own project.
- Getting Started guide — the longer walkthrough: versioning scheme, loading the library, the extension structures, compiler extensions and answers to common questions
- API reference — every entry point, structure and enumeration, plus the platform and version support matrix
- Changelog — what changed in each API version
- Building the static library from source — optional; the prebuilt
libraries in
sdk/libare the usual path
| Path | Contents |
|---|---|
sdk/include |
igdext.h (extensions API), igdext_tools.h (tools API) |
sdk/src |
Sources of the wrapper and loader library, and how to build them |
sdk/lib |
Prebuilt static libraries for x64 and Win32 |
sdk/docs |
API reference and changelog |
docs |
Getting Started guide |
samples |
Direct3D 12 sample and shared helper code |
CMakeLists.txt |
Optional target to build the static library from source |
The SDK content corresponds to the Graphics Extensions SDK 4.21.12 release.
MIT. See LICENSE.
The license covers the headers, the prebuilt static libraries in sdk/lib, the documentation
and the samples. Parts of the samples are derived from Microsoft's DirectX-Graphics-Samples
and carry Microsoft's copyright under the same MIT terms; the Agility SDK NuGet package the
sample restores at build time is governed by Microsoft's own license and is not redistributed
here. See THIRD-PARTY-NOTICES.md.
See CONTRIBUTING.md. Security issues go through SECURITY.md, not GitHub Issues.