GPU Driver Developer’s Guide¶
- Introduction
- DRM Internals
- DRM Memory Management
- Kernel Mode Setting (KMS)
- Overview
- KMS Core Structures and Functions
- Modeset Base Object Abstraction
- Atomic Mode Setting
- CRTC Abstraction
- Frame Buffer Abstraction
- DRM Format Handling
- Dumb Buffer Objects
- Plane Abstraction
- Display Modes Function Reference
- Connector Abstraction
- Encoder Abstraction
- KMS Locking
- KMS Properties
- Requirements
- Property Types and Blob Property Support
- Standard Connector Properties
- HDMI Specific Connector Properties
- Analog TV Specific Connector Properties
- Standard CRTC Properties
- Standard Plane Properties
- Plane Composition Properties
- Damage Tracking Properties
- Color Management Properties
- Tile Group Property
- Explicit Fencing Properties
- Variable Refresh Properties
- Cursor Hotspot Properties
- Existing KMS Properties
- Vertical Blanking
- Vertical Blank Work
- Mode Setting Helper Functions
- Modeset Helper Reference for Common Vtables
- Atomic Modeset Helper Functions Reference
- Simple KMS Helper Reference
- fbdev Helper Functions Reference
- format Helper Functions Reference
- Framebuffer DMA Helper Functions Reference
- Framebuffer GEM Helper Reference
- Bridges
- Panel Helper Reference
- Panel Self Refresh Helper Reference
- HDCP Helper Functions Reference
- Display Port Helper Functions Reference
- Display Port CEC Helper Functions Reference
- Display Port Dual Mode Adaptor Helper Functions Reference
- Display Port MST Helpers
- MIPI DBI Helper Functions Reference
- MIPI DSI Helper Functions Reference
- Display Stream Compression Helper Functions Reference
- Output Probing Helper Functions Reference
- EDID Helper Functions Reference
- SCDC Helper Functions Reference
- HDMI Infoframes Helper Reference
- Rectangle Utilities Reference
- Flip-work Helper Reference
- Auxiliary Modeset Helpers
- OF/DT Helpers
- Legacy Plane Helper Reference
- Legacy CRTC/Modeset Helper Functions Reference
- Privacy-screen class
- Userland interfaces
- libdrm Device Lookup
- Primary Nodes, DRM Master and Authentication
- DRM Display Resource Leasing
- Open-Source Userspace Requirements
- Render nodes
- Device Hot-Unplug
- Device reset
- IOCTL Support on Device Nodes
- Testing and validation
- Sysfs Support
- VBlank event handling
- Userspace API Structures
- dma-buf interoperability
- DRM client usage stats
- DRM Driver uAPI
- Kernel clients
- GPU Driver Documentation
- drm/amdgpu AMDgpu driver
- Module Parameters
- Core Driver Infrastructure
- drm/amd/display - Display Core (DC)
- dGPU firmware flashing
- AMDGPU XGMI Support
- AMDGPU RAS Support
- GPU Power/Thermal Controls and Monitoring
- HWMON Interfaces
- GPU sysfs Power State Interfaces
- power_dpm_state
- power_dpm_force_performance_level
- pp_table
- pp_od_clk_voltage
- pp_dpm_*
- pp_power_profile_mode
- pm_policy
- *_busy_percent
- gpu_metrics
- fan_curve
- acoustic_limit_rpm_threshold
- acoustic_target_rpm_threshold
- fan_target_temperature
- fan_minimum_pwm
- fan_zero_rpm_enable
- fan_zero_rpm_stop_temperature
- GFXOFF
- Misc AMDGPU driver information
- GPU Debugging
- AMDGPU Process Isolation
- AMDGPU Glossary
- drm/i915 Intel GFX Driver
- Core Driver Infrastructure
- Display Hardware Handling
- Mode Setting Infrastructure
- Frontbuffer Tracking
- Display FIFO Underrun Reporting
- Plane Configuration
- Atomic Plane Helpers
- Asynchronous Page Flip
- Output Probing
- Hotplug
- High Definition Audio
- Intel HDMI LPE Audio Support
- Panel Self Refresh PSR (PSR/SRD)
- Frame Buffer Compression (FBC)
- Display Refresh Rate Switching (DRRS)
- DPIO
- DMC Firmware Support
- DMC wakelock support
- Video BIOS Table (VBT)
- Display clocks
- Display PLLs
- Display State Buffer
- GT Programming
- Memory Management and Command Submission
- Intel GPU Basics
- Locking Guidelines
- GEM BO Management Implementation Details
- Buffer Object Eviction
- Buffer Object Memory Shrinking
- Batchbuffer Parsing
- User Batchbuffer Execution
- Scheduling
- Logical Rings, Logical Ring Contexts and Execlists
- Global GTT views
- GTT Fences and Swizzling
- Object Tiling IOCTLs
- Protected Objects
- Microcontrollers
- Tracing
- Perf
- Style
- i915 DRM client usage stats implementation
- drm/imagination PowerVR Graphics Driver
- drm/mcde ST-Ericsson MCDE Multi-channel display engine
- drm/meson AmLogic Meson Video Processing Unit
- drm/pl111 ARM PrimeCell PL110 and PL111 CLCD Driver
- drm/tegra NVIDIA Tegra GPU and display driver
- drm/tve200 Faraday TV Encoder 200
- drm/v3d Broadcom V3D Graphics Driver
- drm/vc4 Broadcom VC4 Graphics Driver
- drm/vkms Virtual Kernel Modesetting
- drm/bridge/dw-hdmi Synopsys DesignWare HDMI Controller
- drm/xen-front Xen para-virtualized frontend driver
- drm/xe Intel GFX Driver
- Arm Framebuffer Compression (AFBC)
- drm/komeda Arm display driver
- drm/Panfrost Mali Driver
- drm/Panthor CSF driver
- Xilinx ZynqMP Ultrascale+ DisplayPort Subsystem
- drm/amdgpu AMDgpu driver
- Backlight support
- VGA Switcheroo
- VGA Arbiter
- Automated testing of the DRM subsystem
- Misc DRM driver uAPI- and feature implementation guidelines
- Asynchronous VM_BIND
- VM_BIND locking
- The DRM GPUVM set of helpers
- Nomenclature
- Locks and locking order
- Protection and lifetime of gpu_vm_bos and gpu_vmas
- Revalidation and eviction of local objects
- Locking with external buffer objects
- Accessing the gpu_vm’s lists without the dma_resv lock held
- userptr gpu_vmas
- Locking at bind and unbind time
- Locking for recoverable page-fault page-table updates
- TODO list
- Difficulty
- Remove custom dumb_map_offset implementations
- Convert existing KMS drivers to atomic modesetting
- Clean up the clipped coordination confusion around planes
- Improve plane atomic_check helpers
- Convert early atomic drivers to async commit helpers
- Rename drm_atomic_state
- Fallout from atomic KMS
- Get rid of dev->struct_mutex from GEM drivers
- Move Buffer Object Locking to dma_resv_lock()
- Convert logging to drm_* functions with drm_device parameter
- Convert drivers to use simple modeset suspend/resume
- Reimplement functions in drm_fbdev_fb_ops without fbdev
- Benchmark and optimize blitting and format-conversion function
- drm_framebuffer_funcs and drm_mode_config_funcs.fb_create cleanup
- Generic fbdev defio support
- connector register/unregister fixes
- Remove load/unload callbacks
- Replace drm_detect_hdmi_monitor() with drm_display_info.is_hdmi
- Consolidate custom driver modeset properties
- Use struct iosys_map throughout codebase
- Review all drivers for setting struct drm_mode_config.{max_width,max_height} correctly
- Request memory regions in all drivers
- Remove driver dependencies on FB_DEVICE
- Remove disable/unprepare in remove/shutdown in panel-simple and panel-edp
- Transition away from using mipi_dsi_*_write_seq()
- Make panic handling work
- Clean up the debugfs support
- Object lifetime fixes
- Remove automatic page mapping from dma-buf importing
- Add unit tests using the Kernel Unit Testing (KUnit) framework
- Clean up and document former selftests suites
- Enable trinity for DRM
- Make KMS tests in i-g-t generic
- Extend virtual test driver (VKMS)
- Backlight Refactoring
- AMD DC Display Driver
- Convert fbdev drivers to DRM
- GPU RFC Section