aboutsummaryrefslogtreecommitdiff
path: root/src/draw/arm2d/lv_gpu_arm2d.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/draw/arm2d/lv_gpu_arm2d.c')
-rw-r--r--src/draw/arm2d/lv_gpu_arm2d.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/draw/arm2d/lv_gpu_arm2d.c b/src/draw/arm2d/lv_gpu_arm2d.c
index 132268ab9..c42f23872 100644
--- a/src/draw/arm2d/lv_gpu_arm2d.c
+++ b/src/draw/arm2d/lv_gpu_arm2d.c
@@ -3,6 +3,24 @@
*
*/
+/*
+ * Copyright (C) 2010-2023 Arm Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
/*********************
* INCLUDES
*********************/
@@ -94,6 +112,8 @@
arm_2dp_rgb565_tile_transform_with_src_mask_and_opacity_prepare
#define arm_2d_tile_transform_with_opacity_prepare \
arm_2dp_rgb565_tile_transform_with_opacity_prepare
+#define arm_2d_tile_transform_only_with_opacity_prepare \
+ arm_2dp_rgb565_tile_transform_only_with_opacity_prepare
#define arm_2d_tile_transform_prepare \
arm_2dp_rgb565_tile_transform_prepare
@@ -131,6 +151,8 @@
arm_2dp_cccn888_tile_transform_with_src_mask_and_opacity_prepare
#define arm_2d_tile_transform_with_opacity_prepare \
arm_2dp_cccn888_tile_transform_with_opacity_prepare
+#define arm_2d_tile_transform_only_with_opacity_prepare \
+ arm_2dp_cccn888_tile_transform_only_with_opacity_prepare
#define arm_2d_tile_transform_prepare \
arm_2dp_cccn888_tile_transform_prepare
@@ -317,7 +339,7 @@
lv_color_t *rgb_tmp_buf = NULL; \
if(draw_dsc->recolor_opa > LV_OPA_MIN) { \
rgb_tmp_buf \
- = lv_malloc(src_w * src_h * sizeof(lv_color_t)); \
+ = lv_mem_buf_get(src_w * src_h * sizeof(lv_color_t)); \
if (NULL == rgb_tmp_buf) { \
LV_LOG_WARN( \
"Failed to allocate memory for accelerating recolour, " \
@@ -345,7 +367,7 @@
#define __RECOLOUR_END() \
} while(0); \
if (NULL != rgb_tmp_buf) { \
- lv_free(rgb_tmp_buf); \
+ lv_mem_buf_release(rgb_tmp_buf); \
} \
} while(0); \
src_buf = src_buf_org;
@@ -1288,6 +1310,24 @@ static void lv_draw_arm2d_img_decoded(struct _lv_draw_ctx_t * draw_ctx,
);
is_accelerated = true;
}
+ #if ARM_2D_VERISON >= 10103
+ else if (LV_IMG_CF_TRUE_COLOR == cf) {
+ __ARM_2D_PREPARE_TRANS_AND_TARGET_REGION(
+ arm_2d_tile_transform_only_with_opacity_prepare,
+ &source_tile,
+ source_center,
+ ARM_2D_ANGLE((draw_dsc->angle / 10.0f)),
+ draw_dsc->zoom / 256.0f,
+ blend_dsc.opa);
+
+ arm_2d_tile_transform(
+ &target_tile,
+ &target_region,
+ NULL
+ );
+ is_accelerated = true;
+ }
+ #endif
else if (LV_IMG_CF_RGB565A8 == cf) {
static arm_2d_tile_t mask_tile;
mask_tile = source_tile;