1 /**
2 * @file lv_vglite_buf.c
3 *
4 */
5
6 /**
7 * Copyright 2023 NXP
8 *
9 * SPDX-License-Identifier: MIT
10 */
11
12 /*********************
13 * INCLUDES
14 *********************/
15
16 #include "lv_vglite_buf.h"
17
18 #if LV_USE_DRAW_VGLITE
19 #include "lv_vglite_utils.h"
20
21 #include "../../../stdlib/lv_string.h"
22
23 /*********************
24 * DEFINES
25 *********************/
26
27 /**********************
28 * TYPEDEFS
29 **********************/
30
31 /**********************
32 * STATIC PROTOTYPES
33 **********************/
34
35 static inline void _set_vgbuf_ptr(vg_lite_buffer_t * vgbuf, void * buf);
36
37 /**********************
38 * STATIC VARIABLES
39 **********************/
40
41 static vg_lite_buffer_t _dest_vgbuf;
42 static vg_lite_buffer_t _src_vgbuf;
43
44 /**********************
45 * MACROS
46 **********************/
47
48 /**********************
49 * GLOBAL FUNCTIONS
50 **********************/
51
vglite_get_dest_buf(void)52 vg_lite_buffer_t * vglite_get_dest_buf(void)
53 {
54 return &_dest_vgbuf;
55 }
56
vglite_get_src_buf(void)57 vg_lite_buffer_t * vglite_get_src_buf(void)
58 {
59 return &_src_vgbuf;
60 }
61
vglite_set_dest_buf_ptr(void * buf)62 void vglite_set_dest_buf_ptr(void * buf)
63 {
64 _set_vgbuf_ptr(&_dest_vgbuf, buf);
65 }
66
vglite_set_src_buf_ptr(const void * buf)67 void vglite_set_src_buf_ptr(const void * buf)
68 {
69 _set_vgbuf_ptr(&_src_vgbuf, (void *)buf);
70 }
71
vglite_set_dest_buf(const void * buf,uint32_t width,uint32_t height,uint32_t stride,lv_color_format_t cf)72 void vglite_set_dest_buf(const void * buf, uint32_t width, uint32_t height, uint32_t stride,
73 lv_color_format_t cf)
74 {
75 vglite_set_buf(&_dest_vgbuf, (void *)buf, width, height, stride, cf);
76 }
77
vglite_set_src_buf(const void * buf,uint32_t width,uint32_t height,uint32_t stride,lv_color_format_t cf)78 void vglite_set_src_buf(const void * buf, uint32_t width, uint32_t height, uint32_t stride,
79 lv_color_format_t cf)
80 {
81 vglite_set_buf(&_src_vgbuf, (void *)buf, width, height, stride, cf);
82 }
83
vglite_set_buf(vg_lite_buffer_t * vgbuf,void * buf,uint32_t width,uint32_t height,uint32_t stride,lv_color_format_t cf)84 void vglite_set_buf(vg_lite_buffer_t * vgbuf, void * buf,
85 uint32_t width, uint32_t height, uint32_t stride,
86 lv_color_format_t cf)
87 {
88 vg_lite_buffer_format_t vgformat = vglite_get_buf_format(cf);
89
90 vgbuf->format = vgformat;
91 vgbuf->tiled = VG_LITE_LINEAR;
92 vgbuf->image_mode = VG_LITE_NORMAL_IMAGE_MODE;
93 vgbuf->transparency_mode = VG_LITE_IMAGE_OPAQUE;
94
95 vgbuf->width = (int32_t)width;
96 vgbuf->height = (int32_t)height;
97 vgbuf->stride = (int32_t)stride;
98
99 lv_memzero(&vgbuf->yuv, sizeof(vgbuf->yuv));
100
101 vgbuf->memory = buf;
102 vgbuf->address = (uint32_t)vgbuf->memory;
103 vgbuf->handle = NULL;
104 }
105
106 /**********************
107 * STATIC FUNCTIONS
108 **********************/
109
_set_vgbuf_ptr(vg_lite_buffer_t * vgbuf,void * buf)110 static inline void _set_vgbuf_ptr(vg_lite_buffer_t * vgbuf, void * buf)
111 {
112 vgbuf->memory = buf;
113 vgbuf->address = (uint32_t)vgbuf->memory;
114 }
115
116 #endif /*LV_USE_DRAW_VGLITE*/
117