GPU Drivers - NVIDIA ​
We're going to use third-party programs called NVCleanstall or NVSlimmer to strip the drivers of bloatware, telemetry, and unneeded/obsolete features. You can use either of them, but not both at the same time.
TIP
If you have no personal preference, use NVCleanstall.
Using NVCleanstall ​
- Download and install NVCleanstall.
- Open the program, tick Install the best driver for my hardware, then click Next.
- You can also manually select your preferred GPU driver with the option below.
- Tick Minimum or Recommended in the bottom right, then hit Next. (We recommend Minimum.)
- Components page:
- No need to tick the Visual Runtimes - we install them separately afterwards.
- PhysX is only used by a handful of games, so most users can keep this unticked.
- If ShadowPlay is a necessity, only select the bare minimum required for it.
WARNING
ShadowPlay adds telemetry to your system.
- While the driver downloads, tick a few tweaks under Additional Tweaks.
- We recommend ticking everything except Unattended Express Installation.
- The driver will now install like any other NVIDIA driver.
Using NVSlimmer ​
- Download and install NVSlimmer, and download the regular NVIDIA driver from the official website.
- Import your downloaded driver into NVSlimmer, and preferably keep only both required packages.
- Only check other options if you actually need them:
- If you have a USB-C port, tick the USB-C driver.
- If you need GeForce Experience, tick it.
- No need to tick the Visual Runtimes - we install them separately afterwards.
- PhysX is only used by a handful of games, so most users can keep this unticked.
- Press Apply, then Install driver when prompted. It will install just like any NVIDIA driver.
NVIDIA Control Panel - Optimization Guide ​
Open NVIDIA Control Panel ​
To open NVIDIA Control Panel:
- Search using the Start menu for NVIDIA Control Panel, OR
- Right-click on your desktop and select NVIDIA Control Panel in the menu.
Adjust Image Settings with Preview ​
- Tick Use my preference emphasizing.
- Drag the slider all the way to the left so that it says Performance.
- Hit Apply in the bottom right.
- Now tick Use the advanced 3D image settings.
This enforces a good foundation by applying the Performance image settings preset, saving time in the next step.
Manage 3D Settings ​
TIP
You may not see some of the settings listed below - just ignore them.
Ensure that your 3D settings match the following.
Global Settings:
| Setting | Value |
|---|---|
| Image Sharpening | Off |
| Ambient Occlusion | Off |
| Anisotropic filtering | Application-controlled |
| Antialiasing - FXAA | Off |
| Antialiasing - Gamma correction | Off |
| Antialiasing - Mode | Application-controlled |
| Antialiasing - Setting | None |
| Antialiasing - Transparency | Off |
| CUDA - GPUs | All |
| DSR - Factors | Off |
| DSR - Smoothness | Off |
| Low Latency Mode | On |
| Monitor Technology | Fixed Refresh |
| Multi-Frame Sampled AA (MFAA) | Off |
| OpenGL rendering GPU | Your GPU |
| Power management mode | Prefer maximum performance |
| Preferred refresh rate (monitor name) | Highest available |
| Shader Cache | On |
| Texture filtering - Anisotropic sample optimization | On |
| Texture filtering - Negative LOD bias | Allow |
| Texture filtering - Quality | High performance |
| Texture filtering - Trilinear optimization | On |
| Threaded optimization | Auto |
| Triple buffering | Off |
| Vertical sync | Off |
| Virtual Reality pre-rendered frames | 1 |
Finally click Apply in the bottom right.
Configure Surround, PhysX ​
Under PhysX settings, make sure Processor is set to your GPU.
Change Resolution ​
- Navigate to Change Resolution.
- Scroll down and tick Use NVIDIA color settings.
- Make sure Output dynamic range is set to Full.
- Make sure Output color format is set to RGB - most displays support it nowadays.
Adjust Desktop Color Settings ​
Tick Use NVIDIA Settings.
This ensures your display colors stay the same universally.
Adjust Desktop Size and Position ​
- Select your display.
- Under 2. apply the following settings:
- Scaling - tick No scaling.
- Under Perform scaling on: select Display and tick Override the scaling mode set by games and programs.
Notes
- The best resolution for your monitor will almost always be your native resolution with No scaling ticked. This enforces the lowest display lag.
- If you're using a stretched resolution, set the scaling mode to Full-Screen.
- If you have multiple monitors, replicate the above on your secondary monitor(s).
Setup G-SYNC ​
Untick Enable G-SYNC, G-SYNC Compatible.
INFO
This is a debatable topic - whether G-SYNC causes additional input lag. Technically G-SYNC will add input lag because it is a sync feature: one thing has to wait for another in order for them to be in sync. The question is whether the added input lag is even perceivable. Probably not.
Adjust Video Color Settings ​
- Head down to 2. How do you make color adjustments?
- Tick With the NVIDIA settings.
- Go to Advanced and set Dynamic range: to Full (0-255).
- Replicate this on your other monitor(s) if you have any.
Adjust Video Image Settings ​
- Go to 2. Apply these settings to my video content:
- Under Edge enhancement, tick Use the NVIDIA settings and drag the slider all the way to the left so that it says 0%.
- Apply the same to Noise reduction: tick Use the NVIDIA setting, then make sure the slider is all the way to the left at 0%.
- Replicate this on your other monitor(s) if you have any.
Power User - Automated Setup ​
Run elevated, reboot at the end
- Every snippet must be run from an elevated PowerShell session (right-click → Run as administrator).
- Each block is standalone - paste only the ones you need.
- Reboot once you're done so the driver picks up the new state.
This packages the same configuration applied manually above as drop-in PowerShell snippets. All registry / service work goes through native cmdlets (Set-ItemProperty, Set-Service, Get-CimInstance, ...) - no reg.exe, no cmd /c shim - so the same code runs unchanged on Windows PowerShell 5.1 and PowerShell 7.x.
3D Global Settings are driven by NVIDIA Profile Inspector (NIP). The rest is plain service + registry work.
Prerequisites ​
- Latest NVIDIA driver installed (via NVCleanstall / NVSlimmer above).
- NVIDIA Profile Inspector extracted to a stable folder. Snippets below default to
%USERPROFILE%\Tools\nvidiaProfileInspector- change$InspectorDirif you keep it elsewhere. - Execution policy permissive enough for the current process:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force1. Strip telemetry, scheduled tasks and startup entries ​
# --- Telemetry / container services ---------------------------------------
$Services = @(
'NvTelemetryContainer'
'NvContainerLocalSystem'
'NvContainerNetworkService'
)
foreach ($Name in $Services) {
$svc = Get-Service -Name $Name -ErrorAction SilentlyContinue
if (-not $svc) { continue }
if ($svc.Status -eq 'Running') {
$svc | Stop-Service -Force -ErrorAction SilentlyContinue
}
Set-Service -Name $Name -StartupType Disabled
}
# --- Scheduled telemetry / updater tasks ----------------------------------
Get-ScheduledTask -ErrorAction SilentlyContinue |
Where-Object TaskName -Match 'NvTm|NvProfileUpdater|NvDriverUpdate' |
Unregister-ScheduledTask -Confirm:$false -ErrorAction SilentlyContinue
# --- GeForce Experience / ShadowPlay startup entries ----------------------
$RunKeys = @(
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run'
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
)
$Entries = 'NVIDIA GeForce Experience', 'NvBackend', 'ShadowPlay'
foreach ($Key in $RunKeys) {
foreach ($Entry in $Entries) {
Remove-ItemProperty -Path $Key -Name $Entry -ErrorAction SilentlyContinue
}
}2. Driver-level registry tweaks ​
These are the registry values that the manual Manage 3D Settings table and the Adjust Desktop Color Settings screen don't expose, but most power users want set on a fresh install: HDCP off, locked P-state, dedicated PhysX, allowed performance-counter access, hidden tray icon, NVCP developer page, and the legacy sharpen build (GR5.3.5).
# Each detected GPU lives under a numbered subkey (0000, 0001, ...) of
# the display-class GUID. We need that handle for the per-adapter values.
$DisplayClass = 'HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}'
$AdapterKeys = Get-ChildItem -Path $DisplayClass -ErrorAction SilentlyContinue |
Where-Object PSChildName -Match '^\d{4}$'
foreach ($Adapter in $AdapterKeys) {
# Disable HDCP on this adapter
Set-ItemProperty -Path $Adapter.PSPath -Name 'RMHdcpKeyglobZero' -Value 1 -Type DWord -ErrorAction SilentlyContinue
# Lock GPU to P0 (disables dynamic P-state switching)
Set-ItemProperty -Path $Adapter.PSPath -Name 'DisableDynamicPstate' -Value 1 -Type DWord -ErrorAction SilentlyContinue
# Allow non-admin processes to read GPU performance counters
Set-ItemProperty -Path $Adapter.PSPath -Name 'RmProfilingAdminOnly' -Value 0 -Type DWord -ErrorAction SilentlyContinue
}
# --- NVTweak global flags --------------------------------------------------
$NvTweak = 'HKLM:\SYSTEM\CurrentControlSet\Services\nvlddmkm\Parameters\Global\NVTweak'
if (-not (Test-Path $NvTweak)) { New-Item -Path $NvTweak -Force | Out-Null }
Set-ItemProperty -Path $NvTweak -Name 'NvCplPhysxAuto' -Value 0 -Type DWord # PhysX -> dedicated GPU
Set-ItemProperty -Path $NvTweak -Name 'NvDevToolsVisible' -Value 1 -Type DWord # Show "Developer" page in NVCP
Set-ItemProperty -Path $NvTweak -Name 'RmProfilingAdminOnly' -Value 0 -Type DWord # Mirror of the per-adapter value
# --- Re-enable the legacy NVCP "Image Sharpening" build (GR5.3.5) ---------
$FtsPaths = @(
'HKLM:\SYSTEM\CurrentControlSet\Services\nvlddmkm\FTS'
'HKLM:\SYSTEM\CurrentControlSet\Services\nvlddmkm\Parameters\FTS'
)
foreach ($Path in $FtsPaths) {
if (-not (Test-Path $Path)) { New-Item -Path $Path -Force | Out-Null }
Set-ItemProperty -Path $Path -Name 'EnableGR535' -Value 0 -Type DWord
}
# --- Hide NVIDIA notification-tray icon on login --------------------------
$NvTray = 'HKCU:\Software\NVIDIA Corporation\NvTray'
if (-not (Test-Path $NvTray)) { New-Item -Path $NvTray -Force | Out-Null }
Set-ItemProperty -Path $NvTray -Name 'StartOnLogin' -Value 0 -Type DWord
# --- Unblock NVIDIA's downloaded driver-profile (DRS) files ---------------
$DrsPath = 'C:\ProgramData\NVIDIA Corporation\Drs'
if (Test-Path $DrsPath) {
Get-ChildItem -Path $DrsPath -Recurse -File | Unblock-File
}3. Apply the Global 3D profile via NVIDIA Profile Inspector ​
This single profile collapses every value documented in Manage 3D Settings above into one import, plus a few power-user extras: minimum Pre-Rendered Frames, Ultra Low Latency CPL synced with NVCP, unlimited shader cache, CUDA P2-state off, and G-SYNC explicitly disabled (Application + Global).
Save the XML below as nvcp-global.nip next to nvidiaProfileInspector.exe. Encoding must be UTF-16 LE with BOM - use the helper at the end of this section if your editor doesn't make that easy.
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfProfile>
<Profile>
<ProfileName>Base Profile</ProfileName>
<Executables />
<Settings>
<!-- ============================================================== -->
<!-- Sync / V-Sync / G-SYNC -->
<!-- ============================================================== -->
<!-- Frame Rate Limiter v3: Off -->
<ProfileSetting>
<SettingNameInfo>Frame Rate Limiter V3</SettingNameInfo>
<SettingID>277041154</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- G-SYNC: globally disabled (Application + Global) -->
<ProfileSetting>
<SettingNameInfo>GSYNC - Application Mode</SettingNameInfo>
<SettingID>294973784</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Application State</SettingNameInfo>
<SettingID>279476687</SettingID>
<SettingValue>4</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Global Feature</SettingNameInfo>
<SettingID>278196567</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Global Mode</SettingNameInfo>
<SettingID>278196727</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Indicator Overlay</SettingNameInfo>
<SettingID>268604728</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- V-Sync: Off / no smooth-AFR / standard tear control -->
<ProfileSetting>
<SettingNameInfo>Vertical Sync</SettingNameInfo>
<SettingID>11041231</SettingID>
<SettingValue>138504007</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Vertical Sync - Smooth AFR Behavior</SettingNameInfo>
<SettingID>270198627</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Vertical Sync - Tear Control</SettingNameInfo>
<SettingID>5912412</SettingID>
<SettingValue>2525368439</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- ============================================================== -->
<!-- Latency / framerate -->
<!-- ============================================================== -->
<!-- Maximum Pre-Rendered Frames: 1 (lowest input lag) -->
<ProfileSetting>
<SettingNameInfo>Maximum Pre-Rendered Frames</SettingNameInfo>
<SettingID>8102046</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- Preferred Refresh Rate: Highest available -->
<ProfileSetting>
<SettingNameInfo>Preferred Refresh Rate</SettingNameInfo>
<SettingID>6600001</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- Ultra Low Latency: On (driver + CPL state aligned) -->
<ProfileSetting>
<SettingNameInfo>Ultra Low Latency - Enabled</SettingNameInfo>
<SettingID>277041152</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Ultra Low Latency - CPL State</SettingNameInfo>
<SettingID>390467</SettingID>
<SettingValue>2</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- Vulkan / OpenGL present method: auto -->
<ProfileSetting>
<SettingNameInfo>Vulkan/OpenGL Present Method</SettingNameInfo>
<SettingID>550932728</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- ============================================================== -->
<!-- Antialiasing: off / application-controlled -->
<!-- ============================================================== -->
<ProfileSetting>
<SettingNameInfo>Antialiasing - Gamma Correction</SettingNameInfo>
<SettingID>276652957</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Antialiasing - Mode</SettingNameInfo>
<SettingID>276757595</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Antialiasing - Setting</SettingNameInfo>
<SettingID>282555346</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- ============================================================== -->
<!-- Anisotropic / texture filtering: high performance -->
<!-- ============================================================== -->
<ProfileSetting>
<SettingNameInfo>Anisotropic Filter - Optimization</SettingNameInfo>
<SettingID>8703344</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filter - Sample Optimization</SettingNameInfo>
<SettingID>15151633</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filtering - Mode</SettingNameInfo>
<SettingID>282245910</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filtering - Setting</SettingNameInfo>
<SettingID>270426537</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Texture Filtering - Negative LOD Bias</SettingNameInfo>
<SettingID>1686376</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Texture Filtering - Quality</SettingNameInfo>
<SettingID>13510289</SettingID>
<SettingValue>20</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Texture Filtering - Trilinear Optimization</SettingNameInfo>
<SettingID>3066610</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- ============================================================== -->
<!-- CUDA / OpenGL / power / shader cache -->
<!-- ============================================================== -->
<!-- CUDA: stay on P0, allow system-memory fallback -->
<ProfileSetting>
<SettingNameInfo>CUDA - Force P2 State</SettingNameInfo>
<SettingID>1343646814</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>CUDA - Sysmem Fallback Policy</SettingNameInfo>
<SettingID>283962569</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- Power management: Prefer maximum performance -->
<ProfileSetting>
<SettingNameInfo>Power Management - Mode</SettingNameInfo>
<SettingID>274197361</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- Shader cache: unlimited (4 GiB - 1 byte) -->
<ProfileSetting>
<SettingNameInfo>Shader Cache - Cache Size</SettingNameInfo>
<SettingID>11306135</SettingID>
<SettingValue>4294967295</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- Threaded optimization: force ON -->
<ProfileSetting>
<SettingNameInfo>Threaded Optimization</SettingNameInfo>
<SettingID>549528094</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<!-- OpenGL GDI compatibility: Off -->
<ProfileSetting>
<SettingNameInfo>OpenGL GDI Compatibility</SettingNameInfo>
<SettingID>544392611</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
</Settings>
</Profile>
</ArrayOfProfile>Then import the profile (silent, no UI):
# Adjust if you extracted NIP somewhere else.
$InspectorDir = Join-Path $env:USERPROFILE 'Tools\nvidiaProfileInspector'
$InspectorExe = Join-Path $InspectorDir 'nvidiaProfileInspector.exe'
$ProfilePath = Join-Path $InspectorDir 'nvcp-global.nip'
if (-not (Test-Path $InspectorExe)) {
throw "nvidiaProfileInspector.exe not found at $InspectorExe."
}
if (-not (Test-Path $ProfilePath)) {
throw "nvcp-global.nip not found at $ProfilePath. Save the XML above (UTF-16) before re-running."
}
Start-Process -FilePath $InspectorExe `
-ArgumentList @('-silentImport', "`"$ProfilePath`"") `
-Wait -NoNewWindowWrite the .nip from PowerShell
Don't want to deal with editor encodings? Drop the XML into a here-string and let PowerShell save it with the right BOM in one go:
$ProfilePath = Join-Path $env:USERPROFILE 'Tools\nvidiaProfileInspector\nvcp-global.nip'
$Xml = @'
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfProfile>
<Profile>
<ProfileName>Base Profile</ProfileName>
<Executables/>
<Settings>
<ProfileSetting>
<SettingNameInfo>Frame Rate Limiter V3</SettingNameInfo>
<SettingID>277041154</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Application Mode</SettingNameInfo>
<SettingID>294973784</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Application State</SettingNameInfo>
<SettingID>279476687</SettingID>
<SettingValue>4</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Global Feature</SettingNameInfo>
<SettingID>278196567</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Global Mode</SettingNameInfo>
<SettingID>278196727</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>GSYNC - Indicator Overlay</SettingNameInfo>
<SettingID>268604728</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Maximum Pre-Rendered Frames</SettingNameInfo>
<SettingID>8102046</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Preferred Refresh Rate</SettingNameInfo>
<SettingID>6600001</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Ultra Low Latency - CPL State</SettingNameInfo>
<SettingID>390467</SettingID>
<SettingValue>2</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Ultra Low Latency - Enabled</SettingNameInfo>
<SettingID>277041152</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Vertical Sync</SettingNameInfo>
<SettingID>11041231</SettingID>
<SettingValue>138504007</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Vertical Sync - Smooth AFR Behavior</SettingNameInfo>
<SettingID>270198627</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Vertical Sync - Tear Control</SettingNameInfo>
<SettingID>5912412</SettingID>
<SettingValue>2525368439</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Vulkan/OpenGL Present Method</SettingNameInfo>
<SettingID>550932728</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Antialiasing - Gamma Correction</SettingNameInfo>
<SettingID>276652957</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Antialiasing - Mode</SettingNameInfo>
<SettingID>276757595</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Antialiasing - Setting</SettingNameInfo>
<SettingID>282555346</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filter - Optimization</SettingNameInfo>
<SettingID>8703344</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filter - Sample Optimization</SettingNameInfo>
<SettingID>15151633</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filtering - Mode</SettingNameInfo>
<SettingID>282245910</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Anisotropic Filtering - Setting</SettingNameInfo>
<SettingID>270426537</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Texture Filtering - Negative LOD Bias</SettingNameInfo>
<SettingID>1686376</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Texture Filtering - Quality</SettingNameInfo>
<SettingID>13510289</SettingID>
<SettingValue>20</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Texture Filtering - Trilinear Optimization</SettingNameInfo>
<SettingID>3066610</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>CUDA - Force P2 State</SettingNameInfo>
<SettingID>1343646814</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>CUDA - Sysmem Fallback Policy</SettingNameInfo>
<SettingID>283962569</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Power Management - Mode</SettingNameInfo>
<SettingID>274197361</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Shader Cache - Cache Size</SettingNameInfo>
<SettingID>11306135</SettingID>
<SettingValue>4294967295</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Threaded Optimization</SettingNameInfo>
<SettingID>549528094</SettingID>
<SettingValue>1</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>OpenGL GDI Compatibility</SettingNameInfo>
<SettingID>544392611</SettingID>
<SettingValue>0</SettingValue>
<ValueType>Dword</ValueType>
</ProfileSetting>
<ProfileSetting>
<SettingNameInfo>Preferred OpenGL GPU</SettingNameInfo>
<SettingID>550564838</SettingID>
<SettingValue>id,2.0:268410DE,00000100,GF - (400,2,161,24564) @ (0)</SettingValue>
<ValueType>String</ValueType>
</ProfileSetting>
</Settings>
</Profile>
</ArrayOfProfile>
'@
$Xml | Set-Content -Path $ProfilePath -Encoding Unicode # UTF-16 LE w/ BOM4. (Optional) Force "No scaling" + override scaling mode on every display ​
The two scaling values driven by NVCP's Adjust Desktop Size and Position screen live in keys owned by SYSTEM. A normal admin write fails silently - they have to be written as TrustedInstaller. The helper below temporarily hijacks the TrustedInstaller service's binary path, runs a single reg add, then restores the original path.
Advanced
Skip this section if you don't understand what the helper is doing. It edits a system service in-place; a typo or interruption can leave TrustedInstaller in a non-default state until next boot.
# --- TrustedInstaller wrapper ---------------------------------------------
function Invoke-AsTrustedInstaller {
[CmdletBinding()]
param([Parameter(Mandatory)][string]$Command)
$svc = Get-CimInstance -ClassName Win32_Service -Filter "Name='TrustedInstaller'"
$original = $svc.PathName
$stop = {
try { Stop-Service -Name TrustedInstaller -Force -ErrorAction Stop }
catch { Start-Process taskkill.exe -ArgumentList '/IM','trustedinstaller.exe','/F' `
-Wait -WindowStyle Hidden }
}
& $stop
$encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($Command))
& sc.exe config TrustedInstaller binPath= "cmd.exe /c powershell.exe -EncodedCommand $encoded" | Out-Null
& sc.exe start TrustedInstaller | Out-Null
& sc.exe config TrustedInstaller binPath= "`"$original`"" | Out-Null
& $stop
}
# --- Adjust Desktop Size and Position -> "No scaling" on every profile ----
$ConfigRoot = 'HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration'
Get-ChildItem -Path $ConfigRoot -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
if ($null -eq (Get-ItemProperty -Path $_.PSPath -Name 'Scaling' -ErrorAction SilentlyContinue)) { return }
$regPath = $_.Name.Replace('HKEY_LOCAL_MACHINE', 'HKLM')
Invoke-AsTrustedInstaller -Command "reg add `"$regPath`" /v Scaling /t REG_DWORD /d 2 /f"
}
# --- Override the scaling mode set by games and programs ------------------
$DisplayDb = 'HKLM:\SYSTEM\CurrentControlSet\Services\nvlddmkm\State\DisplayDatabase'
Get-ChildItem -Path $DisplayDb -ErrorAction SilentlyContinue | ForEach-Object {
$regPath = $_.Name.Replace('HKEY_LOCAL_MACHINE', 'HKLM')
Invoke-AsTrustedInstaller -Command "reg add `"$regPath`" /v ScalingConfig /t REG_BINARY /d DB02000010000000200100000E010000 /f"
}Final step - reboot
Reboot once you've finished the snippets you wanted. The next time the NVIDIA Control Panel opens, every value from Manage 3D Settings (and the extras in section 2) will already be in place.