Description
What MCU/Processor/Board and compiler are you using?
xilinx zynq 7020
What LVGL version are you using?
version 9.1
What do you want to achieve?
I want to implement LVGL output RGB888 data format to the screen buffer area instead of BGR888 data format.
Why?
My screen has a serious color cast issue after using the RGB/BGR function. For RGB888 format, the screen can display normally.
This may be a flaw in the screen design. I asked the screen manufacturer, but they didn’t provide me any solution.
So I can`t use the RGB/BGR function of the screen. I can only use the RGB888 data format.
What have you tried so far?
Now I can use lvgl normally in RGB565 data format. I used lv_draw_sw_rgb565_swap();
But for RGB888 format,I can’t find any relevant instructions online。
I`m not very familiar with the internal operating mechanism of LVGL.
After reading some blogs,I learned that the LVGL V9 kernel uniformly uses the ARGB888 format to process data. Finally, convert to the specified data format.
So I believe that for RGB565, the data format undergoes the following conversion: ARGB888 --(Some conversions)–> BGR565 —(lv_draw_sw_rgb565_swap();)–> RGB565 (after swap high and low bytes).
Is my description correct?
I want to achieve direct conversion from ARGB888 format to RGB888 format output, instead of first converting to BGR888 format and then converting to RGB888 format.
ARGB888 --(Some conversions)–> RGB888.
I want to avoid wasting processor performance with multiple conversions.
So what functions and settings should be modified to achieve this functionality?
Screenshot and/or video
RGB888 format(All white pixels),Disable the RGB/BGR function of the screen.
BGR888 format(All white pixels),Use the RGB/BGR function of the screen.