Skip to content

Commit 742170d

Browse files
faxe1008carlocaione
andcommitted
modules: lvgl: handle byte-swapped RGB565 displays
Displays that advertise PIXEL_FORMAT_RGB_565X need LVGL to render RGB565 pixels in byte-swapped order. Treating RGB_565X like native RGB_565 makes non-palindromic colors decode as the wrong hue on the panel. Signed-off-by: Fabian Blatz <fabianblatz@gmail.com> Co-authored-by: Carlo Caione <ccaione@baylibre.com>
1 parent d3f409d commit 742170d

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

modules/lvgl/lvgl.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ static int lvgl_allocate_rendering_buffers(lv_display_t *display)
178178
buf_size = 3 * buf_nbr_pixels;
179179
break;
180180
case PIXEL_FORMAT_RGB_565:
181+
case PIXEL_FORMAT_RGB_565X:
181182
buf_size = 2 * buf_nbr_pixels;
182183
break;
183184
case PIXEL_FORMAT_L_8:

modules/lvgl/lvgl_display.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,17 @@ int set_lvgl_rendering_cb(lv_display_t *display)
9090
display);
9191
break;
9292
case PIXEL_FORMAT_RGB_565:
93-
case PIXEL_FORMAT_RGB_565X:
9493
lv_display_set_color_format(display, LV_COLOR_FORMAT_RGB565);
9594
lv_display_set_flush_cb(display, lvgl_flush_cb_16bit);
9695
lv_display_add_event_cb(display, lvgl_rounder_cb, LV_EVENT_INVALIDATE_AREA,
9796
display);
9897
break;
98+
case PIXEL_FORMAT_RGB_565X:
99+
lv_display_set_color_format(display, LV_COLOR_FORMAT_RGB565_SWAPPED);
100+
lv_display_set_flush_cb(display, lvgl_flush_cb_16bit);
101+
lv_display_add_event_cb(display, lvgl_rounder_cb, LV_EVENT_INVALIDATE_AREA,
102+
display);
103+
break;
99104
case PIXEL_FORMAT_L_8:
100105
lv_display_set_color_format(display, LV_COLOR_FORMAT_L8);
101106
lv_display_set_flush_cb(display, lvgl_flush_cb_8bit);

0 commit comments

Comments
 (0)