Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/doc: Add sections about tiny drivers and external refs to intro page

Learning about the DRM subsystem could be quite overwhelming for newcomers
but there are lots of useful talks, slides and articles available that can
help to understand the needed concepts and ease the learning curve.

There are also simple DRM drivers that can be used as example about how a
DRM driver should look like.

Add sections to the introduction page, that contains references to these.

Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20220420072411.15104-1-javierm@redhat.com

+60
+60
Documentation/gpu/introduction.rst
··· 112 112 interacting with community members on mailing lists, IRC, or bug 113 113 trackers. The community represents the project as a whole, and abusive 114 114 or bullying behaviour is not tolerated by the project. 115 + 116 + Simple DRM drivers to use as examples 117 + ===================================== 118 + 119 + The DRM subsystem contains a lot of helper functions to ease writing drivers for 120 + simple graphic devices. For example, the `drivers/gpu/drm/tiny/` directory has a 121 + set of drivers that are simple enough to be implemented in a single source file. 122 + 123 + These drivers make use of the `struct drm_simple_display_pipe_funcs`, that hides 124 + any complexity of the DRM subsystem and just requires drivers to implement a few 125 + functions needed to operate the device. This could be used for devices that just 126 + need a display pipeline with one full-screen scanout buffer feeding one output. 127 + 128 + The tiny DRM drivers are good examples to understand how DRM drivers should look 129 + like. Since are just a few hundreds lines of code, they are quite easy to read. 130 + 131 + External References 132 + =================== 133 + 134 + Delving into a Linux kernel subsystem for the first time can be an overwhelming 135 + experience, one needs to get familiar with all the concepts and learn about the 136 + subsystem's internals, among other details. 137 + 138 + To shallow the learning curve, this section contains a list of presentations 139 + and documents that can be used to learn about DRM/KMS and graphics in general. 140 + 141 + There are different reasons why someone might want to get into DRM: porting an 142 + existing fbdev driver, write a DRM driver for a new hardware, fixing bugs that 143 + could face when working on the graphics user-space stack, etc. For this reason, 144 + the learning material covers many aspects of the Linux graphics stack. From an 145 + overview of the kernel and user-space stacks to very specific topics. 146 + 147 + The list is sorted in reverse chronological order, to keep the most up-to-date 148 + material at the top. But all of them contain useful information, and it can be 149 + valuable to go through older material to understand the rationale and context 150 + in which the changes to the DRM subsystem were made. 151 + 152 + Conference talks 153 + ---------------- 154 + 155 + * `An Overview of the Linux and Userspace Graphics Stack <https://www.youtube.com/watch?v=wjAJmqwg47k>`_ - Paul Kocialkowski (2020) 156 + * `Getting pixels on screen on Linux: introduction to Kernel Mode Setting <https://www.youtube.com/watch?v=haes4_Xnc5Q>`_ - Simon Ser (2020) 157 + * `Everything Great about Upstream Graphics <https://www.youtube.com/watch?v=kVzHOgt6WGE>`_ - Daniel Vetter (2019) 158 + * `An introduction to the Linux DRM subsystem <https://www.youtube.com/watch?v=LbDOCJcDRoo>`_ - Maxime Ripard (2017) 159 + * `Embrace the Atomic (Display) Age <https://www.youtube.com/watch?v=LjiB_JeDn2M>`_ - Daniel Vetter (2016) 160 + * `Anatomy of an Atomic KMS Driver <https://www.youtube.com/watch?v=lihqR9sENpc>`_ - Laurent Pinchart (2015) 161 + * `Atomic Modesetting for Drivers <https://www.youtube.com/watch?v=kl9suFgbTc8>`_ - Daniel Vetter (2015) 162 + * `Anatomy of an Embedded KMS Driver <https://www.youtube.com/watch?v=Ja8fM7rTae4>`_ - Laurent Pinchart (2013) 163 + 164 + Slides and articles 165 + ------------------- 166 + 167 + * `Understanding the Linux Graphics Stack <https://bootlin.com/doc/training/graphics/graphics-slides.pdf>`_ - Bootlin (2022) 168 + * `DRM KMS overview <https://wiki.st.com/stm32mpu/wiki/DRM_KMS_overview>`_ - STMicroelectronics (2021) 169 + * `Linux graphic stack <https://studiopixl.com/2017-05-13/linux-graphic-stack-an-overview>`_ - Nathan Gauër (2017) 170 + * `Atomic mode setting design overview, part 1 <https://lwn.net/Articles/653071/>`_ - Daniel Vetter (2015) 171 + * `Atomic mode setting design overview, part 2 <https://lwn.net/Articles/653466/>`_ - Daniel Vetter (2015) 172 + * `The DRM/KMS subsystem from a newbie’s point of view <https://bootlin.com/pub/conferences/2014/elce/brezillon-drm-kms/brezillon-drm-kms.pdf>`_ - Boris Brezillon (2014) 173 + * `A brief introduction to the Linux graphics stack <https://blogs.igalia.com/itoral/2014/07/29/a-brief-introduction-to-the-linux-graphics-stack/>`_ - Iago Toral (2014) 174 + * `The Linux Graphics Stack <https://blog.mecheye.net/2012/06/the-linux-graphics-stack/>`_ - Jasper St. Pierre (2012)