A .NET library for Intel, AMD and NVIDIA graphics driver controls.
Discover the settings offered by an installed graphics driver, read their state, apply typed changes and manage native application profiles. One API covers all three vendors, including adapter and connected-display controls. Your application chooses the profiles and presents the UI.
Getting started · Documentation · API reference · Contributing
| Vendor | Native interfaces | Supported areas |
|---|---|---|
| Intel | IGCL / ControlLib | Driver-reported 3D settings, frame pacing, filtering, sharpening, scaling, shared GPU memory, Arc Sync, display colour/power and executable profiles |
| AMD | ADLX / ADL | Anti-Lag, Boost, sharpening, Enhanced Sync, RSR, AFMF, supported FidelityFX upgrades, FreeSync, scaling, colour, Vari-Bright and dithering |
| NVIDIA | NVAPI / DRS | Performance and quality settings, synchronization, G-SYNC, supported DLSS overrides, frame generation, Smooth Motion, RTX HDR, Digital Vibrance, output formats and dithering |
Available settings and values depend on the installed driver, adapter and output. The library publishes supported controls with their bounds, choices, profile scope and apply timing. Use those descriptors when building controls; a feature listed here is not a promise for every GPU.
- Typed controls: Boolean, integer, choice and action requests with explicit write outcomes.
- Multiple adapters and vendors: one owner per vendor, with separate adapter/output identities.
- Application profiles: Intel and NVIDIA native executable profiles where supported; metadata for applying GPU-wide settings when the active application changes.
- Display identity: physical monitor information alongside the current Windows output route.
- Live notifications: descriptor, state and health updates, with explicit topology refresh.
- Owned cleanup: serialized native calls and restoration that preserves unrelated driver settings.
The library loads native DLLs from the installed vendor driver. Vendor binaries are not bundled. Historical hardware observations and source attribution are documented in PROVENANCE.md.
Requirements: .NET 10, Windows 10 build 19041 or newer, an x64 application, and the matching installed graphics driver.
git clone --recurse-submodules https://github.com/KillerPixelCrew/LibGPUDriverInteract.git
cd LibGPUDriverInteract
dotnet build LibGPUDriverInteract.slnx -c ReleaseThe submodule supplies WindowsDeviceControl for display identity. Add a project reference to
src/LibGPUDriverInteract/LibGPUDriverInteract.csproj, then subscribe before starting a vendor:
using LibGPUDriverInteract;
var vendors = GpuDriver.DetectVendors();
if (vendors.Count == 0)
{
Console.WriteLine("No supported graphics vendor detected.");
return;
}
var vendor = vendors[0];
var stateDirectory = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"MyApplication", "Graphics", vendor.ToString());
await using var driver = GpuDriver.Create(vendor, stateDirectory);
driver.DescriptorsChanged += set =>
{
foreach (var control in set.Descriptors)
{
Console.WriteLine($"{control.Label}: {control.CapabilityId}");
}
};
driver.StatusChanged += status => Console.WriteLine(status.Detail);
try
{
var health = await driver.StartAsync();
Console.WriteLine($"{vendor}: {health}");
}
finally
{
await driver.StopAsync();
}Use ExecuteAsync to apply a GpuCommand built from a current descriptor. Use
SyncApplicationProfilesAsync for complete native profile sets and RefreshTopologyAsync after
adapter or monitor changes. Events run on the publishing thread; marshal UI updates in your
application. Keep an owner alive for each vendor you want to use.
The getting-started guide includes a write example. The profile guide explains native profiles and GPU-wide settings.
| Guide | Read it for |
|---|---|
| Controls and vendor support | Descriptors, values, availability and write outcomes |
| Application profiles | Native executable profiles, switched values and restoration |
| Display identity | Physical monitors, hotplug and changing output routes |
| Lifetime and events | Startup, cancellation, driver loss and safe cleanup |
| Troubleshooting | Missing controls, failed sync and uncertain writes |
| API reference | Public types, methods, properties and enum values |
The implementation uses public vendor documentation and open-source references, including Intel IGCL, AMD ADLX/ADL, NVIDIA NVAPI, HandheldCompanion, ColorControl and NoVidiaApp. Source attribution is retained in PROVENANCE.md.
LibGPUDriverInteract is MIT licensed. Preserve its license and attribution notices when redistributing it. See Contributing to add a control or improve a backend.
Used by WSGM. For handheld hardware, see LibHandheld; for generic Windows display, audio, radio and power controls, see WindowsDeviceControl.