feat(draw-sw): add Helium (transform) acceleration to sw-draw-image-core (#5231)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
This commit is contained in:
Binary file not shown.
@@ -36,10 +36,11 @@
|
||||
<repository type="git">https://github.com/lvgl/lvgl.git</repository>
|
||||
|
||||
<releases>
|
||||
<release date="2024-01-02" version="9.0.0-dev3" url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/LVGL.lvgl.9.0.0-dev3.pack">
|
||||
<release date="2024-01-13" version="9.0.0-dev4" url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/LVGL.lvgl.9.0.0-dev4.pack">
|
||||
- LVGL 9.0.0-dev
|
||||
- New Driver Architecture
|
||||
- Adds Helium support
|
||||
- Accelerates SW-Render with NEON and Helium technology for Cortex architectures.
|
||||
- Adds supports for GPUs: VG-Lite, PXP and Dave2D
|
||||
- Other fixes
|
||||
</release>
|
||||
<release date="2023-12-05" version="8.3.11" url="https://github.com/lvgl/lvgl/raw/8194d83226c27c84f12dd51e16f5add9939215a5/env_support/cmsis-pack/LVGL.lvgl.8.3.11.pack">
|
||||
@@ -277,16 +278,6 @@
|
||||
<require Cclass="Acceleration" Cgroup="Arm-2D"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-Arm-2D">
|
||||
<description>Enable LVGL Arm-2D GPU Support</description>
|
||||
<require Cclass="LVGL" Cgroup="LVGL9" Csub="Essential"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU STM32-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU SWM341-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-STM32-DMA2D">
|
||||
<description>Enable LVGL Arm-2D GPU Support</description>
|
||||
<require Cclass="LVGL" Cgroup="LVGL9" Csub="Essential"/>
|
||||
@@ -295,6 +286,7 @@
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-SWM341-DMA2D">
|
||||
@@ -305,6 +297,7 @@
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-NXP-PXP">
|
||||
@@ -313,8 +306,9 @@
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU STM32-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU SWM341-DMA2D"/>
|
||||
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>-->
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>
|
||||
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>-->
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-NXP-VGLite">
|
||||
@@ -322,9 +316,10 @@
|
||||
<require Cclass="LVGL" Cgroup="LVGL9" Csub="Essential"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU STM32-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU SWM341-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>
|
||||
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>-->
|
||||
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>-->
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-GD32-IPA">
|
||||
@@ -335,6 +330,18 @@
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>
|
||||
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>-->
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>
|
||||
</condition>
|
||||
|
||||
<condition id="LVGL-GPU-Renesas-Dave2D">
|
||||
<description>Enable LVGL Arm-2D GPU Support</description>
|
||||
<require Cclass="LVGL" Cgroup="LVGL9" Csub="Essential"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU STM32-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU SWM341-DMA2D"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-PXP"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU NXP-VGLite"/>
|
||||
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
|
||||
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>-->
|
||||
</condition>
|
||||
|
||||
</conditions>
|
||||
@@ -397,11 +404,10 @@
|
||||
|
||||
|
||||
<!-- src/dev -->
|
||||
<file category="sourceC" name="src/dev/display/drm/lv_linux_drm.c" />
|
||||
<file category="sourceC" name="src/dev/display/fb/lv_linux_fbdev.c" />
|
||||
<file category="sourceCpp" name="src/dev/display/tft_espi/lv_tft_espi.cpp" />
|
||||
<file category="sourceC" name="src/dev/evdev/lv_evdev.c" />
|
||||
|
||||
<file category="sourceC" name="src/dev/display/lcd/lv_lcd_generic_mipi.c" />
|
||||
|
||||
<file category="sourceC" name="src/dev/nuttx/lv_nuttx_entry.c" />
|
||||
<file category="sourceC" name="src/dev/nuttx/lv_nuttx_fbdev.c" />
|
||||
<file category="sourceC" name="src/dev/nuttx/lv_nuttx_lcd.c" />
|
||||
@@ -456,8 +462,6 @@
|
||||
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_rgb565.c" />
|
||||
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_rgb888.c" />
|
||||
<file category="sourceAsm" name="src/draw/sw/blend/neon/lv_blend_neon.S" condition="Helium GNU Assembler"/>
|
||||
<!--file category="sourceAsm" name="src/draw/sw/blend/helium/lv_blend_helium.c" condition="Helium" /-->
|
||||
|
||||
|
||||
<!-- src/font -->
|
||||
<file category="sourceC" name="src/font/lv_binfont_loader.c" />
|
||||
@@ -600,6 +604,8 @@
|
||||
<!-- src/others -->
|
||||
<file category="sourceC" name="src/others/sysmon/lv_sysmon.c" />
|
||||
<file category="sourceC" name="src/others/observer/lv_observer.c" />
|
||||
<file category="sourceC" name="src/others/vg_lite_tvg/vg_lite_matrix.c" />
|
||||
<file category="sourceCpp" name="src/others/vg_lite_tvg/vg_lite_tvg.cpp" />
|
||||
|
||||
<!-- src/demons -->
|
||||
<file category="sourceC" name="demos/lv_demos.c" />
|
||||
@@ -608,7 +614,7 @@
|
||||
<file category="sourceC" name="src/osal/lv_os_none.c"/>
|
||||
|
||||
<!-- general -->
|
||||
<file category="preIncludeGlobal" name="lv_conf_cmsis.h" attr="config" version="2.1.0" />
|
||||
<file category="preIncludeGlobal" name="lv_conf_cmsis.h" attr="config" version="2.1.2" />
|
||||
<file category="sourceC" name="lv_cmsis_pack.c" />
|
||||
<file category="header" name="lvgl.h" />
|
||||
<file category="doc" name="README.md"/>
|
||||
@@ -637,6 +643,99 @@
|
||||
|
||||
</component>
|
||||
|
||||
|
||||
<component Cgroup="Display" Cvariant="Linux DRM" condition="LVGL-Essential">
|
||||
<description>Add the display driver for Linux /dev/dri/card*/ </description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/dev/display/drm/lv_linux_drm.c" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for Linux /dev/dri/card*/ */
|
||||
#define LV_USE_LINUX_DRM 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Display" Cvariant="Linux FBDEV" condition="LVGL-Essential">
|
||||
<description>Add the display driver for Linux /dev/fb </description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/dev/display/fb/lv_linux_fbdev.c" />
|
||||
<file category="sourceCpp" name="src/dev/display/tft_espi/lv_tft_espi.cpp" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for Linux /dev/fb */
|
||||
#define LV_USE_LINUX_FBDEV 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Display" Cvariant="TFT_eSPI" condition="LVGL-Essential">
|
||||
<description>Add the display driver for TFT_eSPI </description>
|
||||
<files>
|
||||
<file category="sourceCpp" name="src/dev/display/tft_espi/lv_tft_espi.cpp" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for TFT_eSPI */
|
||||
#define LV_USE_TFT_ESPI 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Display" Cvariant="ILI9341" condition="LVGL-Essential">
|
||||
<description>Add the display driver for ILI9341 </description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/dev/display/ili9341/lv_ili9341.c" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for ILI9341 */
|
||||
#define LV_USE_ILI9341 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Display" Cvariant="st7735" condition="LVGL-Essential">
|
||||
<description>Add the display driver for st7735 </description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/dev/display/st7735/lv_st7735.c" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for st7735 */
|
||||
#define LV_USE_ST7735 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Display" Cvariant="st7789" condition="LVGL-Essential">
|
||||
<description>Add the display driver for st7789 </description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/dev/display/st7789/lv_st7789.c" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for st7789 */
|
||||
#define LV_USE_ST7789 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Display" Cvariant="st7796" condition="LVGL-Essential">
|
||||
<description>Add the display driver for st7796 </description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/dev/display/st7796/lv_st7796.c" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
/* use display driver for st7796 */
|
||||
#define LV_USE_ST7796 1
|
||||
|
||||
</RTE_Components_h>
|
||||
</component>
|
||||
|
||||
<component Cgroup="OS Abstraction Layer" Cvariant="pthreads" condition="LVGL-Essential">
|
||||
<description>Add the support for pthreads</description>
|
||||
<files>
|
||||
@@ -791,13 +890,34 @@
|
||||
</files>
|
||||
</component>
|
||||
|
||||
<component Cgroup="Acceleration" Csub="GPU Renesas-Dave2D" condition="LVGL-GPU-Renesas-Dave2D">
|
||||
<description>An hardware acceleration from Renesas Dave2D</description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_arc.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_border.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_fill.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_image.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_label.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_line.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_mask_rectangle.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_triangle.c" />
|
||||
<file category="sourceC" name="src/draw/renesas/dave2d/lv_draw_dave2d_utils.c" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
|
||||
/*! \brief enable Renesas Dave2D */
|
||||
#define LV_USE_DRAW_DAVE2D 1
|
||||
</RTE_Components_h>
|
||||
|
||||
</component>
|
||||
|
||||
<component Cgroup="Acceleration" Csub="GPU NXP-PXP" condition="LVGL-GPU-NXP-PXP">
|
||||
<description>An hardware acceleration from NXP-PXP</description>
|
||||
<files>
|
||||
<file category="sourceC" name="src/draw/nxp/pxp/lv_draw_buf_pxp.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/pxp/lv_draw_pxp.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/pxp/lv_draw_pxp_bg_img.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/pxp/lv_draw_pxp_fill.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/pxp/lv_draw_pxp_img.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/pxp/lv_draw_pxp_layer.c" />
|
||||
@@ -820,17 +940,16 @@
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_buf_vglite.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_arc.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_bg_img.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_border.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_fill.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_img.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_label.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_layer.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_line.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_draw_vglite_triangle.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_vglite_buf.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_vglite_matrix.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_vglite_path.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_vglite_buf.c" />
|
||||
<file category="sourceC" name="src/draw/nxp/vglite/lv_vglite_utils.c" />
|
||||
</files>
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<index schemaVersion="1.0.0" xs:noNamespaceSchemaLocation="PackIndex.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<vendor>LVGL</vendor>
|
||||
<url>https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/</url>
|
||||
<timestamp>2024-01-02</timestamp>
|
||||
<timestamp>2024-01-13</timestamp>
|
||||
<pindex>
|
||||
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.0.0-dev3"/>
|
||||
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.0.0-dev4"/>
|
||||
</pindex>
|
||||
</index>
|
||||
|
||||
@@ -89,6 +89,18 @@ remove the misleading guide above this code segment.
|
||||
|
||||
- LV_USE_IMGFONT
|
||||
|
||||
- LV_USE_LINUX_DRM
|
||||
|
||||
- LV_USE_TFT_ESPI
|
||||
|
||||
- LV_USE_ST7735
|
||||
|
||||
- LV_USE_ST7789
|
||||
|
||||
- LV_USE_ST7796
|
||||
|
||||
- LV_USE_ILI9341
|
||||
|
||||
|
||||
|
||||
5. Update `LV_LOG_PRINTF` to `1` and `LV_LOG_LEVEL` to `LV_LOG_LEVEL_USER`
|
||||
|
||||
@@ -71,6 +71,14 @@
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
/*=================
|
||||
* OPERATING SYSTEM
|
||||
*=================*/
|
||||
|
||||
#if LV_USE_OS == LV_OS_CUSTOM
|
||||
#define LV_OS_CUSTOM_INCLUDE <stdint.h>
|
||||
#endif
|
||||
|
||||
/*========================
|
||||
* RENDERING CONFIGURATION
|
||||
*========================*/
|
||||
@@ -130,13 +138,22 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LV_USE_DRAW_VGLITE
|
||||
/* Enable blit quality degradation workaround recommended for screen's dimension > 352 pixels. */
|
||||
#define LV_USE_VGLITE_BLIT_SPLIT 0
|
||||
|
||||
/*=================
|
||||
* OPERATING SYSTEM
|
||||
*=================*/
|
||||
#if LV_USE_OS
|
||||
/* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */
|
||||
#define LV_USE_VGLITE_DRAW_ASYNC 1
|
||||
#endif
|
||||
|
||||
#if LV_USE_OS == LV_OS_CUSTOM
|
||||
#define LV_OS_CUSTOM_INCLUDE <stdint.h>
|
||||
/* Enable VGLite asserts. */
|
||||
#define LV_USE_VGLITE_ASSERT 0
|
||||
#endif
|
||||
|
||||
#if LV_USE_DRAW_PXP
|
||||
/* Enable PXP asserts. */
|
||||
#define LV_USE_PXP_ASSERT 0
|
||||
#endif
|
||||
|
||||
/*=======================
|
||||
@@ -330,7 +347,7 @@
|
||||
#define LV_FONT_MONTSERRAT_18 0
|
||||
#define LV_FONT_MONTSERRAT_20 0
|
||||
#define LV_FONT_MONTSERRAT_22 0
|
||||
#define LV_FONT_MONTSERRAT_24 0
|
||||
#define LV_FONT_MONTSERRAT_24 1
|
||||
#define LV_FONT_MONTSERRAT_26 0
|
||||
#define LV_FONT_MONTSERRAT_28 0
|
||||
#define LV_FONT_MONTSERRAT_30 0
|
||||
@@ -779,15 +796,11 @@
|
||||
|
||||
#endif
|
||||
|
||||
/*Driver for /dev/dri/card*/
|
||||
#define LV_USE_LINUX_DRM 0
|
||||
|
||||
/*Interface for TFT_eSPI*/
|
||||
#define LV_USE_TFT_ESPI 0
|
||||
|
||||
/*Driver for evdev input devices*/
|
||||
#define LV_USE_EVDEV 0
|
||||
|
||||
#define LV_USE_GENERIC_MIPI (LV_USE_ST7735 | LV_USE_ST7789 | LV_USE_ST7796 | LV_USE_ILI9341)
|
||||
|
||||
/*==================
|
||||
* EXAMPLES
|
||||
*==================*/
|
||||
|
||||
@@ -16,7 +16,11 @@ extern "C" {
|
||||
|
||||
#include "../../../../lv_conf_internal.h"
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_HELIUM && !defined(__ASSEMBLY__) && LV_USE_DRAW_ARM2D
|
||||
#ifdef LV_DRAW_SW_HELIUM_CUSTOM_INCLUDE
|
||||
#include LV_DRAW_SW_HELIUM_CUSTOM_INCLUDE
|
||||
#endif
|
||||
|
||||
#if LV_USE_DRAW_ARM2D
|
||||
|
||||
#define __ARM_2D_IMPL__
|
||||
#include "arm_2d.h"
|
||||
@@ -33,149 +37,245 @@ extern "C" {
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565(dsc) \
|
||||
_lv_color_blend_to_rgb565_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA(dsc) \
|
||||
_lv_color_blend_to_rgb565_with_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK(dsc) \
|
||||
_lv_color_blend_to_rgb565_with_mask_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA(dsc) \
|
||||
_lv_color_blend_to_rgb565_mix_mask_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_with_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_with_mask_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_with_opa_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_with_mask_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_with_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_with_mask_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_with_opa_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_with_mask_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_mix_mask_opa_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_with_opa_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_with_mask_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_helium(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_with_opa_helium(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_with_mask_helium(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_helium(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_with_opa_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_with_mask_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_helium(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888(dsc) \
|
||||
_lv_color_blend_to_argb8888_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA(dsc) \
|
||||
_lv_color_blend_to_argb8888_with_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK(dsc) \
|
||||
_lv_color_blend_to_argb8888_with_mask_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA(dsc) \
|
||||
_lv_color_blend_to_argb8888_mix_mask_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_with_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_with_mask_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_with_opa_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_with_mask_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_helium(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_with_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_with_mask_helium(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_helium(dsc)
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
@@ -1336,7 +1436,7 @@ static inline lv_result_t _lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_hel
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#endif /*LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_HELIUM && !defined(__ASSEMBLY__)*/
|
||||
#endif /* LV_USE_DRAW_ARM2D */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
|
||||
@@ -67,22 +67,67 @@ LV_ATTRIBUTE_FAST_MEM static inline void * drawbuf_next_row(const void * buf, ui
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_NONE
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
|
||||
@@ -54,22 +54,67 @@ LV_ATTRIBUTE_FAST_MEM static inline void * drawbuf_next_row(const void * buf, ui
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_NONE
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
|
||||
@@ -56,22 +56,67 @@ LV_ATTRIBUTE_FAST_MEM static inline void * drawbuf_next_row(const void * buf, ui
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_NONE
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
|
||||
@@ -16,155 +16,254 @@ extern "C" {
|
||||
|
||||
#include "../../../../lv_conf_internal.h"
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_NEON && !defined(__ASSEMBLY__)
|
||||
#ifdef LV_DRAW_SW_NEON_CUSTOM_INCLUDE
|
||||
#include LV_DRAW_SW_NEON_CUSTOM_INCLUDE
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#if !defined(__ASSEMBLY__)
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565(dsc) \
|
||||
_lv_color_blend_to_rgb565_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA(dsc) \
|
||||
_lv_color_blend_to_rgb565_with_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK(dsc) \
|
||||
_lv_color_blend_to_rgb565_with_mask_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA(dsc) \
|
||||
_lv_color_blend_to_rgb565_mix_mask_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_with_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_with_mask_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_with_opa_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_with_mask_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_with_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_with_mask_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_with_opa_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_with_mask_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
|
||||
_lv_color_blend_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_with_opa_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_with_mask_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
|
||||
_lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_neon(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_with_opa_neon(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_with_mask_neon(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_with_opa_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_with_mask_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
|
||||
_lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888(dsc) \
|
||||
_lv_color_blend_to_argb8888_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA(dsc) \
|
||||
_lv_color_blend_to_argb8888_with_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK(dsc) \
|
||||
_lv_color_blend_to_argb8888_with_mask_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA(dsc) \
|
||||
_lv_color_blend_to_argb8888_mix_mask_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_with_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_with_mask_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc) \
|
||||
_lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_with_opa_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_with_mask_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc, src_px_size) \
|
||||
_lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_neon(dsc, src_px_size)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_with_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_with_mask_neon(dsc)
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
|
||||
#define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc) \
|
||||
_lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neon(dsc)
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
@@ -1183,12 +1282,12 @@ static inline lv_result_t _lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neo
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
#endif /* !defined(__ASSEMBLY__) */
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#endif /*LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_NEON && !defined(__ASSEMBLY__)*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
568
src/draw/sw/helium/lv_draw_sw_helium.h
Normal file
568
src/draw/sw/helium/lv_draw_sw_helium.h
Normal file
@@ -0,0 +1,568 @@
|
||||
/**
|
||||
* @file lv_draw_sw_helium.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_DRAW_SW_HELIUM_H
|
||||
#define LV_DRAW_SW_HELIUM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
|
||||
#include "../../../lv_conf_internal.h"
|
||||
|
||||
#ifdef LV_DRAW_SW_HELIUM_CUSTOM_INCLUDE
|
||||
#include LV_DRAW_SW_HELIUM_CUSTOM_INCLUDE
|
||||
#endif
|
||||
|
||||
#if LV_USE_DRAW_ARM2D
|
||||
|
||||
#define __ARM_2D_IMPL__
|
||||
#include "arm_2d.h"
|
||||
#include "__arm_2d_impl.h"
|
||||
|
||||
#if defined(__IS_COMPILER_ARM_COMPILER_5__)
|
||||
#pragma diag_suppress 174,177,188,68,513,144,1296
|
||||
#elif defined(__IS_COMPILER_IAR__)
|
||||
#pragma diag_suppress=Pa093
|
||||
#elif defined(__IS_COMPILER_GCC__)
|
||||
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#ifndef LV_DRAW_SW_RGB565_SWAP
|
||||
#define LV_DRAW_SW_RGB565_SWAP(__buf_ptr, __buf_size_px) \
|
||||
_lv_draw_sw_rgb565_swap_helium((__buf_ptr), (__buf_size_px))
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_IMAGE
|
||||
#define LV_DRAW_SW_IMAGE(__transformed, \
|
||||
__cf, \
|
||||
__src_buf, \
|
||||
__img_coords, \
|
||||
__src_stride, \
|
||||
__blend_area, \
|
||||
__draw_unit, \
|
||||
__draw_dsc) \
|
||||
_lv_draw_sw_image_helium( (__transformed), \
|
||||
(__cf), \
|
||||
(uint8_t *)(__src_buf), \
|
||||
(__img_coords), \
|
||||
(__src_stride), \
|
||||
(__blend_area), \
|
||||
(__draw_unit), \
|
||||
(__draw_dsc))
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_RECOLOR
|
||||
#define LV_DRAW_SW_RGB565_RECOLOR(__src_buf, __blend_area, __color, __opa) \
|
||||
_lv_draw_sw_image_recolor_rgb565( (__src_buf), \
|
||||
&(__blend_area), \
|
||||
(__color), \
|
||||
(__opa))
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_RECOLOR
|
||||
#define LV_DRAW_SW_RGB888_RECOLOR( __src_buf, \
|
||||
__blend_area, \
|
||||
__color, \
|
||||
__opa, \
|
||||
__cf) \
|
||||
_lv_draw_sw_image_recolor_rgb888( (__src_buf), \
|
||||
&(__blend_area), \
|
||||
(__color), \
|
||||
(__opa), \
|
||||
(__cf))
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
extern void arm_2d_helper_swap_rgb16(uint16_t * phwBuffer, uint32_t wCount);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#define __RECOLOUR_BEGIN() \
|
||||
do { \
|
||||
lv_color_t *rgb_tmp_buf = NULL; \
|
||||
if(draw_dsc->recolor_opa > LV_OPA_MIN) { \
|
||||
if(LV_COLOR_FORMAT_RGB565 == des_cf) { \
|
||||
rgb_tmp_buf \
|
||||
= lv_malloc(src_w * src_h * sizeof(uint16_t)); \
|
||||
if (NULL == rgb_tmp_buf) { \
|
||||
LV_LOG_WARN( \
|
||||
"Failed to allocate memory for accelerating recolor, " \
|
||||
"use normal route instead."); \
|
||||
break; \
|
||||
} \
|
||||
lv_memcpy( rgb_tmp_buf, \
|
||||
src_buf, \
|
||||
src_w * src_h * sizeof(uint16_t)); \
|
||||
arm_2d_size_t copy_size = { \
|
||||
.iWidth = src_w, \
|
||||
.iHeight = src_h, \
|
||||
}; \
|
||||
/* apply re-color */ \
|
||||
__arm_2d_impl_rgb565_colour_filling_with_opacity( \
|
||||
(uint16_t *)rgb_tmp_buf, \
|
||||
src_w, \
|
||||
©_size, \
|
||||
lv_color_to_u16(draw_dsc->recolor), \
|
||||
draw_dsc->recolor_opa); \
|
||||
\
|
||||
/* replace src_buf for the following operation */ \
|
||||
src_buf = (const uint8_t *)rgb_tmp_buf; \
|
||||
} \
|
||||
else if(LV_COLOR_FORMAT_XRGB8888 == des_cf) { \
|
||||
rgb_tmp_buf \
|
||||
= lv_malloc(src_w * src_h * sizeof(uint32_t)); \
|
||||
if (NULL == rgb_tmp_buf) { \
|
||||
LV_LOG_WARN( \
|
||||
"Failed to allocate memory for accelerating recolor, " \
|
||||
"use normal route instead."); \
|
||||
break; \
|
||||
} \
|
||||
lv_memcpy( rgb_tmp_buf, \
|
||||
src_buf, \
|
||||
src_w * src_h * sizeof(uint32_t)); \
|
||||
arm_2d_size_t copy_size = { \
|
||||
.iWidth = src_w, \
|
||||
.iHeight = src_h, \
|
||||
}; \
|
||||
/* apply re-color */ \
|
||||
__arm_2d_impl_cccn888_colour_filling_with_opacity( \
|
||||
(uint32_t *)rgb_tmp_buf, \
|
||||
src_w, \
|
||||
©_size, \
|
||||
lv_color_to_u32(draw_dsc->recolor), \
|
||||
draw_dsc->recolor_opa); \
|
||||
\
|
||||
/* replace src_buf for the following operation */ \
|
||||
src_buf = (const uint8_t *)rgb_tmp_buf; \
|
||||
} \
|
||||
} \
|
||||
do {
|
||||
|
||||
#define __RECOLOUR_END() \
|
||||
} while(0); \
|
||||
if (NULL != rgb_tmp_buf) { \
|
||||
lv_free(rgb_tmp_buf); \
|
||||
} \
|
||||
} while(0);
|
||||
|
||||
static inline lv_result_t _lv_draw_sw_rgb565_swap_helium(void * buf, uint32_t buf_size_px)
|
||||
{
|
||||
arm_2d_helper_swap_rgb16((uint16_t *)buf, buf_size_px);
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
static inline lv_result_t _lv_draw_sw_image_helium(
|
||||
bool is_transform,
|
||||
lv_color_format_t src_cf,
|
||||
const uint8_t *src_buf,
|
||||
const lv_area_t * coords,
|
||||
int32_t src_stride,
|
||||
const lv_area_t * des_area,
|
||||
lv_draw_unit_t * draw_unit,
|
||||
const lv_draw_image_dsc_t * draw_dsc)
|
||||
{
|
||||
lv_result_t result = LV_RESULT_INVALID;
|
||||
lv_layer_t * layer = draw_unit->target_layer;
|
||||
lv_color_format_t des_cf = layer->color_format;
|
||||
static bool arm_2d_initialized = false;
|
||||
|
||||
if (!arm_2d_initialized) {
|
||||
arm_2d_initialized = true;
|
||||
arm_2d_init();
|
||||
}
|
||||
|
||||
do {
|
||||
if (!is_transform) {
|
||||
break;
|
||||
}
|
||||
if(draw_dsc->scale_x != draw_dsc->scale_y) {
|
||||
break;
|
||||
}
|
||||
/* filter the unsupported colour format combination */
|
||||
if((LV_COLOR_FORMAT_RGB565 == des_cf)
|
||||
&& !( (LV_COLOR_FORMAT_RGB565 == src_cf)
|
||||
|| (LV_COLOR_FORMAT_RGB565A8 == src_cf))) {
|
||||
break;
|
||||
}
|
||||
if((LV_COLOR_FORMAT_XRGB8888 == des_cf)
|
||||
&& !( (LV_COLOR_FORMAT_ARGB8888 == src_cf)
|
||||
|| (LV_COLOR_FORMAT_XRGB8888 == src_cf))) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* ------------- prepare parameters for arm-2d APIs - BEGIN --------- */
|
||||
|
||||
lv_area_t blend_area;
|
||||
if(!_lv_area_intersect(&blend_area, des_area, draw_unit->clip_area)) {
|
||||
break;
|
||||
}
|
||||
|
||||
int32_t src_w = lv_area_get_width(coords);
|
||||
int32_t src_h = lv_area_get_height(coords);
|
||||
|
||||
arm_2d_size_t src_size = {
|
||||
.iWidth = (int16_t)src_w,
|
||||
.iHeight = (int16_t)src_h,
|
||||
};
|
||||
|
||||
// arm_2d_size_t des_size;
|
||||
|
||||
// do{
|
||||
// int32_t des_w = lv_area_get_width(&blend_area);
|
||||
// int32_t des_h = lv_area_get_height(&blend_area);
|
||||
|
||||
// LV_ASSERT(des_w <= INT16_MAX);
|
||||
// LV_ASSERT(des_h <= INT16_MAX);
|
||||
|
||||
// des_size.iWidth = (int16_t)des_w;
|
||||
// des_size.iHeight = (int16_t)des_h;
|
||||
// } while(0);
|
||||
//
|
||||
// arm_2d_size_t copy_size = {
|
||||
// .iWidth = MIN(des_size.iWidth, src_size.iWidth),
|
||||
// .iHeight = MIN(des_size.iHeight, src_size.iHeight),
|
||||
// };
|
||||
//
|
||||
// int32_t des_stride = lv_draw_buf_width_to_stride(
|
||||
// lv_area_get_width(&layer->buf_area),
|
||||
// des_cf);
|
||||
// uint8_t *des_buf_moved = (uint8_t *)lv_draw_layer_go_to_xy(
|
||||
// layer,
|
||||
// blend_area.x1 - layer->buf_area.x1,
|
||||
// blend_area.y1 - layer->buf_area.y1);
|
||||
uint8_t *des_buf = (uint8_t *)layer->buf;
|
||||
uint8_t opa = draw_dsc->opa;
|
||||
|
||||
/* ------------- prepare parameters for arm-2d APIs - END ----------- */
|
||||
__RECOLOUR_BEGIN()
|
||||
|
||||
static arm_2d_tile_t target_tile_origin;
|
||||
static arm_2d_tile_t target_tile;
|
||||
arm_2d_region_t clip_region;
|
||||
static arm_2d_region_t target_region;
|
||||
|
||||
target_region = (arm_2d_region_t) {
|
||||
.tLocation = {
|
||||
.iX = (int16_t)(coords->x1 - draw_unit->clip_area->x1),
|
||||
.iY = (int16_t)(coords->y1 - draw_unit->clip_area->y1),
|
||||
},
|
||||
.tSize = src_size,
|
||||
};
|
||||
|
||||
target_tile_origin = (arm_2d_tile_t) {
|
||||
.tRegion = {
|
||||
.tSize = {
|
||||
.iWidth = (int16_t)lv_area_get_width(&layer->buf_area),
|
||||
.iHeight = (int16_t)lv_area_get_height(&layer->buf_area),
|
||||
},
|
||||
},
|
||||
.tInfo = {
|
||||
.bIsRoot = true,
|
||||
},
|
||||
.phwBuffer = (uint16_t *)des_buf,
|
||||
};
|
||||
|
||||
clip_region = (arm_2d_region_t) {
|
||||
.tLocation = {
|
||||
.iX = (int16_t)(draw_unit->clip_area->x1 - layer->buf_area.x1),
|
||||
.iY = (int16_t)(draw_unit->clip_area->y1 - layer->buf_area.y1),
|
||||
},
|
||||
.tSize = {
|
||||
.iWidth = (int16_t)lv_area_get_width(draw_unit->clip_area),
|
||||
.iHeight = (int16_t)lv_area_get_height(draw_unit->clip_area),
|
||||
},
|
||||
};
|
||||
|
||||
arm_2d_tile_generate_child(&target_tile_origin,
|
||||
&clip_region,
|
||||
&target_tile,
|
||||
false);
|
||||
|
||||
static arm_2d_tile_t source_tile;
|
||||
|
||||
source_tile = (arm_2d_tile_t) {
|
||||
.tRegion = {
|
||||
.tSize = {
|
||||
.iWidth = (int16_t)src_w,
|
||||
.iHeight = (int16_t)src_h,
|
||||
},
|
||||
},
|
||||
.tInfo = {
|
||||
.bIsRoot = true,
|
||||
},
|
||||
.pchBuffer = (uint8_t *)src_buf,
|
||||
};
|
||||
|
||||
static arm_2d_location_t source_center, target_center;
|
||||
source_center.iX = draw_dsc->pivot.x;
|
||||
source_center.iY = draw_dsc->pivot.y;
|
||||
target_center = target_region.tLocation;
|
||||
target_center.iX += draw_dsc->pivot.x;
|
||||
target_center.iY += draw_dsc->pivot.y;
|
||||
|
||||
if(LV_COLOR_FORMAT_A8 == src_cf) {
|
||||
|
||||
source_tile.tInfo.bHasEnforcedColour = true;
|
||||
source_tile.tInfo.tColourInfo.chScheme = ARM_2D_COLOUR_GRAY8;
|
||||
|
||||
if(LV_COLOR_FORMAT_RGB565 == des_cf) {
|
||||
|
||||
arm_2d_rgb565_fill_colour_with_mask_opacity_and_transform(
|
||||
&source_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
lv_color_to_u16(draw_dsc->recolor),
|
||||
opa,
|
||||
&target_center
|
||||
);
|
||||
|
||||
}
|
||||
else if(LV_COLOR_FORMAT_XRGB8888 == des_cf) {
|
||||
arm_2d_cccn888_fill_colour_with_mask_opacity_and_transform(
|
||||
&source_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
lv_color_to_int(draw_dsc->recolor),
|
||||
opa,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else if(LV_COLOR_FORMAT_RGB565A8 == src_cf) {
|
||||
LV_ASSERT(LV_COLOR_FORMAT_RGB565 == des_cf);
|
||||
|
||||
/* mask_buf = src_buf + src_stride * src_w / header->w * src_h; */
|
||||
const uint8_t *mask_buf = src_buf + src_stride * src_h;
|
||||
int32_t mask_stride = src_stride / 2;
|
||||
|
||||
static arm_2d_tile_t mask_tile;
|
||||
mask_tile = source_tile;
|
||||
|
||||
mask_tile.tInfo.bHasEnforcedColour = true;
|
||||
mask_tile.tInfo.tColourInfo.chScheme = ARM_2D_COLOUR_GRAY8;
|
||||
mask_tile.pchBuffer = (uint8_t *)mask_buf;
|
||||
|
||||
if(opa >= LV_OPA_MAX) {
|
||||
arm_2d_rgb565_tile_transform_with_src_mask(
|
||||
&source_tile,
|
||||
&mask_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
else {
|
||||
arm_2d_rgb565_tile_transform_with_src_mask_and_opacity(
|
||||
&source_tile,
|
||||
&mask_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
opa,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
else if(LV_COLOR_FORMAT_RGB565 == src_cf) {
|
||||
LV_ASSERT(LV_COLOR_FORMAT_RGB565 == des_cf);
|
||||
|
||||
if(opa >= LV_OPA_MAX) {
|
||||
arm_2d_rgb565_tile_transform_only(
|
||||
&source_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
else {
|
||||
arm_2d_rgb565_tile_transform_only_with_opacity(
|
||||
&source_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
opa,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
else if(LV_COLOR_FORMAT_ARGB8888 == src_cf) {
|
||||
LV_ASSERT(LV_COLOR_FORMAT_XRGB8888 == des_cf);
|
||||
|
||||
static arm_2d_tile_t mask_tile;
|
||||
mask_tile = source_tile;
|
||||
|
||||
mask_tile.tInfo.bHasEnforcedColour = true;
|
||||
mask_tile.tInfo.tColourInfo.chScheme = ARM_2D_CHANNEL_8in32;
|
||||
mask_tile.pchBuffer = (uint8_t *)src_buf + 3;
|
||||
|
||||
if(opa >= LV_OPA_MAX) {
|
||||
arm_2d_cccn888_tile_transform_with_src_mask(
|
||||
&source_tile,
|
||||
&mask_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
else {
|
||||
arm_2d_cccn888_tile_transform_with_src_mask_and_opacity(
|
||||
&source_tile,
|
||||
&mask_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
opa,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
else if(LV_COLOR_FORMAT_XRGB8888 == src_cf) {
|
||||
LV_ASSERT(LV_COLOR_FORMAT_XRGB8888 == des_cf);
|
||||
|
||||
if(opa >= LV_OPA_MAX) {
|
||||
arm_2d_cccn888_tile_transform_only(
|
||||
&source_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
else {
|
||||
arm_2d_cccn888_tile_transform_only_with_opacity(
|
||||
&source_tile,
|
||||
&target_tile,
|
||||
NULL,
|
||||
source_center,
|
||||
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
|
||||
draw_dsc->scale_x / 256.0f,
|
||||
opa,
|
||||
&target_center
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
|
||||
result = LV_RESULT_OK;
|
||||
|
||||
__RECOLOUR_END()
|
||||
} while(0);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static inline lv_result_t _lv_draw_sw_image_recolor_rgb565(
|
||||
const uint8_t *src_buf,
|
||||
const lv_area_t * blend_area,
|
||||
lv_color_t color,
|
||||
lv_opa_t opa)
|
||||
{
|
||||
int32_t src_w = lv_area_get_width(blend_area);
|
||||
int32_t src_h = lv_area_get_height(blend_area);
|
||||
|
||||
arm_2d_size_t copy_size = {
|
||||
.iWidth = (int16_t)src_w,
|
||||
.iHeight = (int16_t)src_h,
|
||||
};
|
||||
|
||||
__arm_2d_impl_rgb565_colour_filling_with_opacity(
|
||||
(uint16_t *)src_buf,
|
||||
src_w,
|
||||
©_size,
|
||||
lv_color_to_u16(color),
|
||||
opa);
|
||||
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
static inline lv_result_t _lv_draw_sw_image_recolor_rgb888(
|
||||
const uint8_t *src_buf,
|
||||
const lv_area_t * blend_area,
|
||||
lv_color_t color,
|
||||
lv_opa_t opa,
|
||||
lv_color_format_t src_cf)
|
||||
{
|
||||
if(LV_COLOR_FORMAT_XRGB8888 != src_cf) {
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
int32_t src_w = lv_area_get_width(blend_area);
|
||||
int32_t src_h = lv_area_get_height(blend_area);
|
||||
|
||||
arm_2d_size_t copy_size = {
|
||||
.iWidth = (int16_t)src_w,
|
||||
.iHeight = (int16_t)src_h,
|
||||
};
|
||||
|
||||
__arm_2d_impl_cccn888_colour_filling_with_opacity(
|
||||
(uint32_t *)src_buf,
|
||||
src_w,
|
||||
©_size,
|
||||
lv_color_to_u32(color),
|
||||
opa);
|
||||
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
#endif /* LV_USE_DRAW_ARM2D */
|
||||
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_DRAW_SW_HELIUM_H*/
|
||||
@@ -22,11 +22,58 @@
|
||||
#include "../../libs/thorvg/thorvg_capi.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_HELIUM
|
||||
#include "helium/lv_draw_sw_helium.h"
|
||||
#elif LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_CUSTOM
|
||||
#include LV_DRAW_SW_ASM_CUSTOM_INCLUDE
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define DRAW_UNIT_ID_SW 1
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_SWAP
|
||||
#define LV_DRAW_SW_RGB565_SWAP(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE90_ARGB8888
|
||||
#define LV_DRAW_SW_ROTATE90_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE180_ARGB8888
|
||||
#define LV_DRAW_SW_ROTATE180_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE270_ARGB8888
|
||||
#define LV_DRAW_SW_ROTATE270_ARGB8888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE90_RGB888
|
||||
#define LV_DRAW_SW_ROTATE90_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE180_RGB888
|
||||
#define LV_DRAW_SW_ROTATE180_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE270_RGB888
|
||||
#define LV_DRAW_SW_ROTATE270_RGB888(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE90_RGB565
|
||||
#define LV_DRAW_SW_ROTATE90_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE180_RGB565
|
||||
#define LV_DRAW_SW_ROTATE180_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_ROTATE270_RGB565
|
||||
#define LV_DRAW_SW_ROTATE270_RGB565(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
@@ -137,6 +184,8 @@ static int32_t lv_draw_sw_delete(lv_draw_unit_t * draw_unit)
|
||||
|
||||
void lv_draw_sw_rgb565_swap(void * buf, uint32_t buf_size_px)
|
||||
{
|
||||
if(LV_DRAW_SW_RGB565_SWAP(buf, buf_size_px) == LV_RESULT_OK) return;
|
||||
|
||||
uint32_t u32_cnt = buf_size_px / 2;
|
||||
uint16_t * buf16 = buf;
|
||||
uint32_t * buf32 = buf;
|
||||
@@ -164,6 +213,7 @@ void lv_draw_sw_rgb565_swap(void * buf, uint32_t buf_size_px)
|
||||
uint32_t e = buf_size_px - 1;
|
||||
buf16[e] = ((buf16[e] & 0xff00) >> 8) | ((buf16[e] & 0x00ff) << 8);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void lv_draw_sw_rotate(const void * src, void * dest, int32_t src_width, int32_t src_height, int32_t src_sride,
|
||||
@@ -392,6 +442,10 @@ static void rotate90_argb8888(const uint32_t * src, uint32_t * dst, int32_t srcW
|
||||
int32_t srcStride,
|
||||
int32_t dstStride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE90_ARGB8888(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
srcStride /= sizeof(uint32_t);
|
||||
dstStride /= sizeof(uint32_t);
|
||||
|
||||
@@ -408,6 +462,10 @@ static void rotate90_argb8888(const uint32_t * src, uint32_t * dst, int32_t srcW
|
||||
static void rotate180_argb8888(const uint32_t * src, uint32_t * dst, int32_t width, int32_t height, int32_t src_stride,
|
||||
int32_t dest_stride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE180_ARGB8888(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
src_stride /= sizeof(uint32_t);
|
||||
dest_stride /= sizeof(uint32_t);
|
||||
|
||||
@@ -424,6 +482,10 @@ static void rotate270_argb8888(const uint32_t * src, uint32_t * dst, int32_t src
|
||||
int32_t srcStride,
|
||||
int32_t dstStride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE270_ARGB8888(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
srcStride /= sizeof(uint32_t);
|
||||
dstStride /= sizeof(uint32_t);
|
||||
|
||||
@@ -440,6 +502,10 @@ static void rotate270_argb8888(const uint32_t * src, uint32_t * dst, int32_t src
|
||||
static void rotate90_rgb888(const uint8_t * src, uint8_t * dst, int32_t srcWidth, int32_t srcHeight, int32_t srcStride,
|
||||
int32_t dstStride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE90_RGB888(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
for(int32_t x = 0; x < srcWidth; ++x) {
|
||||
for(int32_t y = 0; y < srcHeight; ++y) {
|
||||
int32_t srcIndex = y * srcStride + x * 3;
|
||||
@@ -454,6 +520,9 @@ static void rotate90_rgb888(const uint8_t * src, uint8_t * dst, int32_t srcWidth
|
||||
static void rotate180_rgb888(const uint8_t * src, uint8_t * dst, int32_t width, int32_t height, int32_t src_stride,
|
||||
int32_t dest_stride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE180_RGB888(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
for(int32_t y = 0; y < height; ++y) {
|
||||
for(int32_t x = 0; x < width; ++x) {
|
||||
@@ -469,6 +538,10 @@ static void rotate180_rgb888(const uint8_t * src, uint8_t * dst, int32_t width,
|
||||
static void rotate270_rgb888(const uint8_t * src, uint8_t * dst, int32_t width, int32_t height, int32_t srcStride,
|
||||
int32_t dstStride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE270_RGB888(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
for(int32_t x = 0; x < width; ++x) {
|
||||
for(int32_t y = 0; y < height; ++y) {
|
||||
int32_t srcIndex = y * srcStride + x * 3;
|
||||
@@ -484,6 +557,10 @@ static void rotate90_rgb565(const uint16_t * src, uint16_t * dst, int32_t srcWid
|
||||
int32_t srcStride,
|
||||
int32_t dstStride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE90_RGB565(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
srcStride /= sizeof(uint16_t);
|
||||
dstStride /= sizeof(uint16_t);
|
||||
|
||||
@@ -500,6 +577,10 @@ static void rotate90_rgb565(const uint16_t * src, uint16_t * dst, int32_t srcWid
|
||||
static void rotate180_rgb565(const uint16_t * src, uint16_t * dst, int32_t width, int32_t height, int32_t src_stride,
|
||||
int32_t dest_stride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE180_RGB565(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
src_stride /= sizeof(uint16_t);
|
||||
dest_stride /= sizeof(uint16_t);
|
||||
|
||||
@@ -516,6 +597,10 @@ static void rotate270_rgb565(const uint16_t * src, uint16_t * dst, int32_t srcWi
|
||||
int32_t srcStride,
|
||||
int32_t dstStride)
|
||||
{
|
||||
if(LV_RESULT_OK == LV_DRAW_SW_ROTATE270_RGB565(src, dst, srcWidth, srcHeight, srcStride, dstStride)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
srcStride /= sizeof(uint16_t);
|
||||
dstStride /= sizeof(uint16_t);
|
||||
|
||||
|
||||
@@ -19,11 +19,29 @@
|
||||
#include "../../stdlib/lv_string.h"
|
||||
#include "../../core/lv_global.h"
|
||||
|
||||
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_HELIUM
|
||||
#include "helium/lv_draw_sw_helium.h"
|
||||
#elif LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_CUSTOM
|
||||
#include LV_DRAW_SW_ASM_CUSTOM_INCLUDE
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define MAX_BUF_SIZE (uint32_t) (4 * lv_display_get_horizontal_resolution(_lv_refr_get_disp_refreshing()) * lv_color_format_get_size(lv_display_get_color_format(_lv_refr_get_disp_refreshing())))
|
||||
|
||||
#ifndef LV_DRAW_SW_IMAGE
|
||||
#define LV_DRAW_SW_IMAGE(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB565_RECOLOR
|
||||
#define LV_DRAW_SW_RGB565_RECOLOR(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
#ifndef LV_DRAW_SW_RGB888_RECOLOR
|
||||
#define LV_DRAW_SW_RGB888_RECOLOR(...) LV_RESULT_INVALID
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
@@ -225,8 +243,17 @@ static void img_draw_core(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
|
||||
blend_dsc.src_color_format = cf;
|
||||
lv_draw_sw_blend(draw_unit, &blend_dsc);
|
||||
}
|
||||
/* check whethr it is possible to accelerate the operation in synchronouse mode */
|
||||
else if(LV_RESULT_INVALID == LV_DRAW_SW_IMAGE(transformed, /* whether require transform */
|
||||
cf, /* image format */
|
||||
src_buf, /* image buffer */
|
||||
img_coords, /* src_h, src_w, src_x1, src_y1 */
|
||||
img_stride, /* image stride */
|
||||
clipped_img_area, /* blend area */
|
||||
draw_unit, /* target buffer, buffer width, buffer height, buffer stride */
|
||||
draw_dsc)) { /* opa, recolour_opa and colour */
|
||||
/*In the other cases every pixel need to be checked one-by-one*/
|
||||
else {
|
||||
|
||||
lv_area_t blend_area = *clipped_img_area;
|
||||
blend_dsc.blend_area = &blend_area;
|
||||
|
||||
@@ -240,6 +267,7 @@ static void img_draw_core(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
|
||||
if(cf == LV_COLOR_FORMAT_RGB888 || cf == LV_COLOR_FORMAT_XRGB8888) cf_final = LV_COLOR_FORMAT_ARGB8888;
|
||||
else if(cf == LV_COLOR_FORMAT_RGB565) cf_final = LV_COLOR_FORMAT_RGB565A8;
|
||||
}
|
||||
|
||||
uint8_t * tmp_buf;
|
||||
uint32_t px_size = lv_color_format_get_size(cf_final);
|
||||
int32_t buf_h;
|
||||
@@ -255,6 +283,7 @@ static void img_draw_core(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
|
||||
if(buf_h > blend_h) buf_h = blend_h;
|
||||
tmp_buf = lv_malloc(buf_stride * buf_h);
|
||||
}
|
||||
LV_ASSERT_MALLOC(tmp_buf);
|
||||
|
||||
blend_dsc.src_buf = tmp_buf;
|
||||
blend_dsc.src_color_format = cf_final;
|
||||
@@ -330,6 +359,7 @@ static void img_draw_core(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
|
||||
lv_opa_t mix = draw_dsc->recolor_opa;
|
||||
lv_opa_t mix_inv = 255 - mix;
|
||||
if(cf_final == LV_COLOR_FORMAT_RGB565A8 || cf_final == LV_COLOR_FORMAT_RGB565) {
|
||||
if(LV_RESULT_INVALID == LV_DRAW_SW_RGB565_RECOLOR(tmp_buf, blend_area, color, mix)) {
|
||||
uint16_t c_mult[3];
|
||||
c_mult[0] = (color.blue >> 3) * mix;
|
||||
c_mult[1] = (color.green >> 2) * mix;
|
||||
@@ -343,7 +373,9 @@ static void img_draw_core(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
|
||||
((c_mult[0] + (buf16[i] & 0x1F) * mix_inv) >> 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(cf_final != LV_COLOR_FORMAT_A8) {
|
||||
if(LV_RESULT_INVALID == LV_DRAW_SW_RGB888_RECOLOR(tmp_buf, blend_area, color, mix, cf_final)) {
|
||||
uint32_t size = lv_area_get_size(&blend_area);
|
||||
uint32_t i;
|
||||
uint16_t c_mult[3];
|
||||
@@ -358,6 +390,7 @@ static void img_draw_core(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*Blend*/
|
||||
lv_draw_sw_blend(draw_unit, &blend_dsc);
|
||||
|
||||
Reference in New Issue
Block a user