终于知道为什么NVIDIA的linux驱动这么烂了,一波官方文档告诉你:Linux GPU Driver Developer’s Guide

还记得Linus在记者会上那句话吗?

so,NVIDIA, F**k you!

https://www.kernel.org/doc/html/latest/gpu/index.html

Linux GPU Driver Developer’s Guide

  • Introduction
    • Style Guidelines
    • Getting Started
    • Contribution Process
      • Feature Merge Deadlines
      • Code of Conduct
  • DRM Internals
    • Driver Initialization
      • Driver Information
        • Major, Minor and Patchlevel
        • Name, Description and Date
      • Device Instance and Driver Handling
        • Display driver example
      • Driver Load
        • Component Helper Usage
        • IRQ Helper Library
        • Memory Manager Initialization
        • Miscellaneous Device Configuration
      • Bus-specific Device Registration and PCI Support
    • Open/Close, File Operations and IOCTLs
      • File Operations
    • Misc Utilities
      • Printer
      • Utilities
    • Legacy Support Code
      • Legacy Suspend/Resume
      • Legacy DMA Services
  • DRM Memory Management
    • The Translation Table Manager (TTM)
      • TTM initialization
    • The Graphics Execution Manager (GEM)
      • GEM Initialization
      • GEM Objects Creation
      • GEM Objects Lifetime
      • GEM Objects Naming
      • GEM Objects Mapping
      • Memory Coherency
      • Command Execution
      • GEM Function Reference
      • GEM CMA Helper Functions Reference
    • VMA Offset Manager
    • PRIME Buffer Sharing
      • Overview and Driver Interface
      • PRIME Helper Functions
      • PRIME Function References
    • DRM MM Range Allocator
      • Overview
      • LRU Scan/Eviction Support
      • DRM MM Range Allocator Function References
    • DRM Cache Handling
    • DRM Sync Objects
    • GPU Scheduler
      • Overview
      • Scheduler Function References
  • Kernel Mode Setting (KMS)
    • Overview
    • KMS Core Structures and Functions
    • Modeset Base Object Abstraction
    • Atomic Mode Setting
      • Handling Driver Private State
      • Atomic Mode Setting Function Reference
      • Atomic Mode Setting IOCTL and UAPI Functions
    • CRTC Abstraction
      • CRTC Functions Reference
    • Frame Buffer Abstraction
      • Frame Buffer Functions Reference
    • DRM Format Handling
      • Format Modifiers
      • Format Functions Reference
    • Dumb Buffer Objects
    • Plane Abstraction
      • Plane Functions Reference
    • Display Modes Function Reference
    • Connector Abstraction
      • Connector Functions Reference
      • Writeback Connectors
    • Encoder Abstraction
      • Encoder Functions Reference
    • KMS Locking
    • KMS Properties
      • Property Types and Blob Property Support
      • Standard Connector Properties
      • HDMI Specific Connector Properties
      • Plane Composition Properties
        • FB_DAMAGE_CLIPS
      • Color Management Properties
      • Tile Group Property
      • Explicit Fencing Properties
      • Variable Refresh Properties
      • Existing KMS Properties
    • Vertical Blanking
      • Vertical Blanking and Interrupt Handling Functions Reference
  • Mode Setting Helper Functions
    • Modeset Helper Reference for Common Vtables
    • Atomic Modeset Helper Functions Reference
      • Overview
      • Implementing Asynchronous Atomic Commit
      • Helper Functions Reference
      • Atomic State Reset and Initialization
      • Atomic State Helper Reference
    • Simple KMS Helper Reference
    • fbdev Helper Functions Reference
    • format Helper Functions Reference
    • Framebuffer CMA Helper Functions Reference
    • Framebuffer GEM Helper Reference
    • Bridges
      • Overview
      • Default bridge callback sequence
      • Bridge Helper Reference
      • Panel-Bridge Helper Reference
    • Panel Helper Reference
    • Display Port Helper Functions Reference
    • Display Port CEC Helper Functions Reference
    • Display Port Dual Mode Adaptor Helper Functions Reference
    • Display Port MST Helpers
      • Overview
        • Topology refcount overview
        • Malloc refcount overview
        • Refcount relationships in a topology
      • Functions Reference
      • Topology Lifetime Internals
    • 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
    • SHMEM GEM Helper Reference
  • Userland interfaces
    • libdrm Device Lookup
    • Primary Nodes, DRM Master and Authentication
    • Open-Source Userspace Requirements
    • Render nodes
    • IOCTL Support on Device Nodes
      • Recommended IOCTL Return Values
    • Testing and validation
      • Testing Requirements for userspace API
      • Validating changes with IGT
      • Display CRC Support
      • Debugfs Support
    • Sysfs Support
    • VBlank event handling
  • Kernel clients
  • GPU Driver Documentation
    • drm/amdgpu AMDgpu driver
      • Module Parameters
      • Core Driver Infrastructure
        • Memory Domains
        • Buffer Objects
        • PRIME Buffer Sharing
        • MMU Notifier
        • AMDGPU Virtual Memory
        • Interrupt Handling
      • 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_sclk pp_dpm_mclk pp_dpm_pcie
          • pp_power_profile_mode
          • busy_percent
    • drm/amd/display - Display Core (DC)
      • AMDgpu Display Manager
        • Lifecycle
        • Interrupts
        • Atomic Implementation
      • Display Core
    • drm/i915 Intel GFX Driver
      • Core Driver Infrastructure
        • Runtime Power Management
        • Interrupt Handling
        • Intel GVT-g Guest Support(vGPU)
        • Intel GVT-g Host Support(vGPU device model)
        • Workarounds
          • Layout
      • Display Hardware Handling
        • Mode Setting Infrastructure
        • Frontbuffer Tracking
        • Display FIFO Underrun Reporting
        • Plane Configuration
        • Atomic Plane Helpers
        • 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
        • CSR firmware support for DMC
        • Video BIOS Table (VBT)
        • Display clocks
        • Display PLLs
      • Memory Management and Command Submission
        • Intel GPU Basics
        • GEM BO Management Implementation Details
        • Buffer Object Eviction
        • Buffer Object Memory Shrinking
        • Batchbuffer Parsing
        • Batchbuffer Pools
        • User Batchbuffer Execution
        • Logical Rings, Logical Ring Contexts and Execlists
        • Global GTT views
        • GTT Fences and Swizzling
          • Global GTT Fence Handling
          • Hardware Tiling and Swizzling Details
        • Object Tiling IOCTLs
      • WOPCM
        • WOPCM Layout
      • GuC
        • GuC-specific firmware loader
        • GuC-based command submission
        • GuC Firmware Layout
        • GuC Address Space
      • Tracing
        • i915_ppgtt_create and i915_ppgtt_release
        • i915_context_create and i915_context_free
        • switch_mm
      • Perf
        • Overview
        • Comparison with Core Perf
          • Issues hit with first prototype based on Core Perf
        • i915 Driver Entry Points
        • i915 Perf Stream
        • i915 Perf Observation Architecture Stream
        • All i915 Perf Internals
      • Style
        • Register macro definition style
          • Layout
          • Naming
          • Examples
    • drm/meson AmLogic Meson Video Processing Unit
      • Video Processing Unit
      • Video Input Unit
      • Video Post Processing
      • Video Encoder
      • Video Clocks
      • HDMI Video Output
    • drm/pl111 ARM PrimeCell PL111 CLCD Driver
    • drm/tegra NVIDIA Tegra GPU and display driver
      • Driver Infrastructure
        • Host1x Infrastructure Reference
        • Host1x Syncpoint Reference
      • KMS driver
        • Display Controllers
          • Windows
        • Outputs
          • RGB/LVDS
          • HDMI
          • DSI
          • eDP/DP
      • Userspace Interface
        • GEM Buffers
        • Syncpoints
        • Command Stream Submission
    • drm/tinydrm Tiny DRM drivers
      • Helpers
      • MIPI DBI Compatible Controllers
    • drm/tve200 Faraday TV Encoder 200
    • drm/v3d Broadcom V3D Graphics Driver
      • GPU buffer object (BO) management
        • Address space management
        • GPU Scheduling
      • Interrupts
    • drm/vc4 Broadcom VC4 Graphics Driver
      • Display Hardware Handling
        • Pixel Valve (DRM CRTC)
        • HVS
        • HVS planes
        • HDMI encoder
        • DSI encoder
        • DPI encoder
        • VEC (Composite TV out) encoder
      • Memory Management and 3D Command Submission
        • GPU buffer object (BO) management
        • V3D binner command list (BCL) validation
        • V3D render command list (RCL) generation
        • Shader validator for VC4
        • V3D Interrupts
    • drm/vkms Virtual Kernel Modesetting
      • TODO
        • CRC API Improvements
        • Runtime Configuration
        • Add Plane Features
        • Writeback support
        • Prime Buffer Sharing
        • Output Features
        • Atomic Check using eBPF
    • drm/bridge/dw-hdmi Synopsys DesignWare HDMI Controller
      • Synopsys DesignWare HDMI Controller
        • Supported Input Formats and Encodings
    • drm/xen-front Xen para-virtualized frontend driver
      • Driver modes of operation in terms of display buffers used
        • Buffers allocated by the frontend driver
        • Buffers allocated by the backend
      • Driver limitations
    • Arm Framebuffer Compression (AFBC)
      • Components and Ordering
      • Number of Planes
      • Cross-device interoperability
    • drm/komeda Arm display driver
      • Overview of D71 like display IPs
        • Layer
        • Scaler
        • Compositor (compiz)
        • Writeback Layer (wb_layer)
        • Post image processor (improc)
        • Timing controller (timing_ctrlr)
        • Merger
        • Splitter
      • Possible D71 Pipeline usage
        • Single pipeline data flow
        • Dual pipeline with Slave enabled
        • Sub-pipelines for input and output
          • Layer(input) pipeline
          • Writeback(output) pipeline
          • Display output pipeline
      • Komeda Resource abstraction
        • struct komeda_pipeline/component
      • Resource discovery and initialization
      • Format handling
      • Attach komeda_dev to DRM-KMS
        • How to map plane to Layer(input) pipeline
        • Make component/pipeline to be drm_private_obj
        • Tracking component_state/pipeline_state by drm_atomic_state
        • komeda component validation
        • komeda_kms Abstraction
        • komde_kms Functions
      • Build komeda to be a Linux module driver
  • VGA Switcheroo
    • Modes of Use
      • Manual switching and manual power control
      • Driver power control
    • API
      • Public functions
      • Public structures
      • Public constants
      • Private structures
    • Handlers
      • apple-gmux Handler
        • Graphics mux
        • Power control
        • Backlight control
        • Public functions
  • VGA Arbiter
    • vgaarb kernel/userspace ABI
    • In-kernel interface
    • libpciaccess
    • xf86VGAArbiter (X server implementation)
    • References
  • TODO list
    • Subsystem-wide refactorings
      • De-midlayer drivers
      • Remove custom dumb_map_offset implementations
      • Convert existing KMS drivers to atomic modesetting
      • Clean up the clipped coordination confusion around planes
      • Convert early atomic drivers to async commit helpers
      • Fallout from atomic KMS
      • Get rid of dev->struct_mutex from GEM drivers
      • Convert instances of dev_info/dev_err/dev_warn to their DRM_DEV_* equivalent
      • Convert drivers to use simple modeset suspend/resume
      • Convert drivers to use drm_fb_helper_fbdev_setup/teardown()
      • Clean up mmap forwarding
      • Generic fbdev defio support
      • Remove the ->gem_prime_res_obj callback
      • idr_init_base()
      • Defaults for .gem_prime_import and export
      • struct drm_gem_object_funcs
      • Use DRM_MODESET_LOCK_ALL_* helpers instead of boilerplate
      • Rename CMA helpers to DMA helpers
      • Convert direct mode.vrefresh accesses to use drm_mode_vrefresh()
      • Remove drm_display_mode.hsync
    • Core refactorings
      • Clean up the DRM header mess
      • Add missing kerneldoc for exported functions
      • Make panic handling work
      • Clean up the debugfs support
      • KMS cleanups
    • Better Testing
      • Enable trinity for DRM
      • Make KMS tests in i-g-t generic
      • Extend virtual test driver (VKMS)
    • Driver Specific
      • tinydrm
      • AMD DC Display Driver
      • i915
    • Outside DRM

你可能感兴趣的:(操作系统)