mikroSDK Reference Manual
lv_gpu_stm32_dma2d.h
Go to the documentation of this file.
1
6#ifndef LV_GPU_STM32_DMA2D_H
7#define LV_GPU_STM32_DMA2D_H
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#include "../../misc/lv_color.h"
15#include "../sw/lv_draw_sw.h"
16
17#if LV_USE_GPU_STM32_DMA2D
18
19/*********************
20 * INCLUDES
21 *********************/
22#include LV_GPU_DMA2D_CMSIS_INCLUDE
23
24/*********************
25 * DEFINES
26 *********************/
27#if defined(LV_STM32_DMA2D_TEST)
28// removes "static" modifier for some internal methods in order to test them
29#define LV_STM32_DMA2D_STATIC
30#else
31#define LV_STM32_DMA2D_STATIC static
32#endif
33
34/**********************
35 * TYPEDEFS
36 **********************/
37enum dma2d_color_format {
38 ARGB8888 = 0x0,
39 RGB888 = 0x01,
40 RGB565 = 0x02,
41 ARGB1555 = 0x03,
42 ARGB4444 = 0x04,
43 A8 = 0x09,
44 UNSUPPORTED = 0xff,
45};
46typedef enum dma2d_color_format dma2d_color_format_t;
47typedef lv_draw_sw_ctx_t lv_draw_stm32_dma2d_ctx_t;
48struct _lv_disp_drv_t;
49
50/**********************
51 * GLOBAL PROTOTYPES
52 **********************/
53void lv_draw_stm32_dma2d_init(void);
54void lv_draw_stm32_dma2d_ctx_init(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx);
55void lv_draw_stm32_dma2d_ctx_deinit(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx);
56static void lv_draw_stm32_dma2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
57static void lv_draw_stm32_dma2d_buffer_copy(lv_draw_ctx_t * draw_ctx,
58 void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area,
59 void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area);
60static lv_res_t lv_draw_stm32_dma2d_img(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
61 const lv_area_t * src_area, const void * src);
62static void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx);
63static void lv_draw_stm32_dma2d_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * img_dsc,
64 const lv_area_t * coords, const uint8_t * src_buf, lv_img_cf_t color_format);
65static dma2d_color_format_t lv_color_format_to_dma2d_color_format(lv_img_cf_t color_format);
66static lv_point_t lv_area_get_offset(const lv_area_t * area1, const lv_area_t * area2);
67
68/**********************
69 * STATIC PROTOTYPES
70 **********************/
71LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_fill(const lv_color_t * dst_buf, lv_coord_t dst_stride,
72 const lv_area_t * draw_area, lv_color_t color, lv_opa_t opa);
73LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_map(const lv_color_t * dest_buf, lv_coord_t dest_stride,
74 const lv_area_t * draw_area, const void * src_buf, lv_coord_t src_stride, const lv_point_t * src_offset, lv_opa_t opa,
75 dma2d_color_format_t src_color_format, bool ignore_src_alpha);
76LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_blend_paint(const lv_color_t * dst_buf, lv_coord_t dst_stride,
77 const lv_area_t * draw_area, const lv_opa_t * mask_buf, lv_coord_t mask_stride, const lv_point_t * mask_offset,
78 lv_color_t color, lv_opa_t opa);
79LV_STM32_DMA2D_STATIC void _lv_draw_stm32_dma2d_copy_buffer(const lv_color_t * dest_buf, lv_coord_t dest_stride,
80 const lv_area_t * draw_area, const lv_color_t * src_buf, lv_coord_t src_stride, const lv_point_t * src_offset);
81LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_await_dma_transfer_finish(lv_disp_drv_t * disp_drv);
82LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_start_dma_transfer(void);
83LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_invalidate_cache(uint32_t address, lv_coord_t offset,
84 lv_coord_t width, lv_coord_t height, uint8_t pixel_size);
85LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dma2d_clean_cache(uint32_t address, lv_coord_t offset, lv_coord_t width,
86 lv_coord_t height, uint8_t pixel_size);
87LV_STM32_DMA2D_STATIC bool _lv_gpu_stm32_dwt_init(void);
88LV_STM32_DMA2D_STATIC void _lv_gpu_stm32_dwt_reset(void);
89LV_STM32_DMA2D_STATIC uint32_t _lv_gpu_stm32_dwt_get_us(void);
90
91/**********************
92 * MACROS
93 **********************/
94
95#endif /*LV_USE_GPU_STM32_DMA2D*/
96
97#ifdef __cplusplus
98} /*extern "C"*/
99#endif
100
101#endif /*LV_GPU_STM32_DMA2D_H*/
Definition lv_hal_disp.h:77
Definition lv_draw.h:59
Definition lv_area.h:43
Definition lv_draw_img.h:32
Definition lv_draw_sw_blend.h:29
Definition lv_draw_sw.h:32
Definition lv_area.h:37