On Wed, Apr 20, 2022 at 09:24:11AM +0200, Javier Martinez Canillas wrote:
> 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 <[email protected]>
> Signed-off-by: Javier Martinez Canillas <[email protected]>
> Acked-by: Pekka Paalanen <[email protected]>
> Acked-by: Thomas Zimmermann <[email protected]>

Maybe needs more acks to land?

Acked-by: Daniel Vetter <[email protected]>

Would be good we can hand out links to pretty htmldocs instead of lore
links to this patch, the latter is rather hard on the eyes :-)

Cheers, Daniel

> ---
> 
> Changes in v3:
> - Fix typos and grammar errors that found when re-reading the changes.
> 
> Changes in v2:
> - Remove paragraph that gave wrong impression that DRM is complex (Pekka 
> Paalanen).
> - Add Thomas Zimmermann's and Pekka Paalanen's Acked-by tags.
> - Replace "Learning material" title with "External References" (Thomas 
> Zimmermann).
> - Add a section about tiny DRM drivers being a good first example (Daniel 
> Vetter).
> - Add some more external references that I found interesting since v1 was 
> posted.
> 
>  Documentation/gpu/introduction.rst | 60 ++++++++++++++++++++++++++++++
>  1 file changed, 60 insertions(+)
> 
> diff --git a/Documentation/gpu/introduction.rst 
> b/Documentation/gpu/introduction.rst
> index 25a56e9c0cfd..f05eccd2c07c 100644
> --- a/Documentation/gpu/introduction.rst
> +++ b/Documentation/gpu/introduction.rst
> @@ -112,3 +112,63 @@ Please conduct yourself in a respectful and civilised 
> manner when
>  interacting with community members on mailing lists, IRC, or bug
>  trackers. The community represents the project as a whole, and abusive
>  or bullying behaviour is not tolerated by the project.
> +
> +Simple DRM drivers to use as examples
> +=====================================
> +
> +The DRM subsystem contains a lot of helper functions to ease writing drivers 
> for
> +simple graphic devices. For example, the `drivers/gpu/drm/tiny/` directory 
> has a
> +set of drivers that are simple enough to be implemented in a single source 
> file.
> +
> +These drivers make use of the `struct drm_simple_display_pipe_funcs`, that 
> hides
> +any complexity of the DRM subsystem and just requires drivers to implement a 
> few
> +functions needed to operate the device. This could be used for devices that 
> just
> +need a display pipeline with one full-screen scanout buffer feeding one 
> output.
> +
> +The tiny DRM drivers are good examples to understand how DRM drivers should 
> look
> +like. Since are just a few hundreds lines of code, they are quite easy to 
> read.
> +
> +External References
> +===================
> +
> +Delving into a Linux kernel subsystem for the first time can be an 
> overwhelming
> +experience, one needs to get familiar with all the concepts and learn about 
> the
> +subsystem's internals, among other details.
> +
> +To shallow the learning curve, this section contains a list of presentations
> +and documents that can be used to learn about DRM/KMS and graphics in 
> general.
> +
> +There are different reasons why someone might want to get into DRM: porting 
> an
> +existing fbdev driver, write a DRM driver for a new hardware, fixing bugs 
> that
> +could face when working on the graphics user-space stack, etc. For this 
> reason,
> +the learning material covers many aspects of the Linux graphics stack. From 
> an
> +overview of the kernel and user-space stacks to very specific topics.
> +
> +The list is sorted in reverse chronological order, to keep the most 
> up-to-date
> +material at the top. But all of them contain useful information, and it can 
> be
> +valuable to go through older material to understand the rationale and context
> +in which the changes to the DRM subsystem were made.
> +
> +Conference talks
> +----------------
> +
> +* `An Overview of the Linux and Userspace Graphics Stack 
> <https://www.youtube.com/watch?v=wjAJmqwg47k>`_ - Paul Kocialkowski (2020)
> +* `Getting pixels on screen on Linux: introduction to Kernel Mode Setting 
> <https://www.youtube.com/watch?v=haes4_Xnc5Q>`_ - Simon Ser (2020)
> +* `Everything Great about Upstream Graphics 
> <https://www.youtube.com/watch?v=kVzHOgt6WGE>`_ - Daniel Vetter (2019)
> +* `An introduction to the Linux DRM subsystem 
> <https://www.youtube.com/watch?v=LbDOCJcDRoo>`_ - Maxime Ripard (2017)
> +* `Embrace the Atomic (Display) Age 
> <https://www.youtube.com/watch?v=LjiB_JeDn2M>`_ - Daniel Vetter (2016)
> +* `Anatomy of an Atomic KMS Driver 
> <https://www.youtube.com/watch?v=lihqR9sENpc>`_ - Laurent Pinchart (2015)
> +* `Atomic Modesetting for Drivers 
> <https://www.youtube.com/watch?v=kl9suFgbTc8>`_ - Daniel Vetter (2015)
> +* `Anatomy of an Embedded KMS Driver 
> <https://www.youtube.com/watch?v=Ja8fM7rTae4>`_ - Laurent Pinchart (2013)
> +
> +Slides and articles
> +-------------------
> +
> +* `Understanding the Linux Graphics Stack 
> <https://bootlin.com/doc/training/graphics/graphics-slides.pdf>`_ - Bootlin 
> (2022)
> +* `DRM KMS overview <https://wiki.st.com/stm32mpu/wiki/DRM_KMS_overview>`_ - 
> STMicroelectronics (2021)
> +* `Linux graphic stack 
> <https://studiopixl.com/2017-05-13/linux-graphic-stack-an-overview>`_ - 
> Nathan Gauër (2017)
> +* `Atomic mode setting design overview, part 1 
> <https://lwn.net/Articles/653071/>`_ - Daniel Vetter (2015)
> +* `Atomic mode setting design overview, part 2 
> <https://lwn.net/Articles/653466/>`_ - Daniel Vetter (2015)
> +* `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)
> +* `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)
> +* `The Linux Graphics Stack 
> <https://blog.mecheye.net/2012/06/the-linux-graphics-stack/>`_ - Jasper St. 
> Pierre (2012)
> -- 
> 2.35.1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

Reply via email to