* [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer
@ 2026-11-04 2:34 Sebastian Raase
2026-11-04 2:34 ` [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format Sebastian Raase
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Sebastian Raase @ 2026-11-04 2:34 UTC (permalink / raw)
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-fbdev, dri-devel,
devicetree, linux-kernel, Helge Deller, Sebastian Raase
This patch series adds support for monochrome framebuffers (1 bpp, packed-pixel)
to simple-framebuffer.
Monochrome framebuffers require far less video memory and bandwidth than
16bpp or 32bpp framebuffers, making them useful for small devices or FPGA
implementations.
Sebastian Raase (2):
fbdev: simplefb: Add mono framebuffer format
dt-bindings: display: simple-framebuffer: Document mono format
.../devicetree/bindings/display/simple-framebuffer.yaml | 2 ++
drivers/video/fbdev/simplefb.c | 2 ++
include/linux/platform_data/simplefb.h | 1 +
3 files changed, 5 insertions(+)
--
2.47.3
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format
2026-11-04 2:34 [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Sebastian Raase
@ 2026-11-04 2:34 ` Sebastian Raase
2026-11-04 2:56 ` sashiko-bot
2026-11-10 23:25 ` Helge Deller
2026-11-04 2:34 ` [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format Sebastian Raase
2026-11-11 11:15 ` [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Hans de Goede
2 siblings, 2 replies; 12+ messages in thread
From: Sebastian Raase @ 2026-11-04 2:34 UTC (permalink / raw)
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-fbdev, dri-devel,
devicetree, linux-kernel, Helge Deller, Sebastian Raase
Add a new simple-framebuffer format for monochrome 1 bit-per-pixel
framebuffers. Monochrome framebuffers are not true color, so their
visual is set to FB_VISUAL_MONO10 (set pixels are bright).
Signed-off-by: Sebastian Raase <linux@sraa.de>
---
drivers/video/fbdev/simplefb.c | 2 ++
include/linux/platform_data/simplefb.h | 1 +
2 files changed, 3 insertions(+)
diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index 60e5dcec201f..4662101885ec 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -583,6 +583,8 @@ static int simplefb_probe(struct platform_device *pdev)
info->fix.smem_start = mem->start;
info->fix.smem_len = resource_size(mem);
info->fix.line_length = params.stride;
+ if (params.format->bits_per_pixel == 1)
+ info->fix.visual = FB_VISUAL_MONO10;
info->var = simplefb_var;
info->var.xres = params.width;
diff --git a/include/linux/platform_data/simplefb.h b/include/linux/platform_data/simplefb.h
index 4f94d52ac99f..9b6d822145c9 100644
--- a/include/linux/platform_data/simplefb.h
+++ b/include/linux/platform_data/simplefb.h
@@ -15,6 +15,7 @@
/* format array, use it to initialize a "struct simplefb_format" array */
#define SIMPLEFB_FORMATS \
{ \
+ { "mono", 1, {0, 1}, {0, 1}, {0, 1}, {0, 0}, DRM_FORMAT_R1 }, \
{ "r5g6b5", 16, {11, 5}, {5, 6}, {0, 5}, {0, 0}, DRM_FORMAT_RGB565 }, \
{ "r5g5b5a1", 16, {11, 5}, {6, 5}, {1, 5}, {0, 1}, DRM_FORMAT_RGBA5551 }, \
{ "x1r5g5b5", 16, {10, 5}, {5, 5}, {0, 5}, {0, 0}, DRM_FORMAT_XRGB1555 }, \
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format
2026-11-04 2:34 [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Sebastian Raase
2026-11-04 2:34 ` [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format Sebastian Raase
@ 2026-11-04 2:34 ` Sebastian Raase
2026-11-04 2:49 ` sashiko-bot
2026-11-12 7:35 ` Thomas Zimmermann
2026-11-11 11:15 ` [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Hans de Goede
2 siblings, 2 replies; 12+ messages in thread
From: Sebastian Raase @ 2026-11-04 2:34 UTC (permalink / raw)
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-fbdev, dri-devel,
devicetree, linux-kernel, Helge Deller, Sebastian Raase
This is a 1 bit-per-pixel monochrome format, with 8 pixels/byte.
Signed-off-by: Sebastian Raase <linux@sraa.de>
---
.../devicetree/bindings/display/simple-framebuffer.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
index 45ffdebc9d86..c627ec088434 100644
--- a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
+++ b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
@@ -94,6 +94,7 @@ properties:
format:
description: >
Format of the framebuffer:
+ * `mono` - 1-bit packed pixels, 8 pixels/byte
* `a1r5g5b5` - 16-bit pixels, d[15]=a, d[14:10]=r, d[9:5]=g, d[4:0]=b
* `a2r10g10b10` - 32-bit pixels, d[31:30]=a, d[29:20]=r, d[19:10]=g, d[9:0]=b
* `a8b8g8r8` - 32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r
@@ -106,6 +107,7 @@ properties:
* `x8r8g8b8` - 32-bit pixels, d[23:16]=r, d[15:8]=g, d[7:0]=b
* `x8b8g8r8` - 32-bit pixels, d[23:16]=b, d[15:8]=g, d[7:0]=r
enum:
+ - mono
- a1r5g5b5
- a2r10g10b10
- a8b8g8r8
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format
2026-11-04 2:34 ` [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format Sebastian Raase
@ 2026-11-04 2:49 ` sashiko-bot
2026-11-12 7:35 ` Thomas Zimmermann
1 sibling, 0 replies; 12+ messages in thread
From: sashiko-bot @ 2026-11-04 2:49 UTC (permalink / raw)
To: Sebastian Raase; +Cc: dri-devel, devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/sysfb: missing DRM_FORMAT_R1 blit and clip support for mono format
- [Medium] dt-bindings: display: simple-framebuffer: underspecified mono bit order
--
commit 20af76c182c22fb42d62d508852f5a56db4c14ee
Author: Sebastian Raase <linux@sraa.de>
dt-bindings: display: simple-framebuffer: Document mono format
This commit documents the mono format in the simple-framebuffer Device Tree
binding as a 1-bit packed pixel monochrome format with 8 pixels per byte.
> diff --git a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
> index 45ffdebc9d86b..c627ec088434e 100644
> --- a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
> +++ b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
> @@ -94,6 +94,7 @@ properties:
> format:
> description: >
> Format of the framebuffer:
> + * `mono` - 1-bit packed pixels, 8 pixels/byte
[Severity: Medium]
Should the binding description specify both the pixel polarity and the
intra-byte bit ordering for mono, similar to how the other formats define
their bit-to-channel mappings?
In include/linux/platform_data/simplefb.h, SIMPLEFB_FORMATS maps mono to
DRM_FORMAT_R1:
include/linux/platform_data/simplefb.h:
#define SIMPLEFB_FORMATS \
{ \
{ "mono", 1, {0, 1}, {0, 1}, {0, 1}, {0, 0}, DRM_FORMAT_R1 }, \
In include/uapi/drm/drm_fourcc.h, DRM_FORMAT_R1 is defined with the leftmost
pixel in bit 7 (MSB) and the rightmost pixel in bit 0 (LSB).
However, in drivers/video/fbdev/simplefb.c, simplefb_probe() sets
info->fix.visual = FB_VISUAL_MONO10 and uses FB_DEFAULT_IOMEM_OPS without
setting FBINFO_BE_MATH or FB_NONSTD_REV_PIX_IN_B:
drivers/video/fbdev/simplefb.c:simplefb_probe() {
...
if (params.format->bits_per_pixel == 1)
info->fix.visual = FB_VISUAL_MONO10;
else
info->fix.visual = FB_VISUAL_TRUECOLOR;
...
}
Because fb_reverse_init() in drivers/video/fbdev/core/fb_draw.h places the
leftmost pixel at bit 0 (LSB) on little-endian CPUs and at bit 7 (MSB) on
big-endian CPUs unless reversed, does simplefb end up using a CPU-endian
dependent pixel bit order that is reversed relative to DRM_FORMAT_R1 on
little-endian systems?
> * `a1r5g5b5` - 16-bit pixels, d[15]=a, d[14:10]=r, d[9:5]=g, d[4:0]=b
> * `a2r10g10b10` - 32-bit pixels, d[31:30]=a, d[29:20]=r, d[19:10]=g, d[9:0]=b
> * `a8b8g8r8` - 32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r
> @@ -106,6 +107,7 @@ properties:
> * `x8r8g8b8` - 32-bit pixels, d[23:16]=r, d[15:8]=g, d[7:0]=b
> * `x8b8g8r8` - 32-bit pixels, d[23:16]=b, d[15:8]=g, d[7:0]=r
> enum:
> + - mono
[Severity: High]
How does simpledrm handle a simple-framebuffer Device Tree node with
format = "mono" when CONFIG_DRM_SIMPLEDRM is enabled?
Both simplefb and simpledrm bind to simple-framebuffer nodes and validate the
format property against SIMPLEFB_FORMATS:
drivers/gpu/drm/sysfb/simpledrm.c:
simpledrm_probe() ->
simpledrm_device_create() ->
simplefb_get_validated_format()
When simplefb_get_validated_format() accepts mono as DRM_FORMAT_R1,
simpledrm claims the framebuffer aperture and registers a DRM device whose
primary plane advertises DRM_FORMAT_R1 and emulated DRM_FORMAT_XRGB8888 via
drm_sysfb_build_fourcc_list().
During drm_client_setup(), drm_fbdev_client_setup() requests color_mode = 1,
which maps via drm_mode_legacy_fb_format(1, 1) to DRM_FORMAT_C1 rather than
DRM_FORMAT_R1, so __drm_fb_helper_find_sizes() falls back to
DRM_FORMAT_XRGB8888.
When the fbdev client or an XRGB8888 userspace compositor commits a
framebuffer, drm_sysfb_plane_helper_begin_fb_access() calls
drm_sysfb_get_blit_func(DRM_FORMAT_R1, DRM_FORMAT_XRGB8888):
drivers/gpu/drm/sysfb/drm_sysfb_modeset.c:drm_sysfb_get_blit_func() {
if (src_format == dst_format) {
return drm_sysfb_memcpy;
} else if (src_format == DRM_FORMAT_XRGB8888) {
switch (dst_format) {
case DRM_FORMAT_RGB565:
...
}
}
return NULL;
}
Since drm_sysfb_get_blit_func() has no case for DRM_FORMAT_R1, won't
drm_sysfb_plane_helper_begin_fb_access() warn and fail every XRGB8888 atomic
commit with -EINVAL?
Additionally, if a client commits a native DRM_FORMAT_R1 framebuffer with a
partial damage clip where x1 > 0, drm_sysfb_plane_helper_atomic_update()
calculates the destination offset using drm_fb_clip_offset():
drivers/gpu/drm/sysfb/drm_sysfb_modeset.c:drm_sysfb_plane_helper_atomic_update() {
...
iosys_map_incr(&dst, drm_fb_clip_offset(dst_pitch, dst_format, &dst_clip));
blit_to_crtc(&dst, &dst_pitch, shadow_plane_state->data, fb, &damage,
&shadow_plane_state->fmtcnv_state);
...
}
Because dst_format->cpp[0] is 0 for DRM_FORMAT_R1 while drm_fb_memcpy() uses
DIV_ROUND_UP(bpp, 8) = 1 byte per pixel for the source clip offset, wouldn't
partial damage updates also miscalculate horizontal offsets?
--
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1793758480.git.linux@sraa.de?part=2
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format
2026-11-04 2:34 ` [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format Sebastian Raase
@ 2026-11-04 2:56 ` sashiko-bot
2026-11-10 23:25 ` Helge Deller
1 sibling, 0 replies; 12+ messages in thread
From: sashiko-bot @ 2026-11-04 2:56 UTC (permalink / raw)
To: Sebastian Raase; +Cc: dri-devel, devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] fbdev: simplefb: adding DRM_FORMAT_R1 to SIMPLEFB_FORMATS breaks simpledrm
- [Medium] fbdev: simplefb: mono bit order in cfb helpers mismatches DRM_FORMAT_R1
--
commit 89b64a8b00831d236b9621c5f7f6d3729ed70512
Author: Sebastian Raase <linux@sraa.de>
fbdev: simplefb: Add mono framebuffer format
This commit adds a 1 bit-per-pixel monochrome ("mono") format entry mapped
to DRM_FORMAT_R1 in SIMPLEFB_FORMATS and configures simplefb to use the
FB_VISUAL_MONO10 visual when probing 1-bpp framebuffers.
> diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
> index 60e5dcec201ff..4662101885ec5 100644
> --- a/drivers/video/fbdev/simplefb.c
> +++ b/drivers/video/fbdev/simplefb.c
> @@ -583,6 +583,8 @@ static int simplefb_probe(struct platform_device *pdev)
> info->fix.smem_start = mem->start;
> info->fix.smem_len = resource_size(mem);
> info->fix.line_length = params.stride;
> + if (params.format->bits_per_pixel == 1)
> + info->fix.visual = FB_VISUAL_MONO10;
[Severity: Medium]
Does the bit ordering used by the cfb drawing helpers match DRM_FORMAT_R1 on
little-endian systems?
In include/uapi/drm/drm_fourcc.h, DRM_FORMAT_R1 is defined with MSB-first
pixel ordering ([7:0] R0:R1:R2:R3:R4:R5:R6:R7, where the leftmost pixel R0 is
in bit 7).
However, in drivers/video/fbdev/core/fb_draw.h, fb_reverse_init() and the
cfb drawing helpers (cfb_imageblit(), cfb_fillrect(), cfb_copyarea()) place
pixel 0 in the LSB on little-endian architectures and in the MSB on
big-endian architectures unless CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is enabled
and FB_NONSTD_REV_PIX_IN_B is set in info->var.nonstd:
drivers/video/fbdev/core/fb_draw.h:fb_reverse_init() {
struct fb_reverse reverse;
#ifdef __LITTLE_ENDIAN
reverse.byte = fb_be_math(info) != 0;
#else
reverse.byte = fb_be_math(info) == 0;
#endif
#ifdef FB_REV_PIXELS_IN_BYTE
reverse.pixel = info->var.bits_per_pixel < BITS_PER_BYTE
&& (info->var.nonstd & FB_NONSTD_REV_PIX_IN_B);
#else
reverse.pixel = false;
#endif
return reverse;
}
Since simplefb leaves info->var.nonstd at 0 and does not select
FB_CFB_REV_PIXELS_IN_BYTE, won't the 8 horizontal pixels within each byte be
bit-reversed relative to DRM_FORMAT_R1 (and relative to big-endian simplefb)
on little-endian machines?
>
> info->var = simplefb_var;
> info->var.xres = params.width;
> diff --git a/include/linux/platform_data/simplefb.h b/include/linux/platform_data/simplefb.h
> index 4f94d52ac99fc..9b6d822145c9e 100644
> --- a/include/linux/platform_data/simplefb.h
> +++ b/include/linux/platform_data/simplefb.h
> @@ -15,6 +15,7 @@
> /* format array, use it to initialize a "struct simplefb_format" array */
> #define SIMPLEFB_FORMATS \
> { \
> + { "mono", 1, {0, 1}, {0, 1}, {0, 1}, {0, 0}, DRM_FORMAT_R1 }, \
[Severity: High]
Can adding "mono" with DRM_FORMAT_R1 to SIMPLEFB_FORMATS break display output
when simpledrm is enabled?
SIMPLEFB_FORMATS is shared with drivers/gpu/drm/sysfb/simpledrm.c, where
simplefb_get_validated_format() matches fmt->name and looks up fmt->fourcc:
drivers/gpu/drm/sysfb/simpledrm.c:simplefb_get_validated_format() {
...
if (!strcmp(format_name, fmt->name)) {
info = drm_format_info(fmt->fourcc);
if (!info)
return ERR_PTR(-EINVAL);
return info;
}
...
}
With this entry added, simpledrm binds to "mono" simple-framebuffer devices,
acquires the aperture (evicting or blocking simplefb), and registers a
primary plane advertising DRM_FORMAT_R1 and emulated DRM_FORMAT_XRGB8888.
When in-kernel clients (such as fbdev emulation via drm_client_setup() ->
drm_fbdev_client_setup()) or userspace compositors commit an XRGB8888
framebuffer, drm_sysfb_plane_helper_begin_fb_access() calls
drm_sysfb_get_blit_func(DRM_FORMAT_R1, DRM_FORMAT_XRGB8888):
drivers/gpu/drm/sysfb/drm_sysfb_modeset.c:drm_sysfb_get_blit_func() {
if (src_format == dst_format) {
return drm_sysfb_memcpy;
} else if (src_format == DRM_FORMAT_XRGB8888) {
switch (dst_format) {
case DRM_FORMAT_RGB565:
return drm_fb_xrgb8888_to_rgb565;
...
}
}
return NULL;
}
Because drm_sysfb_get_blit_func() has no conversion helper for DRM_FORMAT_R1,
it returns NULL, triggering a warning and failing every XRGB8888 atomic
commit with -EINVAL.
Additionally, if a userspace client commits a native DRM_FORMAT_R1
framebuffer with a non-zero horizontal damage clip offset (clip->x1 > 0),
drm_sysfb_memcpy() calls drm_fb_memcpy():
drivers/gpu/drm/drm_format_helper.c:drm_fb_memcpy() {
...
unsigned int bpp_i = drm_format_info_bpp(format, i);
unsigned int cpp_i = DIV_ROUND_UP(bpp_i, 8);
size_t len_i = DIV_ROUND_UP(drm_rect_width(clip) * bpp_i, 8);
src_i += clip_offset(clip, src->pitches[i], cpp_i);
...
}
For 1-bpp DRM_FORMAT_R1, cpp_i evaluates to 1 byte per pixel, so clip_offset()
advances src_i by clip->x1 bytes instead of bits (8 times the horizontal
byte offset) while drm_sysfb_plane_helper_atomic_update() offsets dst using
dst_format->cpp[0] == 0. Won't that read past the end of the source buffer on
partial horizontal updates?
--
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1793758480.git.linux@sraa.de?part=1
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format
2026-11-04 2:34 ` [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format Sebastian Raase
2026-11-04 2:56 ` sashiko-bot
@ 2026-11-10 23:25 ` Helge Deller
2026-11-11 15:27 ` Thomas Zimmermann
1 sibling, 1 reply; 12+ messages in thread
From: Helge Deller @ 2026-11-10 23:25 UTC (permalink / raw)
To: Sebastian Raase
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-fbdev, dri-devel,
devicetree, linux-kernel
On 11/4/26 03:34, Sebastian Raase wrote:
> Add a new simple-framebuffer format for monochrome 1 bit-per-pixel
> framebuffers. Monochrome framebuffers are not true color, so their
> visual is set to FB_VISUAL_MONO10 (set pixels are bright).
>
> Signed-off-by: Sebastian Raase <linux@sraa.de>
> ---
> drivers/video/fbdev/simplefb.c | 2 ++
> include/linux/platform_data/simplefb.h | 1 +
> 2 files changed, 3 insertions(+)
series applied to fbdev git tree.
Thanks!
Helge
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer
2026-11-04 2:34 [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Sebastian Raase
2026-11-04 2:34 ` [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format Sebastian Raase
2026-11-04 2:34 ` [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format Sebastian Raase
@ 2026-11-11 11:15 ` Hans de Goede
2026-11-11 15:32 ` Thomas Zimmermann
2 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2026-11-11 11:15 UTC (permalink / raw)
To: Sebastian Raase
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-fbdev, dri-devel, devicetree, linux-kernel, Helge Deller
Hi Sebastian,
On 4-Nov-26 03:34, Sebastian Raase wrote:
> This patch series adds support for monochrome framebuffers (1 bpp, packed-pixel)
> to simple-framebuffer.
>
> Monochrome framebuffers require far less video memory and bandwidth than
> 16bpp or 32bpp framebuffers, making them useful for small devices or FPGA
> implementations.
Thank you for your patch-series and I see that Helge has just
applied this to the fbdev tree.
Have you considered also extending the simpledrm driver to also
support these monochrome formats there ?
Most Linux distributions now a days have switched from using simplefb
to using simpledrm.
But I must admit I've no idea how well the drm subsys / kernel-mode-
setting API handles monochrome formats.
Regards,
Hans
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format
2026-11-10 23:25 ` Helge Deller
@ 2026-11-11 15:27 ` Thomas Zimmermann
2026-11-11 17:52 ` Helge Deller
0 siblings, 1 reply; 12+ messages in thread
From: Thomas Zimmermann @ 2026-11-11 15:27 UTC (permalink / raw)
To: Helge Deller, Sebastian Raase
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard, David Airlie,
Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-fbdev, dri-devel, devicetree, linux-kernel
Hi Helge
Am 11.11.26 um 00:25 schrieb Helge Deller:
> On 11/4/26 03:34, Sebastian Raase wrote:
>> Add a new simple-framebuffer format for monochrome 1 bit-per-pixel
>> framebuffers. Monochrome framebuffers are not true color, so their
>> visual is set to FB_VISUAL_MONO10 (set pixels are bright).
>>
>> Signed-off-by: Sebastian Raase <linux@sraa.de>
>> ---
>> drivers/video/fbdev/simplefb.c | 2 ++
>> include/linux/platform_data/simplefb.h | 1 +
>> 2 files changed, 3 insertions(+)
> series applied to fbdev git tree.
Isn't that a bit premature? There's no use-case give; except
because-we-can. And doesn't it require a review from DT maintainers?
Best regards
Thomas
>
> Thanks!
> Helge
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer
2026-11-11 11:15 ` [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Hans de Goede
@ 2026-11-11 15:32 ` Thomas Zimmermann
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Zimmermann @ 2026-11-11 15:32 UTC (permalink / raw)
To: Hans de Goede, Sebastian Raase
Cc: Maarten Lankhorst, Maxime Ripard, David Airlie, Simona Vetter,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-fbdev,
dri-devel, devicetree, linux-kernel, Helge Deller
Hi
Am 11.11.26 um 12:15 schrieb Hans de Goede:
> Hi Sebastian,
>
> On 4-Nov-26 03:34, Sebastian Raase wrote:
>> This patch series adds support for monochrome framebuffers (1 bpp, packed-pixel)
>> to simple-framebuffer.
>>
>> Monochrome framebuffers require far less video memory and bandwidth than
>> 16bpp or 32bpp framebuffers, making them useful for small devices or FPGA
>> implementations.
> Thank you for your patch-series and I see that Helge has just
> applied this to the fbdev tree.
>
> Have you considered also extending the simpledrm driver to also
> support these monochrome formats there ?
>
> Most Linux distributions now a days have switched from using simplefb
> to using simpledrm.
>
> But I must admit I've no idea how well the drm subsys / kernel-mode-
> setting API handles monochrome formats.
Only kind of. We either support it natively if the compositor can handle
it, or we convert from XRGB8888 to the internal pixel format. But our
helpers for converting pixel formats expect 8-bit per pixel at a
minimum. All the drivers with lower pixel size do some kind of
workaround. I'd love to see better support, but had no time to work on it.
Best regards
Thomas
>
> Regards,
>
> Hans
>
>
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format
2026-11-11 15:27 ` Thomas Zimmermann
@ 2026-11-11 17:52 ` Helge Deller
2026-11-12 7:23 ` Thomas Zimmermann
0 siblings, 1 reply; 12+ messages in thread
From: Helge Deller @ 2026-11-11 17:52 UTC (permalink / raw)
To: Thomas Zimmermann, Sebastian Raase
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard, David Airlie,
Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-fbdev, dri-devel, devicetree, linux-kernel
On 11/11/26 16:27, Thomas Zimmermann wrote:
> Hi Helge
>
> Am 11.11.26 um 00:25 schrieb Helge Deller:
>> On 11/4/26 03:34, Sebastian Raase wrote:
>>> Add a new simple-framebuffer format for monochrome 1 bit-per-pixel
>>> framebuffers. Monochrome framebuffers are not true color, so their
>>> visual is set to FB_VISUAL_MONO10 (set pixels are bright).
>>>
>>> Signed-off-by: Sebastian Raase <linux@sraa.de>
>>> ---
>>> drivers/video/fbdev/simplefb.c | 2 ++
>>> include/linux/platform_data/simplefb.h | 1 +
>>> 2 files changed, 3 insertions(+)
>> series applied to fbdev git tree.
>
> Isn't that a bit premature? There's no use-case give; except because-
> we-can. And doesn't it require a review from DT maintainers?
I'm happy to add any Reviews or Acks, or drop it again if there are any objections.
Helge
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format
2026-11-11 17:52 ` Helge Deller
@ 2026-11-12 7:23 ` Thomas Zimmermann
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Zimmermann @ 2026-11-12 7:23 UTC (permalink / raw)
To: Helge Deller, Sebastian Raase
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard, David Airlie,
Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-fbdev, dri-devel, devicetree, linux-kernel
Hi
Am 11.11.26 um 18:52 schrieb Helge Deller:
> On 11/11/26 16:27, Thomas Zimmermann wrote:
>> Hi Helge
>>
>> Am 11.11.26 um 00:25 schrieb Helge Deller:
>>> On 11/4/26 03:34, Sebastian Raase wrote:
>>>> Add a new simple-framebuffer format for monochrome 1 bit-per-pixel
>>>> framebuffers. Monochrome framebuffers are not true color, so their
>>>> visual is set to FB_VISUAL_MONO10 (set pixels are bright).
>>>>
>>>> Signed-off-by: Sebastian Raase <linux@sraa.de>
>>>> ---
>>>> drivers/video/fbdev/simplefb.c | 2 ++
>>>> include/linux/platform_data/simplefb.h | 1 +
>>>> 2 files changed, 3 insertions(+)
>>> series applied to fbdev git tree.
>>
>> Isn't that a bit premature? There's no use-case give; except because-
>> we-can. And doesn't it require a review from DT maintainers?
>
> I'm happy to add any Reviews or Acks, or drop it again if there are
> any objections.
Ok, sure. No general objections from my side.
Best regards
Thomas
>
> Helge
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format
2026-11-04 2:34 ` [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format Sebastian Raase
2026-11-04 2:49 ` sashiko-bot
@ 2026-11-12 7:35 ` Thomas Zimmermann
1 sibling, 0 replies; 12+ messages in thread
From: Thomas Zimmermann @ 2026-11-12 7:35 UTC (permalink / raw)
To: Sebastian Raase
Cc: Hans de Goede, Maarten Lankhorst, Maxime Ripard, David Airlie,
Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-fbdev, dri-devel, devicetree, linux-kernel, Helge Deller
Hi
Am 04.11.26 um 03:34 schrieb Sebastian Raase:
> This is a 1 bit-per-pixel monochrome format, with 8 pixels/byte.
>
> Signed-off-by: Sebastian Raase <linux@sraa.de>
> ---
> .../devicetree/bindings/display/simple-framebuffer.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
> index 45ffdebc9d86..c627ec088434 100644
> --- a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
> +++ b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml
> @@ -94,6 +94,7 @@ properties:
> format:
> description: >
> Format of the framebuffer:
> + * `mono` - 1-bit packed pixels, 8 pixels/byte
I don't object the change, but I really object the naming.
Mono is not a good name because it doesn't describe the format's pixel
layout. For example, RGB with only 2 colors is also mono in some sense.
The common names used in the Linux kernel for this type of color format
are C1 and R1. More generally speaking,
- Cn describes an n-bit format with a palette. The pixel bits index
into the palette. Pixels are packed.
- Rn describes an n-bit format with a single color channel. The
channel has linear color gradient. Pixels are packed.
In your case, you'd define 'r1'. While at it, we can also define r2, r4,
and r8. The terminal supports up to 16 colors, so implementing r4 might
be of interest to some simple hardware.
Best regards
Thomas
> * `a1r5g5b5` - 16-bit pixels, d[15]=a, d[14:10]=r, d[9:5]=g, d[4:0]=b
> * `a2r10g10b10` - 32-bit pixels, d[31:30]=a, d[29:20]=r, d[19:10]=g, d[9:0]=b
> * `a8b8g8r8` - 32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r
> @@ -106,6 +107,7 @@ properties:
> * `x8r8g8b8` - 32-bit pixels, d[23:16]=r, d[15:8]=g, d[7:0]=b
> * `x8b8g8r8` - 32-bit pixels, d[23:16]=b, d[15:8]=g, d[7:0]=r
> enum:
> + - mono
> - a1r5g5b5
> - a2r10g10b10
> - a8b8g8r8
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-11-12 7:36 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-04 2:34 [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Sebastian Raase
2026-11-04 2:34 ` [PATCH 1/2] fbdev: simplefb: Add mono framebuffer format Sebastian Raase
2026-11-04 2:56 ` sashiko-bot
2026-11-10 23:25 ` Helge Deller
2026-11-11 15:27 ` Thomas Zimmermann
2026-11-11 17:52 ` Helge Deller
2026-11-12 7:23 ` Thomas Zimmermann
2026-11-04 2:34 ` [PATCH 2/2] dt-bindings: display: simple-framebuffer: Document mono format Sebastian Raase
2026-11-04 2:49 ` sashiko-bot
2026-11-12 7:35 ` Thomas Zimmermann
2026-11-11 11:15 ` [PATCH 0/2] Add monochrome framebuffer support to simple-framebuffer Hans de Goede
2026-11-11 15:32 ` Thomas Zimmermann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox