fix(draw_sw): in lv_draw_sw_rotate enable ARGB8888 functions for XRGB8888 too (#7185)

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: liamHowatt <liamjmh0@gmail.com>
This commit is contained in:
nilaygit-10721 2024-11-21 20:29:57 +05:30 committed by GitHub
parent 7cfe085f46
commit 5a609275f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 34 additions and 23 deletions

View File

@ -22,7 +22,7 @@
#if LV_DRAW_SW_SUPPORT_ARGB8888 #if LV_DRAW_SW_SUPPORT_ARGB8888
#include "lv_draw_sw_blend_to_argb8888.h" #include "lv_draw_sw_blend_to_argb8888.h"
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
#include "lv_draw_sw_blend_to_rgb888.h" #include "lv_draw_sw_blend_to_rgb888.h"
#endif #endif
#if LV_DRAW_SW_SUPPORT_I1 #if LV_DRAW_SW_SUPPORT_I1

View File

@ -62,7 +62,7 @@ static void /* LV_ATTRIBUTE_FAST_MEM */ al88_image_blend(lv_draw_sw_blend_image_
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc); static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc);
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size); const uint8_t src_px_size);
#endif #endif
@ -719,7 +719,7 @@ static void LV_ATTRIBUTE_FAST_MEM rgb565_image_blend(lv_draw_sw_blend_image_dsc_
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size) const uint8_t src_px_size)

View File

@ -64,7 +64,7 @@ typedef struct {
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc); static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc);
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size); const uint8_t src_px_size);
#endif #endif
@ -739,7 +739,7 @@ static void LV_ATTRIBUTE_FAST_MEM rgb565_image_blend(lv_draw_sw_blend_image_dsc_
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, const uint8_t src_px_size) static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, const uint8_t src_px_size)
{ {

View File

@ -50,7 +50,7 @@ static void /* LV_ATTRIBUTE_FAST_MEM */ i1_image_blend(lv_draw_sw_blend_image_ds
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc); static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc);
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size); const uint8_t src_px_size);
#endif #endif
@ -810,7 +810,7 @@ static void LV_ATTRIBUTE_FAST_MEM argb8888_image_blend(lv_draw_sw_blend_image_ds
} }
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size) const uint8_t src_px_size)
{ {

View File

@ -54,7 +54,7 @@ static void /* LV_ATTRIBUTE_FAST_MEM */ l8_image_blend(lv_draw_sw_blend_image_ds
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc); static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc);
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size); const uint8_t src_px_size);
#endif #endif
@ -668,7 +668,7 @@ static void LV_ATTRIBUTE_FAST_MEM rgb565_image_blend(lv_draw_sw_blend_image_dsc_
#endif #endif
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size) const uint8_t src_px_size)

View File

