]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - Documentation/gpu/introduction.rst
MAINTAINERS: add Documentation/gpu and Documentation/gpu/i915.rst
[mirror_ubuntu-bionic-kernel.git] / Documentation / gpu / introduction.rst
CommitLineData
ca00c2b9
JN
1Introduction
2============
3
4The Linux DRM layer contains code intended to support the needs of
5complex graphics devices, usually containing programmable pipelines well
6suited to 3D graphics acceleration. Graphics drivers in the kernel may
7make use of DRM functions to make tasks like memory management,
8interrupt handling and DMA easier, and provide a uniform interface to
9applications.
10
11A note on versions: this guide covers features found in the DRM tree,
12including the TTM memory manager, output configuration and mode setting,
13and the new vblank internals, in addition to all the regular features
14found in current kernels.
15
16[Insert diagram of typical DRM stack here]
17
18Style Guidelines
19----------------
20
21For consistency this documentation uses American English. Abbreviations
22are written as all-uppercase, for example: DRM, KMS, IOCTL, CRTC, and so
23on. To aid in reading, documentations make full use of the markup
24characters kerneldoc provides: @parameter for function parameters,
25@member for structure members, &structure to reference structures and
26function() for functions. These all get automatically hyperlinked if
27kerneldoc for the referenced objects exists. When referencing entries in
28function vtables please use ->vfunc(). Note that kerneldoc does not
29support referencing struct members directly, so please add a reference
30to the vtable struct somewhere in the same paragraph or at least
31section.
32
33Except in special situations (to separate locked from unlocked variants)
34locking requirements for functions aren't documented in the kerneldoc.
35Instead locking should be check at runtime using e.g.
36``WARN_ON(!mutex_is_locked(...));``. Since it's much easier to ignore
37documentation than runtime noise this provides more value. And on top of
38that runtime checks do need to be updated when the locking rules change,
39increasing the chances that they're correct. Within the documentation
40the locking rules should be explained in the relevant structures: Either
41in the comment for the lock explaining what it protects, or data fields
42need a note about which lock protects them, or both.
43
44Functions which have a non-\ ``void`` return value should have a section
45called "Returns" explaining the expected return values in different
46cases and their meanings. Currently there's no consensus whether that
47section name should be all upper-case or not, and whether it should end
48in a colon or not. Go with the file-local style. Other common section
49names are "Notes" with information for dangerous or tricky corner cases,
50and "FIXME" where the interface could be cleaned up.