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