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
- Colorop Abstraction
- Display Modes Function Reference
- Connector Abstraction
- Encoder Abstraction
- KMS Locking
- KMS Properties
- Vertical Blanking
- Vertical Blank Work
- Mode Setting Helper Functions
- Modeset Helper Reference for Common Vtables
- Atomic Modeset Helper Functions 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
- HDMI Atomic State Helpers
- 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
- DRM RAS over Generic Netlink
- 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
- Device Wedging
- IOCTL Support on Device Nodes
- Testing and validation
- Sysfs Support
- VBlank event handling
- Userspace API Structures
- dma-buf interoperability
- Trace events
- DRM client usage stats
- DRM Driver uAPI
- Kernel clients
drm_client_funcsdrm_client_devdrm_client_bufferdrm_client_for_each_modesetdrm_client_for_each_connector_iterdrm_client_init()drm_client_register()drm_client_release()drm_client_buffer_delete()drm_client_buffer_vmap_local()drm_client_buffer_vunmap_local()drm_client_buffer_vmap()drm_client_buffer_vunmap()drm_client_buffer_create_dumb()drm_client_buffer_flush()drm_client_modeset_probe()drm_client_rotation()drm_client_modeset_check()drm_client_modeset_commit_locked()drm_client_modeset_commit()drm_client_modeset_dpms()drm_client_modeset_wait_for_vblank()drm_client_dev_unregister()drm_client_dev_hotplug()
- Long running workloads and compute
- GPU Driver Documentation
- drm/amdgpu AMDgpu driver
- drm/i915 Intel GFX Driver
- drm/imagination PowerVR Graphics Driver
- Intel Display Driver
- drm/mcde ST-Ericsson MCDE Multi-channel display engine
- drm/meson AmLogic Meson Video Processing Unit
- drm/nouveau NVIDIA GPU Driver
- 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
- nova NVIDIA GPU drivers
- Backlight support
backlight_update_reasonbacklight_typebacklight_opsbacklight_propertiesbacklight_devicebacklight_update_status()backlight_enable()backlight_disable()backlight_is_blank()backlight_get_brightness()bl_get_data()backlight_force_update()backlight_device_get_by_name()devm_backlight_device_register()devm_backlight_device_unregister()of_find_backlight_by_node()devm_of_find_backlight()
- VGA Switcheroo
- VGA Arbiter
- Automated testing of the DRM subsystem
- Misc DRM driver uAPI- and feature implementation guidelines
- TODO list
- Difficulty
- Open-code drm_simple_encoder_init()
- Replace struct drm_simple_display_pipe with regular atomic helpers
- 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
- Fallout from atomic KMS
- 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 fbdev drivers
- Remove driver dependencies on FB_DEVICE
- Remove disable/unprepare in remove/shutdown in panel-simple and panel-edp
- Transition away from using deprecated MIPI DSI functions
- Remove devm_drm_put_bridge()
- Convert users of of_drm_find_bridge() to of_drm_find_and_get_bridge()
- Make panic handling work
- Clean up the debugfs support
- Object lifetime fixes
- Remove automatic page mapping from dma-buf importing
- Implement a new DUMB_CREATE2 ioctl
- 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
- Provide a universal successor for drm_sched_resubmit_jobs()
- Add locking for runqueues
- Convert fbdev drivers to DRM
- GPU RFC Section