Skip to content

Instantly share code, notes, and snippets.

@denji
Last active May 25, 2026 13:46
Show Gist options
  • Select an option

  • Save denji/52b9b0980ef3dadde0ff3d3ccf74a2a6 to your computer and use it in GitHub Desktop.

Select an option

Save denji/52b9b0980ef3dadde0ff3d3ccf74a2a6 to your computer and use it in GitHub Desktop.
/etc/modprobe.d/nvidia.conf.ini
# /etc/modprobe.d/nvidia.conf
#
# NVIDIA Linux kernel module options.
# Last audited against: open-gpu-kernel-modules 595.71.05
#
# Parameter types: all parameters are NvU32 (uint) unless noted as "string".
# The Linux kernel module_param() system accepts hex notation (0x...) for uint
# parameters; decimal and hex are both valid and equivalent.
#
# Some options are experimental or reserved for internal testing. Defaults may
# vary between the proprietary driver and the open kernel modules. Changing
# these settings can improve performance or unlock additional features, but may
# also introduce stability or security risks if misconfigured.
#
# Source references (open-gpu-kernel-modules 595.71.05):
# kernel-open/nvidia/nv-reg.h -- all module parameters and defaults
# kernel-open/common/inc/nv-firmware-registry.h -- GSP firmware parameter details
# src/nvidia/interface/nvrm_registry.h -- RegistryDwords internal keys
#
# Online references:
# https://github.com/NVIDIA/open-gpu-kernel-modules/blob/595.71.05/kernel-open/nvidia/nv-reg.h
# https://github.com/NVIDIA/open-gpu-kernel-modules/blob/595.71.05/src/nvidia/interface/nvrm_registry.h
# https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/procinterface.html
# https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/kernel_open.html
# https://wiki.archlinux.org/title/NVIDIA
# https://wiki.archlinux.org/title/NVIDIA/Troubleshooting
# https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks
# https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers/en
# https://github.com/ventureoo/nvidia-tweaks
# https://github.com/CachyOS/CachyOS-Settings/blob/master/usr/lib/modprobe.d/nvidia.conf
# ==============================================================================
# Memory and Performance
# ==============================================================================
# NVreg_UsePageAttributeTable
# Enables use of the Page Attribute Table (PAT) to set the effective memory
# type of memory mappings to write-combining (WC). PAT is supported on all
# modern x86/x86-64 processors.
#
# When enabled, the driver checks whether the host kernel has already
# configured one of the PAT entries to indicate the WC memory type:
#
# - If the kernel has NOT configured a WC PAT entry: the driver changes the
# second PAT entry from its default (write-through, WT) to WC at module
# load time.
# - If the kernel HAS already configured a WC PAT entry: the driver leaves
# the PAT unmodified.
#
# In both cases, the driver honours attempts to map memory with the WC memory
# type by selecting the appropriate PAT entry using the correct set of PTE
# (page table entry) flags.
#
# ~0 = use the NVIDIA driver's default logic (default)
# 1 = force-enable PAT for WC mappings
# 0 = force-disable PAT for WC mappings
# NVreg_InitializeSystemMemoryAllocations
# Controls whether the driver zeroes system memory before handing it to the
# GPU. The driver normally clears all system memory it allocates to prevent
# potentially sensitive data from being accessible by arbitrary user
# applications. Owners of single-user systems or similar trusted
# configurations may disable this for a performance gain.
#
# Setting to 0 is recommended on KDE 6 + Wayland to prevent issues on
# resume from suspend. Symptoms that indicate the default (1) is causing
# problems:
# - Black screen or freeze after sleep resume
# - Flickering or graphical glitches post-resume
# - Unexpected session restarts
#
# Default: 1
# ==============================================================================
# Device Management
# ==============================================================================
# NVreg_ModifyDeviceFiles
# Controls whether the driver verifies the validity of NVIDIA device files
# in /dev and dynamically modifies and/or recreates them if necessary.
# Only honoured by the NVIDIA GPU driver and NVIDIA capability driver.
# The NVIDIA capability driver also exposes a per-device /proc entry
# (DeviceFileModify=0/1) to override this setting per device file.
# Default: 1
# NVreg_DeviceFileUID
# User ID assigned to NVIDIA device nodes (e.g. /dev/nvidia0) when dynamic
# device file management is enabled (NVreg_ModifyDeviceFiles=1).
# Only honoured by the NVIDIA GPU driver.
# Default: 0 (root)
# NVreg_DeviceFileGID
# Group ID assigned to NVIDIA device nodes when dynamic device file
# management is enabled.
# Only honoured by the NVIDIA GPU driver.
# Default: 0 (root)
# NVreg_DeviceFileMode
# Permission bits (octal) for NVIDIA device nodes when dynamic device file
# management is enabled.
# Only honoured by the NVIDIA GPU driver.
# Default: 0666 (rw-rw-rw-)
# NVreg_EnableNonblockingOpen
# When enabled, opening /dev/nvidiaN with the O_NONBLOCK flag triggers
# device initialisation in the background rather than blocking the caller.
# Improves boot-time latency in environments where GPU init is deferred and
# multiple processes race to open the device.
# Default: 1
# NVreg_GpuInitOnProbe
# Controls whether GPUs are fully initialised at PCI probe time rather than
# deferring initialisation until first use. Enabling this helps on systems
# with multiple GPUs where strict probe ordering is required, or where
# deferred init causes race conditions at boot.
# Default: 0
# ==============================================================================
# PCIe and Display
# ==============================================================================
# NVreg_EnableMSI
# Controls use of PCI Message Signaled Interrupts (MSI) instead of wired
# (pin-based) interrupts. MSI improves compatibility and scalability by
# avoiding IRQ sharing between devices. When enabled and the host kernel
# supports MSI, the driver will use the PCIe MSI capability of supported
# GPUs instead of wired interrupts. Disable if X or CUDA initialisation
# fails, as some hardware has broken MSI support.
# Default: 1
# NVreg_EnablePCIeGen3
# Due to interoperability problems seen with Kepler PCIe Gen3 capable GPUs
# on SandyBridge E desktop platforms, the driver defaults to Gen2 for broad
# compatibility. Gen3 unlocks high-speed 8 GT/s transfers on supported
# hardware.
#
# This is completely unsupported!
#
# Open kernel modules (kernel-open/nvidia/nv-reg.h):
# 0 = force Gen2 (default)
# 1 = enable Gen3
#
# Proprietary driver (additional values from /usr/src/nvidia-*/nvidia/nv-reg.h):
# 0 = force Gen2 (default)
# 1 = enable Gen3 if driver considers it safe
# 2 = same as 1 (legacy alias)
# 3 = force Gen3, overriding driver safety check
# NVreg_EnablePCIERelaxedOrderingMode
# When enabled, sets the registry key RmSetPCIERelaxedOrdering to
# FORCE_ENABLE, causing every device to set the relaxed ordering bit to 1
# in all outbound PCIe MWr transaction-layer packets (TLPs). This is
# equivalent to setting RmSetPCIERelaxedOrdering=FORCE_ENABLE as a global
# RegistryDwords key. May improve GPUDirect RDMA throughput on certain PCIe
# topologies where the interconnect benefits from relaxed ordering.
# Default: 0
# NVreg_RegisterPCIDriver
# Controls whether the driver registers itself with the PCI subsystem.
# Disabling this prevents the driver from claiming any PCI GPU devices.
# Only useful in specialised setups (e.g. SR-IOV host drivers).
# Default: 1
# nvidia_drm.modeset
# Enables kernel modesetting (KMS). Required for Wayland and PRIME Offload.
# Default: 1 since driver ~560. Verify the active state with:
# cat /sys/module/nvidia_drm/parameters/modeset
# If the output is Y, no explicit modprobe.d entry is needed.
# ==============================================================================
# GPU Firmware (GSP)
# ==============================================================================
# NVreg_EnableGpuFirmware
# Controls use of GPU System Processor (GSP) firmware. The GSP offloads GPU
# initialisation and management tasks from the CPU, reducing latency for
# hardware interactions and improving performance.
#
# Declared in nv-firmware-registry.h. The value is split into a 4-bit mode
# field and a 4-bit policy field:
#
# Mode (low nibble, bits 3:0):
# 0x0 (DISABLED) - do not enable GPU firmware
# 0x1 (ENABLED) - enable GPU firmware
# 0x2 (DEFAULT) - use the driver's default enablement policy
#
# Policy (second nibble, bits 7:4):
# 0x10 (ALLOW_FALLBACK) - if the requested mode is not achievable,
# fall back to firmware-disabled init rather
# than failing the GPU. May result in a mixed
# mode system (some GPUs with firmware, some
# without).
# 0x20 (DEFAULT_ON_WS_SERVER) - enable firmware by default on workstation
# server configurations.
#
# Default: 0x12 (DEFAULT mode | ALLOW_FALLBACK policy)
# i.e. use the driver's default enablement with automatic fallback.
#
# When set globally, the driver may enforce uniform firmware modes across
# all GPUs and fail initialisation on some to maintain that policy.
# When set via NVreg_RegistryDwordsPerDevice, the specified configuration
# is honoured per-GPU without additional policy enforcement.
#
# The open kernel modules require GSP to be active at all times. Setting
# mode to 0x0 (disabled) on the open modules introduces known penalties:
# slower GPU initialisation, longer S3/S4/RTD3 latencies, and RTD3
# limited to Ampere and above.
#
# Examples:
# 0x00 = force disable firmware on all GPUs (proprietary driver only)
# 0x01 = force enable firmware, fail GPU if not possible
# 0x11 = force enable firmware, fall back if not possible
# 0x02 = use default policy (equivalent to not setting this key)
# 0x12 = default policy with fallback (compiled-in default)
#
# See:
# https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/gsp.html
# https://www.reddit.com/r/linux_gaming/comments/1ecyo8y/is_disabling_gsp_still_ideal_for_nvidia_cards_on/
# https://forums.developer.nvidia.com/t/306019
# https://forums.developer.nvidia.com/t/298694
# NVreg_EnableGpuFirmwareLogs
# Controls whether the driver sends GSP firmware log output to the system
# journal (dmesg / journalctl). Useful for diagnosing GSP-related failures.
#
# 0 = do not send GPU firmware logs to the system log
# 1 = always enable GPU firmware logs
# 2 = enable GPU firmware logs on debug driver builds only (default)
# ==============================================================================
# Open Kernel Modules and HMM
# ==============================================================================
#
# The NVIDIA driver ships in two mutually exclusive flavors: proprietary and
# open (dual MIT/GPLv2). The open modules are recommended on all supported GPUs
# (Turing and later) and are the only flavor that supports Blackwell and newer.
# Starting with driver 560, the open flavor is the default installation.
#
# Detect which flavor is loaded:
# modinfo nvidia | grep license
# open: license: Dual MIT/GPL
# proprietary: license: NVIDIA
# cat /proc/driver/nvidia/version
# open: NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 ...
# proprietary: NVRM version: NVIDIA UNIX x86_64 Kernel Module ...
#
# The open modules require GSP firmware to be active at all times. Unlike the
# proprietary driver, they cannot operate in GSP-off mode. Setting
# NVreg_EnableGpuFirmware mode bits to 0x0 is therefore invalid for open
# module users.
#
# The following features are exclusive to the open kernel modules and require
# no modprobe directive to activate -- they are enabled automatically when the
# open modules are loaded and the hardware and kernel version qualify:
#
# Heterogeneous Memory Management (HMM)
# Allows GPU threads to directly access CPU-allocated memory (mmap, malloc)
# on PCIe-connected GPUs, extending CUDA Unified Memory without explicit
# transfers. Requires: open modules, CUDA >= 12.2 / driver >= r535,
# kernel >= 6.1.24 with CONFIG_HMM_MIRROR, Turing or later GPU.
# Verify: nvidia-smi -q | grep Addressing --> Addressing Mode : HMM
#
# Magnum IO GPUDirect Storage (GDS)
# NVIDIA Confidential Computing
# CPU affinity for GPU fault handlers
# DMABUF support for CUDA allocations
#
# See:
# https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/kernel_open.html
# https://developer.nvidia.com/blog/simplifying-gpu-application-development-with-heterogeneous-memory-management/
# NVreg_EnableSystemMemoryPools (open modules only)
# Controls system memory page pool creation. Pools cache freed pages to
# speed up reallocation. Pools are shared by all adapters.
# Each bit enables a pool for a specific page size using the formula:
# bit = (page_size_bytes >> 12) [NV_ENABLE_SYSTEM_MEMORY_POOLS_SHIFT = 12]
# So:
# bit 0 (0x001) = 4K pages (1 << 12 = 4096)
# bit 4 (0x010) = 64K pages (1 << 16 = 65536)
# bit 9 (0x200) = 2M pages (1 << 21 = 2097152)
# Default: 0x211 (4K + 64K + 2M pools enabled)
# Only supported by the open kernel modules (OpenRM).
# NVreg_CoherentGPUMemoryMode (string, open modules only)
# Controls how GPU memory is accessed through the coherent CPU-GPU link.
# Only relevant on platforms that support onlining GPU memory to the OS
# as a NUMA node (e.g. NVLink-connected systems, not standard PCIe).
#
# "driver" = disable NUMA onlining; driver manages coherent memory directly
# "numa" = enable NUMA onlining to the OS (default when unset)
#
# Note: GPUDirect Storage (GDS) is not supported when CDMM is active.
# See: https://docs.nvidia.com/datacenter/tesla/tesla-release-notes-595-71-05/index.html
# NVreg_OpenRmEnableUnsupportedGpus
# Was required in early open module releases (515-545) to opt in GeForce
# and Workstation GPUs. Deprecated and ignored as of driver ~560.
# Left in the parameter table for backwards compatibility.
# ==============================================================================
# GPU Selection and Exclusion
# ==============================================================================
# NVreg_ExcludedGpus (string)
# Comma-separated list of GPU UUIDs that the driver will not attach to or
# use. Each GPU is identified by its UUID in ASCII format with a leading
# "GPU-" prefix. Exact match is required; partial UUIDs are not accepted.
# Use nvidia-smi -L to list GPU UUIDs.
# Usage: options nvidia NVreg_ExcludedGpus="GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# NVreg_GpuBlacklist (string)
# Deprecated alias for NVreg_ExcludedGpus. Accepts the same comma-separated
# UUID format. Will be removed in a future driver release.
# Use NVreg_ExcludedGpus instead.
# NVreg_ExcludeAllGpus
# When set to 1, excludes all GPUs from being attached or used. If used
# alongside NVreg_ExcludedGpus, all GPUs are excluded regardless of the
# UUID list. Useful for SR-IOV host configurations or when the NVIDIA driver
# should load without claiming any GPU devices.
# Default: 0
# ==============================================================================
# NVLink
# ==============================================================================
# NVreg_NvLinkDisable
# When enabled, the driver will not attempt to initialise or train NVLink
# connections for any GPU. Has no effect if no GPUs in the system support
# NVLink. A system reboot is required for changes to take effect.
# Useful when NVLink initialisation causes instability in multi-GPU setups.
# Default: 0
# NVreg_RmNvlinkBandwidth (string)
# Reduces NVLink P2P bandwidth to save power. The value is a string token.
# Only effective on Hopper+ GPUs with NVLink version 4.0.
#
# "OFF" = 0% bandwidth
# "MIN" = 15-25% bandwidth (varies with NVLink topology)
# "HALF" = 50% bandwidth
# "3QUARTER" = 75% bandwidth
# "FULL" = 100% bandwidth (default, no throttling)
#
# Usage: options nvidia NVreg_RmNvlinkBandwidth="HALF"
# NVreg_RmNvlinkBandwidthLinkCount
# Reduces the number of active NVLink links to save power. Works alongside
# NVreg_RmNvlinkBandwidth for finer-grained NVLink power control.
# Only effective on Blackwell+ GPUs with NVLink version 5.0.
# Default: 0 (no reduction)
# ==============================================================================
# GPUDirect and Advanced Memory
# ==============================================================================
# NVreg_DmaRemapPeerMmio
# Controls whether the driver uses kernel DMA-remapping APIs when creating
# peer MMIO mappings for GPUDirect. When enabled, the driver requests proper
# IOMMU mappings for peer device MMIO regions. When disabled, only a fixed
# offset is applied to the CPU physical address to produce the DMA address --
# no IOMMU mappings are created.
#
# Disabling may be necessary on platforms where the IOMMU interferes with
# peer MMIO mappings, but reduces memory access isolation guarantees.
# This option only affects peer MMIO DMA mappings; system memory mappings
# are unaffected.
#
# Default: 1
# NVreg_EnableResizableBar
# When enabled, the driver attempts to resize BAR1 to match the framebuffer
# size (or the next largest available size) on supported machines. Allows the
# CPU to address the full GPU framebuffer as a single PCIe BAR region rather
# than the traditional 256 MB window. Can enhance GPUDirect RDMA performance
# and reduce CPU overhead for large buffer transfers.
# Requires BIOS/UEFI and PCIe topology support. Linux only.
# Default: 0
# NVreg_EnableStreamMemOPs
# Enables CUDA Stream Memory Operations (memop) in user-mode applications,
# allowing fine-grained synchronisation primitives such as cuStreamWaitValue32.
# Treated as a hint; the CUDA driver may still disable them for other reasons
# (e.g. devtools compatibility).
# Requires nvidia.ko >= 510.40.3. Must be combined with PeerMappingOverride=1:
# options nvidia NVreg_EnableStreamMemOPs=1 \
# NVreg_RegistryDwords="PeerMappingOverride=1;"
# Default: 0
#
# See:
# https://forums.developer.nvidia.com/t/does-modprobe-d-nvidia-conf-nvreg-enablestreammemops-need-to-be-set-for-gpudirect-to-work/79511
# https://docs.nvidia.com/nvshmem/release-notes-install-guide/install-guide/abstract.html
# https://docs.nvidia.com/nvshmem/pdf/NVSHMEM-Installation-Guide.pdf
# https://nvdam.widen.net/s/k8vrp9xkft/tech-overview-magnum-io-1790750-r5-web
# https://developer.download.nvidia.com/devzone/devcenter/cuda/docs/GPUDirect_Technology_Overview.pdf
# NVreg_GrdmaPciTopoCheckOverride
# Overrides the PCIe topology validation enforced by the driver's dma-buf
# and nv-p2p subsystems. By default the driver uses the PCIe topology to
# determine whether peer-to-peer access should be allowed or denied.
#
# 0 = use driver's topology check (default)
# 1 = override to allow access regardless of topology
# 2 = override to deny access regardless of topology
#
# Value 1 is useful when GPUDirect is required across a PCIe switch topology
# that the driver's checker incorrectly rejects. Value 2 can be used to
# explicitly forbid peer access in security-sensitive environments.
# ==============================================================================
# CUDA / IMEX (Multi-user Secure Memory Sharing)
# ==============================================================================
#
# IMEX (Import/Export) channels allow CUDA processes to securely share fabric
# memory handles across users within an IMEX domain. An IMEX domain is either
# a single OS instance or a group of securely connected OS instances managed
# by the NVIDIA IMEX daemon.
#
# The driver does not create the /dev nodes for IMEX channels automatically.
# CUDA fabric handle APIs will fail with an insufficient permission error until
# the administrator creates the nodes:
# /dev/nvidia-caps-imex-channels/channelN
# where N is the minor number. Query the major number from /proc/devices.
# nvidia-modprobe can create these nodes; NVreg_ModifyDeviceFiles,
# NVreg_DeviceFileUID, NVreg_DeviceFileGID, and NVreg_DeviceFileMode are
# all honoured by nvidia-modprobe for IMEX channel nodes.
# NVreg_ImexChannelCount
# Number of IMEX channels to enable. Each channel allows one concurrent user
# to share memory securely within the IMEX domain. Must be set to the same
# value on every OS instance in the domain.
# 0 = disable IMEX (CUDA fabric handle APIs are unavailable)
# N = enable N channels (default: 2048)
# Maximum = 20-bit minor number limit (same as Linux dev_t)
# NVreg_CreateImexChannel0
# When enabled, the driver automatically creates IMEX channel 0 at module
# load time. Only enable in trusted environments where it is acceptable for
# all applications to share the same IMEX channel. In multi-tenant
# environments, leave disabled and create channels explicitly.
# Refer to NVreg_ImexChannelCount for full context.
# Default: 0
# ==============================================================================
# Suspend / Resume
# ==============================================================================
# NVreg_PreserveVideoMemoryAllocations
# Controls preservation of video memory contents across suspend/resume and
# hibernate/restore cycles. Eliminates texture/buffer re-uploads after resume
# and prevents Wayland compositor flickering.
#
# 0 (DISABLED) = preserve only select (driver-chosen) allocations
# 1 (ENABLED) = preserve all video memory allocations
# 2 (AUTO) = automatically enable preservation when
# NVreg_UseKernelSuspendNotifiers is enabled (default)
#
# On systems where VRAM exceeds available system RAM and disk spill is
# required, also configure NVreg_TemporaryFilePath.
# Default: 2
# NVreg_UseKernelSuspendNotifiers
# Registers the driver with the kernel's generic suspend/resume notifier
# chain rather than relying solely on the driver's internal PM hooks.
# Improves coordination during S3/S4 transitions, reducing the risk of GPU
# state corruption on resume.
#
# When using the open kernel modules, enabling this automatically triggers
# NVreg_PreserveVideoMemoryAllocations=2 (AUTO) behaviour. For the
# proprietary driver, suspend coordination is instead managed by dedicated
# systemd units: nvidia-suspend.service, nvidia-hibernate.service, and
# nvidia-resume.service.
#
# 0 = do not use kernel suspend notifiers (default)
# 1 = use kernel suspend notifiers when available
# NVreg_EnableS0ixPowerManagement
# Enables S0ix-based (suspend-to-idle) power management for system
# suspend/resume on platforms and GPUs that support it. S0ix keeps the
# system in a low-power active state rather than fully powering down.
#
# During S0ix suspend, the driver compares VRAM usage against the threshold
# set by NVreg_S0ixPowerManagementVideoMemoryThreshold:
# - At or below threshold: VRAM kept in self-refresh; rest of GPU powers down.
# - Above threshold: VRAM contents copied to system memory; GPU powers off.
#
# 0 = disable S0ix power management (default)
# 1 = enable S0ix power management
# NVreg_S0ixPowerManagementVideoMemoryThreshold
# VRAM usage threshold in MB for the S0ix self-refresh vs. copy decision.
# See NVreg_EnableS0ixPowerManagement for the full context.
# Only relevant when NVreg_EnableS0ixPowerManagement=1.
# Default: 256
# NVreg_TemporaryFilePath (string)
# Directory used to spill VRAM contents to disk during suspend when
# NVreg_PreserveVideoMemoryAllocations=1 is active and VRAM exceeds
# available system RAM. Must be a directory, writable by the kernel at
# suspend time, on a filesystem with sufficient free space. Network and
# FUSE mounts are not suitable.
# /var/tmp is preferred over /tmp because it is typically not a tmpfs and
# survives the suspend boundary on most distributions.
# Default: /tmp
#
# See: https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/powermanagement.html
# ==============================================================================
# Power Management (RTD3)
# ==============================================================================
# NVreg_DynamicPowerManagement
# Configures runtime D3 (RTD3) power management, allowing the GPU to enter
# low-power states when idle. Most effective on laptops and hybrid
# (iGPU + dGPU) systems.
#
# Declared as NvU32; the kernel module_param system accepts hex notation.
# Values are a named integer enum, not a bitmask:
#
# 0x00 (NEVER) - never allow the GPU to be powered down; fully powered
# at all times.
# 0x01 (COARSE) - power down when no application is using the NVIDIA
# driver stack; return to active state on demand.
# 0x02 (FINE) - actively monitor GPU activity; power down after a short
# idle period even while applications are running. A GPU
# driving a display or a CUDA workload remains active
# unless HardDPMS is also configured.
# 0x03 (DEFAULT) - apply FINE on Ampere or later notebooks; do not power
# down on desktop or pre-Ampere systems (default).
#
# Default: 0x03
#
# See: https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/dynamicpowermanagement.html
# NVreg_DynamicPowerManagementVideoMemoryThreshold
# VRAM usage threshold in MB for the RTD3 power-down decision.
# When the driver detects the GPU is idle, it compares current VRAM usage
# against this threshold:
#
# Below threshold: driver saves VRAM contents to system memory first, then
# powers off VRAM and the GPU together (deeper power saving, slower resume).
# Above threshold: VRAM is kept in self-refresh while the rest of the GPU
# powers down (shallower power saving, faster resume).
#
# Values above 200 MB are silently capped to 200 MB.
# Default: 200
# NVreg_UseFBDefExclusionArea
# Reserves an exclusion area for the framebuffer to prevent conflicts between
# the driver's memory mappings and the system physical memory map. Enhances
# stability on some firmware configurations.
# Not defined in the open module nv-reg.h; proprietary driver only.
# ==============================================================================
# Security
# ==============================================================================
# NVreg_RestrictProfilingToAdminUsers
# When enabled, prevents users without CAP_SYS_ADMIN from accessing GPU
# performance counters. Mitigates side-channel attacks that exploit hardware
# performance monitoring units (PMUs).
# Disable only in environments where non-privileged GPU profiling is
# explicitly required (e.g. developer workstations running Nsight).
#
# Note: the internal parameter name is RmProfilingAdminOnly; the module
# parameter exposed to modprobe.d is RestrictProfilingToAdminUsers.
#
# Default: 1
# ==============================================================================
# Registry Overrides (NVreg_RegistryDwords)
# ==============================================================================
#
# Passes internal driver settings directly to the Resource Manager (RM) as a
# semicolon-delimited list of key=value pairs. Each key name is first checked
# against the table of static options; matching entries override the static
# value. Non-matching entries are forwarded to the RM directly.
#
# Usage: options nvidia NVreg_RegistryDwords="Key1=Val1;Key2=Val2;"
#
# Per-GPU variant (NVreg_RegistryDwordsPerDevice):
# Applies registry keys to a specific GPU identified by its PCIe BDF.
# The first key=value pair MUST be "pci=DDDD:BB:DD.F;" to identify the GPU.
# If no GPU matches the BDF, all following keys are skipped until the next
# valid "pci=..." entry. Valid BDF formats:
# bus:slot (domain and function default to 0)
# domain:bus:slot (function defaults to 0)
# domain:bus:slot.func (complete identifier)
# Usage:
# options nvidia NVreg_RegistryDwordsPerDevice="pci=0000:01:00.0;Key=Val;"
#
# Enumerate all RM registry keys from firmware blobs (for RegistryDwords):
# rg -zaoN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \
# | cut -d: -f2- | sort -u
# rg -zaioN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \
# | cut -d: -f2- | sort -u
# Full key list: src/nvidia/interface/nvrm_registry.h
#
# Selected keys:
#
# RMIntrLockingMode (experimental)
# Tightens interrupt locking to improve frame-pacing consistency. Most
# impactful at high refresh rates and in PRIME configurations where the dGPU
# drives an external monitor with VRR, or in VR headset setups.
#
# Example: at 240 Hz, each frame is expected every 4 ms. If a 1 ms kernel
# or GSP task preempts just before a frame deadline, the sequence shifts
# from ideal T+4, T+8, T+12 ms to T+4, T+9, T+12 ms -- perceptible stutter
# at high refresh rates. This setting reduces that jitter.
#
# Default: 0
# Note: experimental; may not be suitable for all systems.
# Usage: options nvidia NVreg_RegistryDwords="RMIntrLockingMode=1;"
#
# PeerMappingOverride
# Forces specific peer memory mapping behaviour required for GPUDirect Async.
# Must be set alongside NVreg_EnableStreamMemOPs=1.
# Usage: options nvidia NVreg_RegistryDwords="PeerMappingOverride=1;"
# See: https://docs.nvidia.com/nvshmem/install-guide/index.html
#
# RMUseSwI2c (if available)
# Enables the software-based I2C implementation. Useful on systems where
# hardware I2C support is unreliable (e.g. DDC/CI failures on some monitors).
# Default: 0
# Usage: options nvidia NVreg_RegistryDwords="RMUseSwI2c=0x01;"
# See: https://www.ddcutil.com/nvidia/
#
# RMI2cSpeed (if available)
# Sets the I2C bus speed in kHz. Adjusting this can resolve monitor DDC/CI
# communication issues when the default speed causes timeouts.
# Default: driver-determined
# Usage: options nvidia NVreg_RegistryDwords="RMI2cSpeed=100;"
# See: https://www.ddcutil.com/nvidia/
#
# OverrideMaxPerf (if available)
# Forces the GPU to operate at a specific performance level.
# 0x1 forces maximum power-saving mode.
# Default: 0
# Usage: options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x1;"
# See: https://forums.developer.nvidia.com/t/145573
#
# PowerMizerEnable / PerfLevelSrc (if available)
# Controls NVIDIA PowerMizer dynamic performance scaling.
# Note: removed as of driver 530.41.03.
# See: https://forums.developer.nvidia.com/t/247610
#
# NVreg_RMFailAllocCount (if available)
# Number of retry attempts for RM memory allocation failures.
# Usage: options nvidia NVreg_RegistryDwords="NVreg_RMFailAllocCount=N;"
#
# NVreg_RMFailAllocTimeout (if available)
# Timeout in ms for RM memory allocation attempts.
# Usage: options nvidia NVreg_RegistryDwords="NVreg_RMFailAllocTimeout=N;"
# ==============================================================================
# Platform-Specific Options
# ==============================================================================
#
# The following options are only relevant on specific non-desktop platforms.
# They have no effect on standard Linux x86 desktop/laptop configurations.
# NVreg_EnableUserNUMAManagement
# Requires the NVIDIA Persistence daemon to manage onlining and offlining
# of NUMA device memory. Only relevant on POWER9 systems that support
# onlining GPU device memory to a NUMA node.
# Default: 1
# NVreg_MemoryPoolSize (VMware ESXi only)
# Size of the memory pool in GB created on VMware ESXi to satisfy system
# memory allocations requested by the kernel module.
# Default: 0 (disabled)
# NVreg_KMallocHeapMaxSize (VMware ESXi only)
# Maximum size in MB of the kmalloc heap memory space reserved for the
# kernel module on VMware ESXi.
# Default: 0
# NVreg_VMallocHeapMaxSize (VMware ESXi only)
# Maximum size in MB of the vmalloc heap memory space reserved for the
# kernel module on VMware ESXi.
# Default: 0
# NVreg_IgnoreMMIOCheck (VMware ESXi only)
# Ignores the MMIO limit check during device probe on VMware ESXi.
# Needed when the MMIO limit differs between a base ESXi version and its
# updates, causing probe failure.
# Default: 0
# NVreg_TegraGpuPgMask (Tegra iGPU only)
# Controls the TPC/GPC/FBP power-gating mask for Tegra integrated GPUs.
# Default: ~0
# NVreg_RegisterPlatformDeviceDriver (Tegra / embedded only)
# Controls whether the driver registers itself with the platform subsystem.
# Only relevant on embedded Tegra systems with platform-enumerated GPUs.
# Default: 1
# ==============================================================================
# nvidia_drm module parameters
# ==============================================================================
#
# Set via: options nvidia_drm <param>=<value>
# nvidia_drm.modeset (bool)
# Enables atomic kernel modesetting (KMS). Required for Wayland and PRIME
# Offload. Default: true (1) since driver ~560.
# Verify the active state with:
# cat /sys/module/nvidia_drm/parameters/modeset
# If the output is Y, no explicit modprobe.d entry is needed.
# nvidia_drm.fbdev (bool)
# Creates a /dev/fbN framebuffer device backed by the NVIDIA DRM driver.
# Required for fbcon (Linux framebuffer console) on NVIDIA GPUs. Only
# compiled in when the kernel provides the necessary fbdev infrastructure
# (NV_DRM_FBDEV_AVAILABLE). When present, disabling this prevents the
# driver from registering a framebuffer device, which can be useful in
# environments where fbdev conflicts with another driver or is simply
# not needed.
# Default: true (1)
# Usage: options nvidia_drm modeset=1 fbdev=1
# ==============================================================================
# nvidia_modeset module parameters
# ==============================================================================
#
# nvidia_modeset implements the NVIDIA KMS driver (NVKMS). These parameters
# control display output behaviour and are set via:
# options nvidia_modeset <param>=<value>
#
# Parameters are read-only after module load (permission 0400) except
# where noted.
# nvidia_modeset.hdmi_deepcolor (bool)
# Enables HDMI deep color output (10-bit or 12-bit colour depth) on
# supported displays and GPUs. When disabled the driver limits HDMI output
# to standard 8-bit colour. Disabling may help with monitors that report
# deep color support but display incorrectly at higher bit depths.
# Default: true (1)
# nvidia_modeset.output_rounding_fix (bool)
# Enables a fixup for output rounding artefacts on certain display
# configurations. Disabling this is occasionally needed as a workaround
# for display corruption on specific monitor/GPU combinations.
# Default: true (1)
# nvidia_modeset.disable_hdmi_frl (bool)
# Disables HDMI Fixed Rate Link (FRL), the high-bandwidth signalling mode
# used by HDMI 2.1. When disabled, the driver falls back to HDMI TMDS
# (Traditional Mode), limiting bandwidth to the HDMI 2.0 ceiling (~18 Gbps).
# Set to true if an HDMI 2.1 cable or monitor behaves incorrectly with FRL
# enabled.
# Default: false (0)
# nvidia_modeset.disable_vrr_memclk_switch (bool)
# Disables the automatic memory clock switch that the driver performs when
# entering or exiting VRR (Variable Refresh Rate / G-Sync / FreeSync) mode.
# The memclk switch ensures adequate bandwidth for VRR operation; disabling
# it may reduce display flickering during VRR transitions on some systems
# at the cost of potential bandwidth limitations.
# Default: false (0)
# nvidia_modeset.opportunistic_display_sync (bool)
# Enables opportunistic display synchronisation, where the driver takes
# advantage of available vblank time to improve frame delivery timing
# without explicit sync requests. Disabling may help diagnose pacing
# issues in specific multi-monitor or VRR configurations.
# Default: true (1)
# nvidia_modeset.enable_overlay_layers (bool)
# Enables use of hardware overlay planes for compositing. When enabled,
# the DRM/KMS subsystem can assign surfaces to dedicated overlay hardware
# rather than blending them all in the primary plane. Disabling forces all
# output through the primary plane, which may be required as a workaround
# for compositing artefacts on certain display configurations.
# Default: true (1)
# nvidia_modeset.conceal_vrr_caps (bool)
# When enabled, the driver hides all VRR (G-Sync / FreeSync) capabilities
# from the display subsystem, preventing any application or compositor from
# enabling VRR. Intended for testing and for environments where VRR causes
# display instability.
# Default: false (0)
# nvidia_modeset.config_file (string)
# Path to an nvidia-modeset (NVKMS) configuration file that overrides
# display parameters such as colour space, HDR settings, and output
# attributes on a per-connector basis. When unset, no configuration file
# is loaded. Only available when compiled with NVKMS_CONFIG_FILE_SUPPORTED.
# Default: NULL (disabled)
# Usage: options nvidia_modeset config_file=/etc/nvidia/modeset.conf
# ==============================================================================
# nvidia_uvm module parameters
# ==============================================================================
#
# nvidia_uvm implements CUDA Unified Virtual Memory. These parameters control
# UVM migration policy, memory placement, and HMM behaviour.
# Set via: options nvidia_uvm <param>=<value>
#
# Debug and test-only parameters (uvm_debug_prints, uvm_enable_builtin_tests,
# uvm_release_asserts_*, uvm_leak_checker, uvm_enable_debug_procfs,
# uvm_debug_enable_push_*, uvm_fault_force_sysmem) are omitted.
# nvidia_uvm.uvm_disable_hmm (bool)
# Force-disables Heterogeneous Memory Management (HMM) in the UVM driver,
# preventing GPU threads from directly faulting on CPU-allocated memory.
# HMM is enabled by default on supported CPU architectures (x86_64 with
# kernel >= 6.1.24 and CONFIG_HMM_MIRROR) and disabled by default on
# unsupported ones. Setting this to true disables HMM unconditionally,
# falling back to explicit memory transfers for Unified Memory.
# Useful for isolating HMM-related faults or when HMM causes instability.
# Default: false on supported architectures; true elsewhere
# Verify: nvidia-smi -q | grep Addressing
# nvidia_uvm.uvm_ats_mode (int)
# Controls ATS (PCIe Address Translation Services) for UVM. ATS allows the
# GPU to access CPU virtual addresses directly via PCIe without requiring
# the UVM fault handler. Only has effect on platforms with hardware ATS
# support (e.g. IBM POWER9/10 with NVLink, or future x86 ATS-capable PCIe).
# Set to 0 to disable ATS; any other value leaves ATS enabled where available.
# Default: 1
# nvidia_uvm.uvm_peer_copy (string)
# Selects the addressing mode used for peer (GPU-to-GPU) memory copies.
# Only valid on Ampere and later GPUs.
#
# "phys" = use physical addressing for peer copies (default)
# "virt" = use virtual addressing for peer copies
#
# Virtual addressing may improve compatibility in certain multi-GPU
# topologies but can have performance implications.
# Default: "phys"
# nvidia_uvm.uvm_page_table_location (string)
# Sets the memory location for UVM-allocated GPU page tables.
#
# "vid" = place page tables in GPU video memory (VRAM)
# "sys" = place page tables in system memory
#
# When unset, the driver selects automatically based on available VRAM
# and access pattern heuristics. Forcing "sys" can reduce VRAM pressure
# in memory-constrained workloads.
# Default: NULL (automatic)
# nvidia_uvm.uvm_global_oversubscription (int)
# Enables or disables global memory oversubscription for UVM allocations.
# When enabled (1), UVM may allocate more virtual memory than is backed by
# physical memory, relying on demand paging to migrate pages on fault.
# Disabling (0) prevents oversubscription, causing allocations to fail
# eagerly if physical backing is insufficient.
# Default: 1
# nvidia_uvm.uvm_enable_va_space_mm (int)
# Controls whether UVM uses mmu_notifiers to associate a UVM VA space with
# a process's mm_struct. When enabled, UVM can track process address space
# changes and invalidate GPU mappings correctly on fork, munmap, and exec.
# Disabling may be necessary on kernels where mmu_notifier support is
# incomplete or buggy, but can cause stale GPU mappings after address space
# changes.
# Default: 1
# nvidia_uvm.uvm_perf_access_counter_migration_enable (int)
# Controls whether GPU hardware access counters trigger automatic page
# migration from remote (e.g. system) memory to local GPU memory. Access
# counters track frequency of remote accesses and can initiate proactive
# migration to reduce latency.
# -1 or below = use the driver's default policy (default)
# 0 = disable access counter migrations
# 1 or above = enable access counter migrations
# nvidia_uvm.uvm_perf_access_counter_threshold (uint)
# Number of remote memory accesses on a region required before an access
# counter notification is triggered. Lower values cause more aggressive
# migration; higher values reduce migration overhead at the cost of more
# remote accesses. Valid range: 1 to 65535.
# Only relevant when uvm_perf_access_counter_migration_enable >= 1.
# nvidia_uvm.uvm_channel_gpfifo_loc (string)
# nvidia_uvm.uvm_channel_gpput_loc (string)
# nvidia_uvm.uvm_channel_pushbuffer_loc (string)
# Control the memory location of UVM internal channel data structures:
# the GPFIFO ring buffer, the GPPUT doorbell, and the pushbuffer.
#
# "auto" = driver selects based on GPU architecture and topology (default)
# "vid" = place in GPU video memory
# "sys" = place in system memory
#
# Forcing to "sys" can help on systems where GPU memory bandwidth to
# internal structures causes contention, at the cost of higher PCIe
# latency for channel operations.
# Default: "auto" for all three
# ==============================================================================
# nvidia_peermem module parameters
# ==============================================================================
#
# nvidia_peermem provides GPUDirect RDMA support by registering with the
# kernel peer memory framework, allowing RDMA NICs (e.g. Mellanox/NVIDIA
# ConnectX) to map GPU memory directly without CPU involvement.
# Set via: options nvidia_peermem <param>=<value>
# nvidia_peermem.peerdirect_support (int)
# Selects the level of peer-direct (GPUDirect RDMA) support.
#
# 0 = standard (default): use the current nv_peer_mem API
# 1 = legacy: use the older API required by MLNX_OFED 4.9 LTS and
# similar older InfiniBand stacks that do not support the current API
#
# Only change this if the RDMA driver stack logs errors about unsupported
# peer memory operations, or if the IB driver package explicitly documents
# requiring legacy mode.
# Default: 0
# nvidia_peermem.persistent_api_support (int)
# Selects the level of support for the persistent peer memory API, which
# allows RDMA registrations to survive GPU reset events.
#
# 0 = legacy: do not use the persistent API
# 1 = current: use the persistent API (default)
#
# Set to 0 when using older RDMA stacks that do not implement the
# persistent peer memory interface.
# Default: 1
# ==============================================================================
# Diagnostics
# ==============================================================================
#
# nvidia-settings -q all -t
# cat /proc/driver/nvidia/params
# cat /proc/driver/nvidia/version
# cat /proc/driver/nvidia/gpus/*/power
# cat /proc/driver/nvidia/gpus/*/information
# modinfo nvidia nvidia_drm nvidia_uvm nvidia_modeset nvidia_peermem typec_nvidia \
# nvidia_wmi_ec_backlight i2c_nvidia_gpu
#
# Per-module active parameter values:
# sudo systool -m nvidia -v
# sudo systool -m nvidia_drm -v
# sudo systool -m nvidia_modeset -v
# sudo systool -m nvidia_uvm -v
# sudo systool -m nvidia_peermem -v
#
# Or via /sys directly:
# ls /sys/module/nvidia/parameters/
# ls /sys/module/nvidia_drm/parameters/
# ls /sys/module/nvidia_modeset/parameters/
# ls /sys/module/nvidia_uvm/parameters/
# ls /sys/module/nvidia_peermem/parameters/
#
# Open vs proprietary flavor:
# modinfo nvidia | grep license
# cat /proc/driver/nvidia/version
#
# GSP firmware mode active on each GPU:
# cat /proc/driver/nvidia/gpus/*/information | grep -i firmware
#
# HMM addressing mode (open modules only):
# nvidia-smi -q | grep Addressing
#
# GPU UUIDs (for NVreg_ExcludedGpus):
# nvidia-smi -L
#
# NVLink topology:
# nvidia-smi topo -m
#
# PCIe BAR and ReBAR state:
# lspci -vvv -s <BDF> | grep -i "memory\|bar\|resizable"
# cat /sys/bus/pci/devices/<BDF>/resource
#
# IOMMU groups (for GPUDirect topology verification):
# find /sys/kernel/iommu_groups -type l | sort -V
#
# RTD3 / power state:
# cat /proc/driver/nvidia/gpus/*/power
# cat /sys/bus/pci/devices/<BDF>/power/runtime_status
#
# IMEX channel nodes:
# ls /dev/nvidia-caps-imex-channels/
# cat /proc/devices | grep nvidia
#
# Enumerate GSP/RM RegistryDwords keys from firmware blobs:
# rg -zaoN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \
# | cut -d: -f2- | sort -u
# rg -zaioN --no-heading "\bRM[a-zA-Z0-9_]{4,}\b" /usr/lib/firmware/nvidia \
# | cut -d: -f2- | sort -u
# ==============================================================================
# Active Configuration
# ==============================================================================
# NVreg_DynamicPowerManagement is also configured via udev:
# /lib/udev/rules.d/80-nvidia-pm.rules
# https://download.nvidia.com/XFree86/Linux-x86_64/595.71.05/README/dynamicpowermanagement.html#AutomatedSetup803b0
# NVreg_EnableGpuFirmware=0x00 disables GSP entirely. Valid for the proprietary
# driver only. The open kernel modules cannot operate without GSP; use 0x12
# (the compiled default) or omit this line entirely when using open modules.
options nvidia \
NVreg_UsePageAttributeTable=1 \
NVreg_DynamicPowerManagement=0x02 \
NVreg_EnableGpuFirmware=0x00 \
NVreg_RegistryDwords="RMIntrLockingMode=1;"
# nvidia_drm.modeset=1 is the compiled default since driver ~560.
# Confirm the active state with: cat /sys/module/nvidia_drm/parameters/modeset
# options nvidia_drm modeset=1
# i2c_nvidia_gpu: in-kernel driver for I2C over the GPU's USB Type-C /
# DisplayPort Alt Mode port. Conflicts with the proprietary NVIDIA driver's own
# I2C stack -- causing duplicate bus registrations, DDC/CI failures, or driver
# load errors on some configurations. Blacklisted here in favour of the NVIDIA
# driver handling I2C internally. Remove if you use Type-C DP Alt Mode and
# encounter display detection issues.
blacklist i2c_nvidia_gpu
# nova_core / nova_drm: NVIDIA's experimental in-tree Rust-based GPU driver
# (Nova), present on kernels built with CONFIG_NOVA_CORE. Conflicts with the
# out-of-tree nvidia.ko / nvidia_drm.ko. Blacklisted automatically by
# nvidia-utils; add the lines below on custom installs without nvidia-utils.
# blacklist nova_core
# blacklist nova_drm
###############################################################################
# /etc/environment
#
# To reload the Wayland environment, run:
# kwin_wayland --replace
# env KEY=VAL KEY2=VAL2 ... kwin_wayland --replace
###############################################################################
###############################################################################
# Vendor / Graphics Driver Settings
###############################################################################
# __GL_VRR_ALLOWED
# Enables Variable Refresh Rate (VRR) support for NVIDIA drivers.
# Set to 1 to allow VRR for smoother display output on compatible monitors.
#__GL_VRR_ALLOWED=1
# __GL_GSYNC_ALLOWED
# Enables NVIDIA G-SYNC functionality for supported displays.
# Set to 1 to allow G-SYNC for reduced screen tearing.
#__GL_GSYNC_ALLOWED=1
# __GL_SYNC_TO_VBLANK
# Synchronizes OpenGL rendering with the display’s vertical blank.
# Set to 1 to enable vertical synchronization (vsync) and minimize tearing.
#__GL_SYNC_TO_VBLANK=1
# __GL_THREADED_OPTIMIZATIONS
# Enables threaded optimizations in OpenGL.
# Set to 1 to allow multi-threaded improvements in rendering performance.
#__GL_THREADED_OPTIMIZATIONS=1
# __GL_YIELD
# Controls whether OpenGL should yield processing time to other threads.
# Set to 1 to yield processor time during intensive rendering.
#__GL_YIELD=1
# __GLX_VENDOR_LIBRARY_NAME
# Specifies the vendor library to use for GLX.
# This variable is used to select the appropriate graphics driver.
# For NVIDIA proprietary drivers, set to "nvidia".
#__GLX_VENDOR_LIBRARY_NAME=nvidia
# LIBGL_DEBUG
# Activates debug output for Mesa’s libGL.
# Useful for troubleshooting OpenGL issues (e.g., set to "verbose").
#LIBGL_DEBUG=verbose
# MESA_DEBUG
# Enables additional debugging output from the Mesa graphics library.
# Set to 1 for enhanced debugging information.
#MESA_DEBUG=1
# MESA_NO_ERROR
# Disables Mesa’s error checking to improve performance.
# Set to 1 to disable error reporting (use with caution).
#MESA_NO_ERROR=1
# MESA_GL_VERSION_OVERRIDE
# Overrides the OpenGL version reported by Mesa.
# Useful for testing compatibility with specific OpenGL versions.
#MESA_GL_VERSION_OVERRIDE=...
# MESA_GLES_VERSION_OVERRIDE
# Overrides the OpenGL ES version reported by Mesa.
# Useful for compatibility testing on mobile or embedded systems.
#MESA_GLES_VERSION_OVERRIDE=...
# MESA_SHADER_CACHE_DISABLE
# Disables the shader caching mechanism in Mesa.
# Set to 1 to disable caching (typically for debugging purposes).
#MESA_SHADER_CACHE_DISABLE=1
# VDPAU_DRIVER
# Specifies the VDPAU (Video Decode and Presentation API for Unix) driver to use.
# For NVIDIA, set to "nvidia" to enable proper video decoding acceleration.
#VDPAU_DRIVER=nvidia
# __NV_PRIME_RENDER_OFFLOAD
# Enables NVIDIA Prime Render Offload for offloading rendering tasks to the NVIDIA GPU.
# Set to 1 to activate offloading for hybrid graphics configurations.
#__NV_PRIME_RENDER_OFFLOAD=1
###############################################################################
# Additional OpenGL Driver Options
###############################################################################
# __GL_ALLOW_FXAA_USAGE
# Allows the use of Fast Approximate Anti-Aliasing (FXAA) to smooth jagged edges.
# Set to 1 to enable FXAA.
#__GL_ALLOW_FXAA_USAGE=1
# __GL_ALLOW_UNOFFICIAL_PROTOCOL
# Allows usage of unofficial or non-standard OpenGL protocols.
# Set to 1 to enable such protocols.
#__GL_ALLOW_UNOFFICIAL_PROTOCOL=1
# __GL_ConformantBlitFramebufferScissor
# Enforces conformant scissor behavior during framebuffer blit operations.
# Set to 1 to standardize scissor operations during blit.
#__GL_ConformantBlitFramebufferScissor=1
# __GL_DOOM3
# Enables specific optimizations or compatibility features for the Doom 3 engine.
# Set to 1 to activate Doom 3–related rendering adjustments.
#__GL_DOOM3=1
# __GL_ExtensionStringVersion
# Overrides the reported version of the OpenGL extension string.
# Useful for compatibility with applications expecting a specific extension version.
#__GL_ExtensionStringVersion=...
# __GL_FSAA_MODE
# Sets the Full-Scene Anti-Aliasing (FSAA) mode for rendering.
# Specify an integer value corresponding to the desired FSAA level.
#__GL_FSAA_MODE=...
# __GL_IGNORE_GLSL_EXT_REQS
# Instructs the driver to ignore certain GLSL extension requirements.
# Set to 1 to bypass strict GLSL extension checks.
#__GL_IGNORE_GLSL_EXT_REQS=1
# __GL_LOG_MAX_ANISO
# Defines the maximum anisotropic filtering level to be logged for debugging.
# Set a numeric value to specify the maximum anisotropy level.
#__GL_LOG_MAX_ANISO=...
# __GL_NO_DSO_FINALIZER
# Disables finalization routines for dynamically loaded shared objects (DSO).
# Set to 1 to disable finalizers when troubleshooting cleanup issues.
#__GL_NO_DSO_FINALIZER=1
# __GL_SELINUX_BOOLEANS
# Configures SELinux booleans related to OpenGL driver behavior.
# Set the appropriate booleans for your security context.
#__GL_SELINUX_BOOLEANS=...
# __GL_SHADER_DISK_CACHE
# Enables or disables the use of a disk cache for compiled shaders.
# Set to 1 to enable caching for improved shader load performance.
#__GL_SHADER_DISK_CACHE=1
# __GL_SHADER_DISK_CACHE_PATH
# Specifies the file system path for storing the shader disk cache.
# Set this to a directory where cached shaders should be stored.
#__GL_SHADER_DISK_CACHE_PATH=/path/to/shader/cache
# __GL_SHARPEN_ENABLE
# Enables a sharpening filter in the OpenGL rendering pipeline.
# Set to 1 to activate image sharpening.
#__GL_SHARPEN_ENABLE=1
# __GL_SHARPEN_IGNORE_FILM_GRAIN
# Configures the sharpening filter to ignore film grain effects.
# Set to 1 to bypass film grain during the sharpening process.
#__GL_SHARPEN_IGNORE_FILM_GRAIN=1
# __GL_SHARPEN_VALUE
# Sets the intensity value for the sharpening filter.
# Use a numeric value to define the level of sharpening applied.
#__GL_SHARPEN_VALUE=...
# __GL_SHOW_GRAPHICS_OSD
# Displays an on-screen display (OSD) for graphics diagnostics and performance.
# Set to 1 to enable the graphics OSD.
#__GL_SHOW_GRAPHICS_OSD=1
# __GL_SINGLE_THREADED
# Forces OpenGL operations to run in a single-threaded mode.
# Set to 1 to disable multi-threading, which may help in debugging.
#__GL_SINGLE_THREADED=1
# __GL_SORT_FBCONFIGS
# Enables sorting of framebuffer configurations for optimal selection.
# Set to 1 to automatically sort and choose the best framebuffer configuration.
#__GL_SORT_FBCONFIGS=1
# __GL_SYNC_DISPLAY_DEVICE
# Synchronizes rendering with a specific display device.
# Set this variable to the identifier of the target display device.
#__GL_SYNC_DISPLAY_DEVICE=...
# __GL_WRITE_TEXT_SECTION
# Controls whether textual sections of shaders are written for debugging purposes.
# Set to 1 to enable writing of shader text sections.
#__GL_WRITE_TEXT_SECTION=1
###############################################################################
# Platform and Environment Settings
###############################################################################
# XDG_SESSION_TYPE
# Defines the type of session (e.g., "x11" or "wayland").
# This setting determines which window system will be used.
#XDG_SESSION_TYPE=wayland
# CLUTTER_BACKEND
# Sets the backend for Clutter applications.
# Common values include "x11" or "wayland" depending on your environment.
#CLUTTER_BACKEND=wayland
# GBM_BACKEND
# Specifies the backend for the Generic Buffer Manager (GBM).
# Used in rendering systems that support GBM.
#GBM_BACKEND=...
# LIBVA_DRIVER_NAME
# Defines the driver for VA-API (Video Acceleration API) for hardware video decoding.
# Common values might be "i965", "vaapi", or "nvidia" for NVIDIA proprietary drivers.
#LIBVA_DRIVER_NAME=nvidia
# QT_ENABLE_HIGHDPI_SCALING
# Enables High DPI scaling for Qt applications.
# Set to 1 to automatically adjust application scaling on high-resolution displays.
QT_ENABLE_HIGHDPI_SCALING=1
# QT_AUTO_SCREEN_SCALE_FACTOR
# Allows Qt to automatically scale the user interface based on screen DPI.
# Uncomment and set to 1 if you want automatic DPI adjustments.
#QT_AUTO_SCREEN_SCALE_FACTOR=1
# QT_SCALE_FACTOR
# Manually sets the scaling factor for Qt applications.
# Useful for overriding automatic scaling; default is typically 1.0.
#QT_SCALE_FACTOR=1.0
# QT_QPA_PLATFORM
# Determines the Qt platform plugin to use.
# Valid options include "xcb" for X11 and "wayland" for Wayland.
#QT_QPA_PLATFORM=wayland
# QT_QPA_PLATFORMTHEME
# Sets the platform theme for Qt applications.
# Common themes include "gtk2", "qt5ct", etc.
QT_QPA_PLATFORMTHEME=qt5ct
# QT_LOGGING_CONF
# Specifies the file path for Qt’s logging configuration.
# Use this to define custom logging settings for Qt applications.
#QT_LOGGING_CONF=/path/to/logging.conf
###############################################################################
# Window Manager and Compositor Settings
###############################################################################
# QT_XCB_NO_COMPOSITE
# Disables Qt’s internal compositing on XCB (X11).
# Set to 1 if you want to force the use of an external compositor.
#QT_XCB_NO_COMPOSITE=1
# QT_WAYLAND_DISABLE_WINDOWDECORATION
# Disables Qt’s internal window decorations under Wayland.
# This allows the compositor (e.g., KWin) to manage window borders and title bars.
QT_WAYLAND_DISABLE_WINDOWDECORATION=1
# KWIN_X11_FORCE_SOFTWARE_VSYNC
# Forces KWin to use software vsync on X11.
# Useful for testing or when hardware vsync causes issues.
#KWIN_X11_FORCE_SOFTWARE_VSYNC=1
# KWIN_X11_REFRESH_RATE
# Specifies the refresh rate (in Hz) for KWin on X11.
# Define your display's refresh rate here (e.g., 60, 144).
#KWIN_X11_REFRESH_RATE=60
# KWIN_TRIPLE_BUFFER
# Enables triple buffering in KWin.
# Triple buffering may smooth display output at the cost of increased latency.
#KWIN_TRIPLE_BUFFER=1
# KWIN_DRM_NO_AMS
# Disables Atomic Modesetting (AMS) in KWin's DRM backend.
# Use this setting to troubleshoot display issues on some hardware configurations.
#KWIN_DRM_NO_AMS=1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment