modules: lvgl: Introduce Greyscale support
This introduces support glue for L8 greyscale Signed-off-by: Camille BAUD <mail@massdriver.space>
This commit is contained in:
parent
9acf8fb230
commit
60914ac654
5 changed files with 38 additions and 0 deletions
|
@ -313,6 +313,7 @@ zephyr_library_sources(
|
|||
lvgl.c
|
||||
lvgl_display.c
|
||||
lvgl_display_mono.c
|
||||
lvgl_display_8bit.c
|
||||
lvgl_display_16bit.c
|
||||
lvgl_display_24bit.c
|
||||
lvgl_display_32bit.c
|
||||
|
|
|
@ -30,6 +30,7 @@ struct lvgl_display_flush {
|
|||
};
|
||||
|
||||
void lvgl_flush_cb_mono(lv_display_t *display, const lv_area_t *area, uint8_t *px_map);
|
||||
void lvgl_flush_cb_8bit(lv_display_t *display, const lv_area_t *area, uint8_t *px_map);
|
||||
void lvgl_flush_cb_16bit(lv_display_t *display, const lv_area_t *area, uint8_t *px_map);
|
||||
void lvgl_flush_cb_24bit(lv_display_t *display, const lv_area_t *area, uint8_t *px_map);
|
||||
void lvgl_flush_cb_32bit(lv_display_t *display, const lv_area_t *area, uint8_t *px_map);
|
||||
|
|
|
@ -146,6 +146,9 @@ static int lvgl_allocate_rendering_buffers(lv_display_t *display)
|
|||
case PIXEL_FORMAT_RGB_565:
|
||||
buf_size = 2 * buf_nbr_pixels;
|
||||
break;
|
||||
case PIXEL_FORMAT_L_8:
|
||||
buf_size = buf_nbr_pixels;
|
||||
break;
|
||||
case PIXEL_FORMAT_MONO01:
|
||||
case PIXEL_FORMAT_MONO10:
|
||||
buf_size = buf_nbr_pixels / 8 + 8;
|
||||
|
|
|
@ -96,6 +96,12 @@ int set_lvgl_rendering_cb(lv_display_t *display)
|
|||
lv_display_add_event_cb(display, lvgl_rounder_cb, LV_EVENT_INVALIDATE_AREA,
|
||||
display);
|
||||
break;
|
||||
case PIXEL_FORMAT_L_8:
|
||||
lv_display_set_color_format(display, LV_COLOR_FORMAT_L8);
|
||||
lv_display_set_flush_cb(display, lvgl_flush_cb_8bit);
|
||||
lv_display_add_event_cb(display, lvgl_rounder_cb, LV_EVENT_INVALIDATE_AREA,
|
||||
display);
|
||||
break;
|
||||
case PIXEL_FORMAT_MONO01:
|
||||
case PIXEL_FORMAT_MONO10:
|
||||
lv_display_set_color_format(display, LV_COLOR_FORMAT_I1);
|
||||
|
|
27
modules/lvgl/lvgl_display_8bit.c
Normal file
27
modules/lvgl/lvgl_display_8bit.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright (c) 2025 MASSDRIVER EI (massdriver.space)
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <lvgl.h>
|
||||
#include "lvgl_display.h"
|
||||
|
||||
void lvgl_flush_cb_8bit(lv_display_t *display, const lv_area_t *area, uint8_t *px_map)
|
||||
{
|
||||
uint16_t w = area->x2 - area->x1 + 1;
|
||||
uint16_t h = area->y2 - area->y1 + 1;
|
||||
struct lvgl_display_flush flush;
|
||||
|
||||
flush.display = display;
|
||||
flush.x = area->x1;
|
||||
flush.y = area->y1;
|
||||
flush.desc.buf_size = w * h;
|
||||
flush.desc.width = w;
|
||||
flush.desc.pitch = w;
|
||||
flush.desc.height = h;
|
||||
flush.buf = (void *)px_map;
|
||||
|
||||
lvgl_flush_display(&flush);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue