From nobody Mon May 11 02:55:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CB047C433FE for ; Sun, 17 Apr 2022 15:45:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234340AbiDQPsL (ORCPT ); Sun, 17 Apr 2022 11:48:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234334AbiDQPsH (ORCPT ); Sun, 17 Apr 2022 11:48:07 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1921813F8C for ; Sun, 17 Apr 2022 08:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1650210326; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uypO0xGq2R7G7rwhp3xAy+f7w5+Cm6Mvqy0TJPHONMI=; b=VLoldAU0RkPDlMGc2eR6n5J0HMi1w36nymHwZb275arukbTvkffv3yCEWtmO3xd/fUGrVh +LwwzsJB2xuThdhgLzD4yr2hW3m4n+vLUxZbCIoMqZxU8l/jz1K2/F63oBemxpufTqWsYK IHAAeRqC1WnrjmjnflRUah6ydEvmAgQ= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-596-CToSz7NJOSWM-fljCufPQQ-1; Sun, 17 Apr 2022 11:45:25 -0400 X-MC-Unique: CToSz7NJOSWM-fljCufPQQ-1 Received: by mail-wm1-f72.google.com with SMTP id p31-20020a05600c1d9f00b0038ed0964a90so5852981wms.4 for ; Sun, 17 Apr 2022 08:45:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uypO0xGq2R7G7rwhp3xAy+f7w5+Cm6Mvqy0TJPHONMI=; b=4bH6vyWKzFucGd9ShWrv1rnsVOAcKRAjyNOGoe25BroLQgvs9hkMX+7IXDOsO+bpuT p4c/0YEAXsu5BAStJMBYjKH6t6R+WpSV6K6blOqJNEx8zoJsZ0JL3ed1KUIoFSuZjdD0 sAAbzyhW35t0h/yAxsuZ53fNpL01XiynIhooRnnGeGO2sBq/xeTIsAtU3xaDlMl0Pq1Z UwCgcufkiT44t4Yz4W0xwQh+Uxg2BqCAlB8bwOsooWHB9NOfeq7+cYbrOLys1Uwr0Sn2 qe0LzGNwZPHiye+670hf4ZJtA+QLitC5BNFw79OF46qvrrHGfP29/0lpkOEl34Uvw04M TGRA== X-Gm-Message-State: AOAM531qwvEdfeNyfaNF54u1ALgHoQR7mhQRlat2qw0/d1X9QqPE4Zn9 tmlbARrpKT6/a67V2S5AF0ZRqh/lPEHPmuf2lxu1S+F+SnEXYuZOPEIijjLC06PnBHMWFNmappb 5PDYtma24aVgnue29pWuFYAxVQ3FbP1PHunLgg6tvRujVR3oJbd41QRzmA386tfXf7sPguf9UpW g= X-Received: by 2002:a05:6000:510:b0:203:e469:f0a3 with SMTP id a16-20020a056000051000b00203e469f0a3mr5746862wrf.710.1650210324168; Sun, 17 Apr 2022 08:45:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwluSaBfP+cDeg500TYp/r+b8CxJggQPGEGAC6GHMUeRr/2454YadMD0qyybbeUsLz88QkIXw== X-Received: by 2002:a05:6000:510:b0:203:e469:f0a3 with SMTP id a16-20020a056000051000b00203e469f0a3mr5746832wrf.710.1650210323746; Sun, 17 Apr 2022 08:45:23 -0700 (PDT) Received: from minerva.home ([92.176.231.205]) by smtp.gmail.com with ESMTPSA id h10-20020a05600c414a00b0038ebb6884d8sm17878144wmm.0.2022.04.17.08.45.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Apr 2022 08:45:23 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Pekka Paalanen , Thomas Zimmermann , Laurent Pinchart , Daniel Vetter , Javier Martinez Canillas , Daniel Vetter , David Airlie , Jonathan Corbet , Maarten Lankhorst , Maxime Ripard , dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org Subject: [PATCH v2] drm/doc: Add in introduction sections about tiny drivers and external refs Date: Sun, 17 Apr 2022 17:45:11 +0200 Message-Id: <20220417154511.94202-1-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Signed-off-by: Javier Martinez Canillas Acked-by: Pekka Paalanen Acked-by: Thomas Zimmermann --- Changes in v2: - Remove paragraph that gave wrong impression that DRM is complex (Pekka Pa= alanen). - Add Thomas Zimmermann's and Pekka Paalanen's Acked-by tags. - Replace "Learning material" title with "External References" (Thomas Zimm= ermann). - Add a section about tiny DRM drivers being a good first example (Daniel V= etter). - Add some more external references that I found interesting since v1 was p= osted. Documentation/gpu/introduction.rst | 60 ++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/Documentation/gpu/introduction.rst b/Documentation/gpu/introdu= ction.rst index 25a56e9c0cfd..574f478c3674 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 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +The DRM subsystem contains a lot of helper functions to ease writing drive= rs for +simple graphic devices. For example, the `drivers/gpu/drm/tiny/` directory= has a +set of DRM drivers that are simple enough to be implemented in a single fi= le. + +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 tha= t just +need a display pipeline with one full-screen scanout buffer feeding one ou= tput. + +The tiny DRM drivers are good examples to understand how DRM drivers shoul= d look +like since are written as a few hundreds line of code contained in a singl= e file. + +External References +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Delving into a Linux kernel subsystem for the first time can be an overwhe= lming +experience, one need to get familiar with all the needed concepts and lear= n the +subsystem's internals. + +To shallow the learning curve, this section contains a list of presentatio= ns +and documents that can be used to learn about DRM/KMS and graphics in gene= ral. + +There are different reasons why someone might want to get into DRM: portin= g an +existing fbdev driver, write a DRM driver for a new hardware, fixing bugs = that +may face when working on the graphics user-space stack, etc. For this reas= on, +the learning material covers many aspects of the Linux graphics stack. Fro= m 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 ca= n be +valuable to go through older material to understand the rationale and cont= ext +in which the recent changes to the DRM subsystem were made. + +Conference talks +---------------- + +* `An Overview of the Linux and Userspace Graphics Stack `_ - Paul Kocialkowski (2020) +* `Getting pixels on screen on Linux: introduction to Kernel Mode Setting = `_ - Simon Ser (2020) +* `Everything Great about Upstream Graphics `_ - Daniel Vetter (2019) +* `An introduction to the Linux DRM subsystem `_ - Maxime Ripard (2017) +* `Embrace the Atomic (Display) Age `_ - Daniel Vetter (2016) +* `Anatomy of an Atomic KMS Driver `_ - Laurent Pinchart (2015) +* `Atomic Modesetting for Drivers `_ - Daniel Vetter (2015) +* `Anatomy of an Embedded KMS Driver `_ - Laurent Pinchart (2013) + +Slides and articles +------------------- + +* `Understanding the Linux Graphics Stack `_ - Bootlin (2022) +* `DRM KMS overview `_= - STMicroelectronics (2021) +* `Linux graphic stack `_ - Nathan Gau=C3=ABr (2017) +* `Atomic mode setting design overview, part 1 `_ - Daniel Vetter (2015) +* `Atomic mode setting design overview, part 2 `_ - Daniel Vetter (2015) +* `The DRM/KMS subsystem from a newbie=E2=80=99s point of view `_ - Boris Brezillon (2014) +* `A brief introduction to the Linux graphics stack `_ = - Iago Toral (2014) +* `The Linux Graphics Stack `_ - Jasper St. Pierre (2012) --=20 2.35.1