Chapter 36. Direct Rendering Manager Kernel Modesetting (DRM KMS)
Prev | Part I. Installation and Configuration Instructions | Next

## Chapter 36. Direct Rendering Manager Kernel Modesetting (DRM KMS)

The NVIDIA GPU driver package provides a kernel module, `nvidia-drm.ko`, which registers a DRM driver with the DRM subsystem of the Linux kernel. The capabilities advertised by this DRM driver depend on the Linux kernel version and configuration:

- PRIME: This is needed to support graphics display offload in RandR 1.4. Linux kernel version 3.13 or higher is required, with CONFIG_DRM enabled.

- Atomic Modeset: This is used for display of non-X11 based desktop environments, such as Wayland and Mir. Linux kernel version 4.1 or higher is required, with CONFIG_DRM and CONFIG_DRM_KMS_HELPER enabled.

NVIDIA's DRM KMS support is still considered experimental. It is disabled by default, but can be enabled on suitable kernels with the 'modeset' kernel module parameter. E.g.,

    modprobe -r nvidia_drm ; modprobe nvidia_drm modeset=1

Applications can present through NVIDIA's DRM KMS implementation using any of the following:

- The DRM KMS "dumb buffer" mechanism to create and map CPU-accessible buffers: DRM_IOCTL_MODE_CREATE_DUMB, DRM_IOCTL_MODE_MAP_DUMB, and DRM_IOCTL_MODE_DESTROY_DUMB.

- Using the EGL_EXT_device_drm, EGL_EXT_output_drm, and EGL_EXT_stream_consumer_egloutput EGL extensions to associate EGLStream producers with specific DRM KMS planes.

## Known Issues

- The NVIDIA DRM KMS implementation is currently incompatible with SLI Mosaic. The X server will fail to initialize SLI Mosaic if DRM KMS is enabled.

- The NVIDIA DRM KMS implementation does not yet register an overlay plane: only primary and cursor planes are currently provided.

- Buffer allocation and submission to DRM KMS using gbm is not currently supported.

Prev | Up | Next
Chapter 35. PRIME Render Offload | Home | Chapter 37. Configuring External and Removable GPUs