@ -54,7 +54,7 @@
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc); static void /* LV_ATTRIBUTE_FAST_MEM */ rgb565_image_blend(lv_draw_sw_blend_image_dsc_t * dsc);
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, static void /* LV_ATTRIBUTE_FAST_MEM */ rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc,
const uint8_t src_px_size); const uint8_t src_px_size);
#endif #endif
@ -862,7 +862,7 @@ static void LV_ATTRIBUTE_FAST_MEM rgb565_image_blend(lv_draw_sw_blend_image_dsc_
} }
} }
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, const uint8_t src_px_size) static void LV_ATTRIBUTE_FAST_MEM rgb888_image_blend(lv_draw_sw_blend_image_dsc_t * dsc, const uint8_t src_px_size)
{ {

View File

@ -9,7 +9,7 @@
#include "lv_draw_sw_blend_to_rgb888.h" #include "lv_draw_sw_blend_to_rgb888.h"
#if LV_USE_DRAW_SW #if LV_USE_DRAW_SW
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
#include "lv_draw_sw_blend_private.h" #include "lv_draw_sw_blend_private.h"
#include "../../../misc/lv_math.h" #include "../../../misc/lv_math.h"
@ -980,6 +980,6 @@ static inline void * LV_ATTRIBUTE_FAST_MEM drawbuf_next_row(const void * buf, ui
return (void *)((uint8_t *)buf + stride); return (void *)((uint8_t *)buf + stride);
} }
#endif #endif /*LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888*/
#endif #endif /*LV_USE_DRAW_SW*/

View File

@ -51,7 +51,7 @@ typedef struct {
static void transform_point_upscaled(point_transform_dsc_t * t, int32_t xin, int32_t yin, int32_t * xout, static void transform_point_upscaled(point_transform_dsc_t * t, int32_t xin, int32_t yin, int32_t * xout,
int32_t * yout); int32_t * yout);
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void transform_rgb888(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride, static void transform_rgb888(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride,
int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step, int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step,
int32_t x_end, uint8_t * dest_buf, bool aa, uint32_t px_size); int32_t x_end, uint8_t * dest_buf, bool aa, uint32_t px_size);
@ -76,14 +76,17 @@ static void transform_a8(const uint8_t * src, int32_t src_w, int32_t src_h, int3
#endif #endif
#if LV_DRAW_SW_SUPPORT_L8 #if LV_DRAW_SW_SUPPORT_L8
#if LV_DRAW_SW_SUPPORT_AL88
static void transform_l8_to_al88(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride, static void transform_l8_to_al88(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride,
int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step, int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step,
int32_t x_end, uint8_t * abuf, bool aa); int32_t x_end, uint8_t * abuf, bool aa);
#endif
#if LV_DRAW_SW_SUPPORT_ARGB8888
static void transform_l8_to_argb8888(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride, static void transform_l8_to_argb8888(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride,
int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step, int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step,
int32_t x_end, uint8_t * abuf, bool aa); int32_t x_end, uint8_t * abuf, bool aa);
#endif #endif
#endif /*LV_DRAW_SW_SUPPORT_L8*/
/********************** /**********************
* STATIC VARIABLES * STATIC VARIABLES
@ -268,8 +271,15 @@ void lv_draw_sw_transform(lv_draw_unit_t * draw_unit, const lv_area_t * dest_are
alpha_buf, true, aa); alpha_buf, true, aa);
break; break;
#endif #endif
#if LV_DRAW_SW_SUPPORT_L8
#if LV_DRAW_SW_SUPPORT_L8 && (LV_DRAW_SW_SUPPORT_ARGB8888 || LV_DRAW_SW_SUPPORT_AL88)
case LV_COLOR_FORMAT_L8: case LV_COLOR_FORMAT_L8:
#if LV_DRAW_SW_SUPPORT_ARGB8888 && !LV_DRAW_SW_SUPPORT_AL88
transform_l8_to_argb8888(src_buf, src_w, src_h, src_stride, xs_ups, ys_ups, xs_step_256, ys_step_256, dest_w, dest_buf,
aa);
#elif LV_DRAW_SW_SUPPORT_AL88 && !LV_DRAW_SW_SUPPORT_ARGB8888
transform_l8_to_al88(src_buf, src_w, src_h, src_stride, xs_ups, ys_ups, xs_step_256, ys_step_256, dest_w, dest_buf, aa);
#else
if(draw_dsc->recolor_opa >= LV_OPA_MIN) if(draw_dsc->recolor_opa >= LV_OPA_MIN)
transform_l8_to_argb8888(src_buf, src_w, src_h, src_stride, xs_ups, ys_ups, xs_step_256, ys_step_256, dest_w, dest_buf, transform_l8_to_argb8888(src_buf, src_w, src_h, src_stride, xs_ups, ys_ups, xs_step_256, ys_step_256, dest_w, dest_buf,
aa); aa);
@ -277,6 +287,7 @@ void lv_draw_sw_transform(lv_draw_unit_t * draw_unit, const lv_area_t * dest_are
transform_l8_to_al88(src_buf, src_w, src_h, src_stride, xs_ups, ys_ups, xs_step_256, ys_step_256, dest_w, dest_buf, aa); transform_l8_to_al88(src_buf, src_w, src_h, src_stride, xs_ups, ys_ups, xs_step_256, ys_step_256, dest_w, dest_buf, aa);
break; break;
#endif #endif
#endif /*LV_DRAW_SW_SUPPORT_L8 && (LV_DRAW_SW_SUPPORT_ARGB8888 || LV_DRAW_SW_SUPPORT_AL88)*/
default: default:
break; break;
} }
@ -290,7 +301,7 @@ void lv_draw_sw_transform(lv_draw_unit_t * draw_unit, const lv_area_t * dest_are
* STATIC FUNCTIONS * STATIC FUNCTIONS
**********************/ **********************/
#if LV_DRAW_SW_SUPPORT_RGB888 #if LV_DRAW_SW_SUPPORT_RGB888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void transform_rgb888(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride, static void transform_rgb888(const uint8_t * src, int32_t src_w, int32_t src_h, int32_t src_stride,
int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step, int32_t xs_ups, int32_t ys_ups, int32_t xs_step, int32_t ys_step,
@ -757,7 +768,7 @@ static void transform_l8_to_al88(const uint8_t * src, int32_t src_w, int32_t src
} }
} }
#endif #endif /*LV_DRAW_SW_SUPPORT_AL88*/
#if LV_DRAW_SW_SUPPORT_ARGB8888 #if LV_DRAW_SW_SUPPORT_ARGB8888
@ -837,9 +848,9 @@ static void transform_l8_to_argb8888(const uint8_t * src, int32_t src_w, int32_t
} }
} }
#endif #endif /*LV_DRAW_SW_SUPPORT_ARGB8888*/
#endif #endif /*LV_DRAW_SW_SUPPORT_L8*/
static void transform_point_upscaled(point_transform_dsc_t * t, int32_t xin, int32_t yin, int32_t * xout, static void transform_point_upscaled(point_transform_dsc_t * t, int32_t xin, int32_t yin, int32_t * xout,
int32_t * yout) int32_t * yout)

View File

@ -72,7 +72,7 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
#if LV_DRAW_SW_SUPPORT_ARGB8888 #if LV_DRAW_SW_SUPPORT_ARGB8888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void rotate90_argb8888(const uint32_t * src, uint32_t * dst, int32_t src_width, int32_t src_height, static void rotate90_argb8888(const uint32_t * src, uint32_t * dst, int32_t src_width, int32_t src_height,
int32_t src_stride, int32_t src_stride,
int32_t dst_stride); int32_t dst_stride);
@ -318,7 +318,7 @@ void lv_draw_sw_rotate(const void * src, void * dest, int32_t src_width, int32_t
* STATIC FUNCTIONS * STATIC FUNCTIONS
**********************/ **********************/
#if LV_DRAW_SW_SUPPORT_ARGB8888 #if LV_DRAW_SW_SUPPORT_ARGB8888 || LV_DRAW_SW_SUPPORT_XRGB8888
static void rotate270_argb8888(const uint32_t * src, uint32_t * dst, int32_t src_width, int32_t src_height, static void rotate270_argb8888(const uint32_t * src, uint32_t * dst, int32_t src_width, int32_t src_height,
int32_t src_stride, int32_t src_stride,