Package: libdrm-dev
Version: 2.4.123-1
Severity: minor
Tags: patch

   * What led up to the situation?

     Checking for defects with a new version

test-[g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z < "man 
page"

  [Use "groff -e ' $' -e '\\~$' <file>" to find obvious trailing spaces.]

  ["test-groff" is a script in the repository for "groff"; is not shipped]
(local copy and "troff" slightly changed by me).

  [The fate of "test-nroff" was decided in groff bug #55941.]

   * What was the outcome of this action?

Output from "test-groff  -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z 
":

an.tmac:<stdin>:30: style: .TH missing fourth argument; consider 
package/project name and version (e.g., "groff 1.23.0")


   * What outcome did you expect instead?

     No output (no warnings).

-.-

  General remarks and further material, if a diff-file exist, are in the
attachments.


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.12-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1), 
LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages libdrm-dev depends on:
ii  libdrm-amdgpu1    2.4.123-1
ii  libdrm-intel1     2.4.123-1
ii  libdrm-nouveau2   2.4.123-1
ii  libdrm-radeon1    2.4.123-1
ii  libdrm2           2.4.123-1
ii  libpciaccess-dev  0.17-3+b3

libdrm-dev recommends no packages.

libdrm-dev suggests no packages.

-- no debconf information
Input file is drm-kms.7

Output from "mandoc -T lint  drm-kms.7": (shortened list)

      1 input text line longer than 80 bytes: A \fICRTC\fP short f...
      1 input text line longer than 80 bytes: buffer to flip. If y...
      1 input text line longer than 80 bytes: the KMS API. A call ...
      1 input text line longer than 80 bytes: understand how KMS w...
      5 skipping paragraph macro: sp after SH
      5 skipping paragraph macro: sp after SS
      1 whitespace at end of input line

Remove trailing space with: sed -e 's/  *$//'

-.-.

Output from "test-groff -mandoc -t -ww -z drm-kms.7": (shortened list)

      1 trailing space in the line

Remove trailing space with: sed -e 's/  *$//'

-.-.

Show if generated from reStructuredText

Who is actually generating this man page?  Debian or upstream?

Is the generating software out of date?

1:.\" Man page generated from reStructuredText.

-.-.

Remove space characters (whitespace) at the end of lines.
Use "git apply ... --whitespace=fix" to fix extra space issues, or use
global configuration "core.whitespace".

Number of lines affected is

1

-.-.

Wrong distance between sentences in the input file.

  Separate the sentences and subordinate clauses; each begins on a new
line.  See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").

  The best procedure is to always start a new sentence on a new line,
at least, if you are typing on a computer.

Remember coding: Only one command ("sentence") on each (logical) line.

E-mail: Easier to quote exactly the relevant lines.

Generally: Easier to edit the sentence.

Patches: Less unaffected text.

Search for two adjacent words is easier, when they belong to the same line,
and the same phrase.

  The amount of space between sentences in the output can then be
controlled with the ".ss" request.

Mark a final abbreviation point as such by suffixing it with "\&".

Some sentences (etc.) do not begin on a new line.

Split (sometimes) lines after a punctuation mark; before a conjunction.

N.B.

  The number of lines affected can be too large to be in a patch.

41:currently used and what frames to be displayed. This task is called \fIKernel
42:Mode\-Setting\fP (KMS). Historically, this was done in user\-space and called
43:\fIUser\-space Mode\-Setting\fP (UMS). Almost all open\-source drivers now 
provide the
45:drivers from different vendors still do not support this. You can use
46:\fBdrmModeSettingSupported\fP(3) to check whether your driver supports this. 
To
53:the chip that contains a pointer to a scanout buffer.  Therefore, the number
55:active at any given time. The CRTC structure contains several fields to
59:of video memory spans multiple CRTCs. A CRTC is the central point where
60:configuration of displays happens. You select which objects to use, which
66:on top of a CRTC during the scanout process. Planes are associated with a
68:scale it to a destination size. The result is then blended with or overlayed
69:on top of a CRTC. Planes are not provided by all hardware and the number of
70:available planes is limited. If planes are not available or if not enough
76:suitable for any attached connectors. On some devices, it may be possible to
77:have a CRTC send data to more than one encoder. In that case, both encoders
84:laptop panel. A connector can only be attached to one encoder at a time. The
92:data to scanout to a CRTC. Applications explicitly request the creation of
93:framebuffers and can control their behavior. Framebuffers rely on the
94:underneath memory manager for low\-level memory operations. When creating a
96:as backing storage. The framebuffer itself is only an abstract object with
97:no data. It just refers to memory buffers that must be created with the
103:\fBdrmSetMaster\fP(3) to become \fIDRM\-Master\fP\&. It then has exclusive 
access to
104:the KMS API. A call to \fBdrmModeGetResources\fP(3) returns a list of 
\fICRTCs\fP,
108:use. Users are mostly interested in which monitor or display\-panel is 
active so
110:the correct ones to use. For each connector, you need to find a CRTC to 
drive
111:this connector. If you want to clone output to two or more connectors, you 
may
112:use a single CRTC for all cloned connectors (if the hardware supports 
this). To
114:available for each connector. Each encoder contains a list of CRTCs that it 
can
115:work with and you simply select one of these CRTCs. If you later program the
118:for the selected connector. See the \fIExamples\fP section below for more
127:framebuffer that is used for scanout. Memory buffer allocation is
128:driver\-dependent and described in \fBdrm\-memory\fP(7). You need to create 
a
129:buffer big enough for your selected mode. Now you can create a framebuffer
130:object that uses your memory\-buffer as scanout buffer. You can do this with
138:to use the new scanout buffer. If you want smooth\-transitions without 
tearing,
139:you probably use double\-buffering. You need to create one framebuffer 
object
140:for each buffer you use. You can then call \fBdrmModeSetCrtc\fP(3) on the 
next
141:buffer to flip. If you want to synchronize your flips with 
\fIvertical\-blanks\fP,
146:Planes are controlled independently from CRTCs. That is, a call to
147:\fBdrmModeSetCrtc\fP(3) does not affect planes. Instead, you need to call
148:\fBdrmModeSetPlane\fP(3) to configure a plane. This requires the plane ID, a
150:CRTC\-framebuffer. The CRTC then blends the content from the plane over the 
CRTC
151:framebuffer buffer during scanout. As this does not involve any
152:software\-blending, it is way faster than traditional blending. However, 
plane
153:resources are limited. See \fBdrmModeGetPlaneResources\fP(3) for more
157:Similar to planes, many hardware also supports cursors. A cursor is a very
158:small buffer with an image that is blended over the CRTC framebuffer. You 
can
160:on the screen with \fBdrmModeMoveCursor\fP(3).  This allows to move the 
cursor
161:on the screen without rerendering. If no hardware cursors are supported, you
165:Some examples of how basic mode\-setting can be done. See the man\-page of 
each
173:shows, how you can find a suitable CRTC id to drive this connector. This
176:selected connector as \fBconn\fP\&. It returns an integer smaller than 0 on
191:            /* cannot retrieve encoder, ignoring... */
203:             * currently uses the CRTC with id \(dqcrtc\(dq. If you intend
205:             * step. Otherwise, simply scan your list of configured
207:             * used. If it is, then simply continue the search here. */

-.-.

Split lines longer than 80 characters into two or more lines.
Appropriate break points are the end of a sentence and a subordinate
clause; after punctuation marks.
Add "\:" to split the string for the output, "\<newline>" in the source.  


Line 43, length 86

\fIUser\-space Mode\-Setting\fP (UMS). Almost all open\-source drivers now 
provide the

Line 47, length 84

understand how KMS works, we need to introduce 5 objects: \fICRTCs\fP, 
\fIPlanes\fP,

Line 52, length 84

A \fICRTC\fP short for \fICRT Controller\fP is an abstraction representing a 
part of

Line 103, length 84

\fBdrmSetMaster\fP(3) to become \fIDRM\-Master\fP\&. It then has exclusive 
access to

Line 104, length 82

the KMS API. A call to \fBdrmModeGetResources\fP(3) returns a list of 
\fICRTCs\fP,

Line 122, length 85

\fBdrmModeGetConnector\fP(3) You need to select the mode you want to use and 
save it.

Line 141, length 82

buffer to flip. If you want to synchronize your flips with 
\fIvertical\-blanks\fP,

-.-.

Put a parenthetical sentence, phrase on a separate line,
if not part of a code.
See man-pages(7), item "semantic newline".


drm-kms.7:57:object), a list of driven connectors, a display mode and an (x, y) 
offset
drm-kms.7:112:use a single CRTC for all cloned connectors (if the hardware 
supports this). To
drm-kms.7:174:function takes a file\-descriptor to the DRM device (see 
\fBdrmOpen\fP(3)) as

-.-.

No need for "\&" to be in front of a period (.),
if there is a character in front of it

48:\fIEncoders\fP, \fIConnectors\fP and \fIFramebuffers\fP\&.
103:\fBdrmSetMaster\fP(3) to become \fIDRM\-Master\fP\&. It then has exclusive 
access to
105:\fIConnectors\fP, \fIEncoders\fP and \fIPlanes\fP\&.
143:next \fIvblank\fP\&.
176:selected connector as \fBconn\fP\&. It returns an integer smaller than 0 on

-.-.

Remove quotes when there is a printable
but no space character between them
and the quotes are not for emphasis (markup),
for example as an argument to a macro.

30:.TH "DRM-KMS" "7" "September 2012" "" "Direct Rendering Manager"

-.-.

Remove excessive "\&" when it has no functional purpose.

48:\fIEncoders\fP, \fIConnectors\fP and \fIFramebuffers\fP\&.
103:\fBdrmSetMaster\fP(3) to become \fIDRM\-Master\fP\&. It then has exclusive 
access to
105:\fIConnectors\fP, \fIEncoders\fP and \fIPlanes\fP\&.
143:next \fIvblank\fP\&.
176:selected connector as \fBconn\fP\&. It returns an integer smaller than 0 on

-.-.

Output from "test-groff  -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z 
":

an.tmac:<stdin>:30: style: .TH missing fourth argument; consider 
package/project name and version (e.g., "groff 1.23.0")
an.tmac:<stdin>:226: style: 1 leading space(s) on input line
troff:<stdin>:226: warning: trailing space in the line

Output from "test-nroff  -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z 
":

an.tmac:<stdin>:30: style: .TH missing fourth argument; consider 
package/project name and version (e.g., "groff 1.23.0")
an.tmac:<stdin>:226: style: 1 leading space(s) on input line
troff:<stdin>:226: warning: trailing space in the line

-.-.

Spelling (codespel):

overlayed ==> overlaid
respresents ==> represents

-.-

Generally:

Split (sometimes) lines after a punctuation mark; before a conjunction.
--- drm-kms.7   2025-02-20 20:56:20.183616499 +0000
+++ drm-kms.7.new       2025-02-20 21:34:21.443617831 +0000
@@ -27,34 +27,38 @@ level margin: \\n[rst2man-indent\\n[rst2
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "DRM-KMS" "7" "September 2012" "" "Direct Rendering Manager"
+.TH DRM-KMS 7 "September 2012" "" "Direct Rendering Manager"
 .SH NAME
 drm-kms \- Kernel Mode-Setting
 .SH SYNOPSIS
-.sp
 \fB#include <xf86drm.h>\fP
 .sp
 \fB#include <xf86drmMode.h>\fP
 .SH DESCRIPTION
-.sp
 Each DRM device provides access to manage which monitors and displays are
 currently used and what frames to be displayed. This task is called \fIKernel
 Mode\-Setting\fP (KMS). Historically, this was done in user\-space and called
-\fIUser\-space Mode\-Setting\fP (UMS). Almost all open\-source drivers now 
provide the
+\fIUser\-space Mode\-Setting\fP (UMS).
+Almost all open\-source drivers now provide the
 KMS kernel API to do this in the kernel, however, many non\-open\-source binary
 drivers from different vendors still do not support this. You can use
-\fBdrmModeSettingSupported\fP(3) to check whether your driver supports this. To
-understand how KMS works, we need to introduce 5 objects: \fICRTCs\fP, 
\fIPlanes\fP,
-\fIEncoders\fP, \fIConnectors\fP and \fIFramebuffers\fP\&.
+\fBdrmModeSettingSupported\fP(3) to check whether your driver supports
+this.
+To understand how KMS works,
+we need to introduce 5 objects:
+\fICRTCs\fP, \fIPlanes\fP,
+\fIEncoders\fP, \fIConnectors\fP and \fIFramebuffers\fP.
 .INDENT 0.0
 .TP
 .B CRTCs
-A \fICRTC\fP short for \fICRT Controller\fP is an abstraction representing a 
part of
+A \fICRTC\fP short for \fICRT Controller\fP is an abstraction
+representing a part of
 the chip that contains a pointer to a scanout buffer.  Therefore, the number
 of CRTCs available determines how many independent scanout buffers can be
 active at any given time. The CRTC structure contains several fields to
-support this: a pointer to some video memory (abstracted as a frame\-buffer
-object), a list of driven connectors, a display mode and an (x, y) offset
+support this: a pointer to some video memory
+(abstracted as a frame\-buffer object),
+a list of driven connectors, a display mode and an (x, y) offset
 into the video memory to support panning or configurations where one piece
 of video memory spans multiple CRTCs. A CRTC is the central point where
 configuration of displays happens. You select which objects to use, which
@@ -62,11 +66,12 @@ modes and which parameters and then conf
 \fBdrmModeCrtcSet\fP(3) to drive the display devices.
 .TP
 .B Planes
-A \fIplane\fP respresents an image source that can be blended with or overlayed
+A \fIplane\fP represents an image source that can be blended with or overlaid
 on top of a CRTC during the scanout process. Planes are associated with a
 frame\-buffer to crop a portion of the image memory (source) and optionally
-scale it to a destination size. The result is then blended with or overlayed
-on top of a CRTC. Planes are not provided by all hardware and the number of
+scale it to a destination size. The result is then blended with or overlaid
+on top of a CRTC.
+Planes are not provided by all hardware and the number of
 available planes is limited. If planes are not available or if not enough
 planes are available, the user should fall back to normal software blending
 (via GPU or CPU).
@@ -98,19 +103,20 @@ no data. It just refers to memory buffer
 \fBdrm\-memory\fP(7) API.
 .UNINDENT
 .SS Mode\-Setting
-.sp
 Before mode\-setting can be performed, an application needs to call
-\fBdrmSetMaster\fP(3) to become \fIDRM\-Master\fP\&. It then has exclusive 
access to
-the KMS API. A call to \fBdrmModeGetResources\fP(3) returns a list of 
\fICRTCs\fP,
-\fIConnectors\fP, \fIEncoders\fP and \fIPlanes\fP\&.
+\fBdrmSetMaster\fP(3) to become \fIDRM\-Master\fP.
+It then has exclusive access to the KMS API.
+A call to \fBdrmModeGetResources\fP(3) returns a list of \fICRTCs\fP,
+\fIConnectors\fP, \fIEncoders\fP and \fIPlanes\fP.
 .sp
 Normal procedure now includes: First, you select which connectors you want to
 use. Users are mostly interested in which monitor or display\-panel is active 
so
 you need to make sure to arrange them in the correct logical order and select
 the correct ones to use. For each connector, you need to find a CRTC to drive
 this connector. If you want to clone output to two or more connectors, you may
-use a single CRTC for all cloned connectors (if the hardware supports this). To
-find a suitable CRTC, you need to iterate over the list of encoders that are
+use a single CRTC for all cloned connectors
+(if the hardware supports this).
+To find a suitable CRTC, you need to iterate over the list of encoders that are
 available for each connector. Each encoder contains a list of CRTCs that it can
 work with and you simply select one of these CRTCs. If you later program the
 CRTC to control a connector, it automatically selects the best encoder.
@@ -119,7 +125,8 @@ for the selected connector. See the \fIE
 information.
 .sp
 All valid modes for a connector can be retrieved with a call to
-\fBdrmModeGetConnector\fP(3) You need to select the mode you want to use and 
save it.
+\fBdrmModeGetConnector\fP(3).
+You need to select the mode you want to use and save it.
 The first mode in the list is the default mode with the highest resolution
 possible and often a suitable choice.
 .sp
@@ -133,16 +140,15 @@ object that uses your memory\-buffer as
 As a last step, you want to program your CRTC to drive your selected connector.
 You can do this with a call to \fBdrmModeSetCrtc\fP(3).
 .SS Page\-Flipping
-.sp
 A call to \fBdrmModeSetCrtc\fP(3) is executed immediately and forces the CRTC
 to use the new scanout buffer. If you want smooth\-transitions without tearing,
 you probably use double\-buffering. You need to create one framebuffer object
 for each buffer you use. You can then call \fBdrmModeSetCrtc\fP(3) on the next
-buffer to flip. If you want to synchronize your flips with 
\fIvertical\-blanks\fP,
+buffer to flip.
+If you want to synchronize your flips with \fIvertical\-blanks\fP,
 you can use \fBdrmModePageFlip\fP(3) which schedules your page\-flip for the
-next \fIvblank\fP\&.
+next \fIvblank\fP.
 .SS Planes
-.sp
 Planes are controlled independently from CRTCs. That is, a call to
 \fBdrmModeSetCrtc\fP(3) does not affect planes. Instead, you need to call
 \fBdrmModeSetPlane\fP(3) to configure a plane. This requires the plane ID, a
@@ -153,7 +159,6 @@ software\-blending, it is way faster tha
 resources are limited. See \fBdrmModeGetPlaneResources\fP(3) for more
 information.
 .SS Cursors
-.sp
 Similar to planes, many hardware also supports cursors. A cursor is a very
 small buffer with an image that is blended over the CRTC framebuffer. You can
 set a different cursor for each CRTC with \fBdrmModeSetCursor\fP(3) and move it
@@ -161,19 +166,19 @@ on the screen with \fBdrmModeMoveCursor\
 on the screen without rerendering. If no hardware cursors are supported, you
 need to rerender for each frame the cursor is moved.
 .SH EXAMPLES
-.sp
 Some examples of how basic mode\-setting can be done. See the man\-page of each
 DRM function for more information.
 .SS CRTC/Encoder Selection
-.sp
 If you retrieved all display configuration information via
 \fBdrmModeGetResources\fP(3) as \fBdrmModeRes *res\fP, selected a connector 
from
 the list in \fBres\->connectors\fP and retrieved the connector\-information as
 \fBdrmModeConnector *conn\fP via \fBdrmModeGetConnector\fP(3) then this example
 shows, how you can find a suitable CRTC id to drive this connector. This
-function takes a file\-descriptor to the DRM device (see \fBdrmOpen\fP(3)) as
-\fBfd\fP, a pointer to the retrieved resources as \fBres\fP and a pointer to 
the
-selected connector as \fBconn\fP\&. It returns an integer smaller than 0 on
+function takes a file\-descriptor to the DRM device
+(see \fBdrmOpen\fP(3))
+as \fBfd\fP,
+a pointer to the retrieved resources as \fBres\fP and a pointer to the
+selected connector as \fBconn\fP. It returns an integer smaller than 0 on
 failure, otherwise, a valid CRTC id is returned.
 .INDENT 0.0
 .INDENT 3.5
@@ -221,11 +226,10 @@ static int modeset_find_crtc(int fd, drm
 .UNINDENT
 .UNINDENT
 .SH REPORTING BUGS
-.sp
 Bugs in this manual should be reported to
- <https://gitlab.freedesktop.org/mesa/drm/\-/issues> 
+.ti \n(INu+2m
+<https://gitlab.freedesktop.org/mesa/drm/\-/issues>
 .SH SEE ALSO
-.sp
 \fBdrm\fP(7), \fBdrm\-memory\fP(7), \fBdrmModeGetResources\fP(3),
 \fBdrmModeGetConnector\fP(3), \fBdrmModeGetEncoder\fP(3),
 \fBdrmModeGetCrtc\fP(3), \fBdrmModeSetCrtc\fP(3), \fBdrmModeGetFB\fP(3),
  Any program (person), that produces man pages, should check the output
for defects by using (both groff and nroff)

[gn]roff -mandoc -t -ww -b -z -K utf8 <man page>

  The same goes for man pages that are used as an input.

  For a style guide use

  mandoc -T lint

-.-

  Any "autogenerator" should check its products with the above mentioned
'groff', 'mandoc', and additionally with 'nroff ...'.

  It should also check its input files for too long (> 80) lines.

  This is just a simple quality control measure.

  The "autogenerator" may have to be corrected to get a better man page,
the source file may, and any additional file may.

  Common defects:

  Not removing trailing spaces (in in- and output).
  The reason for these trailing spaces should be found and eliminated.

  "git" has a "tool" to point out whitespace,
see for example "git-apply(1)" and git-config(1)")

  Not beginning each input sentence on a new line.
Line length and patch size should thus be reduced.

  The script "reportbug" uses 'quoted-printable' encoding when a line is
longer than 1024 characters in an 'ascii' file.

  See man-pages(7), item "semantic newline".

-.-

The difference between the formatted output of the original and patched file
can be seen with:

  nroff -mandoc <file1> > <out1>
  nroff -mandoc <file2> > <out2>
  diff -d -u <out1> <out2>

and for groff, using

\"printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - \"

instead of 'nroff -mandoc'

  Add the option '-t', if the file contains a table.

  Read the output from 'diff -d -u ...' with 'less -R' or similar.

-.-.

  If 'man' (man-db) is used to check the manual for warnings,
the following must be set:

  The option \"-warnings=w\"

  The environmental variable:

export MAN_KEEP_STDERR=yes (or any non-empty value)

  or

  (produce only warnings):

export MANROFFOPT=\"-ww -b -z\"

export MAN_KEEP_STDERR=yes (or any non-empty value)

-.-

Reply via email to