• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  *   Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License. \n
14  *
15  * Description: Provides the data struct define of vau api \n
16  */
17 
18 #ifndef SOC_VAU_TYPE_H
19 #define SOC_VAU_TYPE_H
20 
21 #include "td_base.h"
22 #include "soc_gfx_type.h"
23 
24 #ifdef __cplusplus
25 #if __cplusplus
26 extern "C" {
27 #endif
28 #endif
29 
30 /**
31  * @defgroup vau_type vau_type
32  * @ingroup  gpu_type
33  * @{
34  */
35 
36  /**
37  * @if Eng
38  * @brief  Size of the compression header.
39  * @else
40  * @brief  压缩头的大小
41  * @endif
42  */
43 #define VAU_CMP_HEADER_SIZE 16
44 
45 #define EXT_VAU_MAX_STOPS 7
46 
47 typedef td_u32   ext_vau_color;
48 
49 /**
50  * @if Eng
51  * @brief  matrix.
52  * @else
53  * @brief  矩阵
54  * @endif
55  */
56 typedef struct {
57     td_float matrix[3][3];
58 } ext_vau_matrix;
59 
60 typedef enum {
61     EXT_VAU_BLUR_MODE_GAUSSIAN = 0,
62     EXT_VAU_BLUR_MODE_MAX
63 } ext_vau_blur_mode;
64 
65 typedef enum {
66     EXT_VAU_COLOR_SPACE_BT709 = 0,
67     EXT_VAU_COLOR_SPACE_BT2020,
68     EXT_VAU_COLOR_SPACE_MAX
69 } ext_vau_color_space;
70 
71 /**
72  * @if Eng
73  * @brief  alpha information.
74  * @else
75  * @brief  alpha信息
76  * @endif
77  */
78 typedef struct {
79     td_bool is_alpha_max_128;   /*!< @if Eng Maximum alpha value.
80                                      @else   alpha最大值 @endif */
81     td_u8 alpha0;               /*!< @if Eng Alpha input value when the output format is 1555.
82                                      @else   输出格式为1555时alpha输入值 @endif */
83     td_u8 alpha1;               /*!< @if Eng Alpha input value when the output format is 1555.
84                                      @else   输出格式为1555时alpha输出值 @endif */
85     td_u8 alpha_thd;            /*!< @if Eng Alpha threshold when the output format is 1555.
86                                      @else   输出格式为1555时alpha阈值 @endif */
87     td_u8 global_alpha;         /*!< @if Eng Global alpha.
88                                      @else   全局alpha @endif */
89     td_bool golbal_premult_en;  /*!< @if Eng Global alpha premultiplication enable.
90                                      @else   全局alpha预乘使能 @endif */
91     td_bool global_alpha_en;    /*!< @if Eng Global alpha enable.
92                                      @else   全局alpha使能 @endif */
93     td_bool premult_en;         /*!< @if Eng Premultiplication enable.
94                                      @else   预乘使能 @endif */
95     td_bool pixel_alpha_en;     /*!< @if Eng Pixel alpha enable.
96                                      @else   像素alpha使能 @endif */
97 } ext_vau_alpha_info;
98 
99 /**
100  * @if Eng
101  * @brief  Paint mode.
102  * @else
103  * @brief  画笔模式
104  * @endif
105  */
106 typedef enum {
107     EXT_VAU_PAINT_MODE_NONE = 0x0,     /*!< @if Eng Initialization Value.
108                                             @else   初始化值 @endif */
109     EXT_VAU_PAINT_MODE_STROKE = 0x1,   /*!< @if Eng Stroke only.
110                                             @else   只做描边 @endif */
111     EXT_VAU_PAINT_MODE_FILL = 0x2,     /*!< @if Eng Fill only.
112                                             @else   只做内部填充 @endif */
113     EXT_VAU_PAINT_MODE_ALL = EXT_VAU_PAINT_MODE_STROKE | EXT_VAU_PAINT_MODE_FILL, /*!< @if Eng
114                                             Do both strokes and interior fills.
115                                             @else   同时做描边和内部填充 @endif */
116 } ext_vau_paint_mode;
117 
118 /**
119  * @if Eng
120  * @brief  Gradient Tile Mode.
121  * @else
122  * @brief  渐变平铺模式
123  * @endif
124  */
125 typedef enum {
126     EXT_VAU_PAINT_TILE_MODE_CLAMP = 0,    /*!< @if Eng Extension mode: The color of the last stop point is extended.
127                                                For hatches, expand the edge-most color.
128                                                @else   延展模式,往外扩最后一个 stop 点的颜色;
129                                                对于图案填充,往外扩最边缘的颜色 @endif */
130     EXT_VAU_PAINT_TILE_MODE_REPEAT,       /*!< @if Eng Repeat mode: The color of each stop point is repeated.
131                                                For hatches, the pattern is tiled repeatedly.
132                                                @else   重复模式,重复每个 stop 点的颜色;
133                                                对于图案填充,重复平铺该图案 @endif */
134     EXT_VAU_PAINT_TILE_MODE_MIRROR,       /*!< @if Eng In mirroring mode, the color of each stop point is repeated
135                                                reversely. For hatches, the pattern is repeatedly tiled in reverse.
136                                                @else   镜像模式,反向重复每个 stop 点的颜色;
137                                                对于图案填充,反向重复平铺该图案 @endif */
138     EXT_VAU_PAINT_TILE_MODE_MAX           /*!< @if Eng Invalid value.
139                                                @else   无效值 @endif */
140 } ext_vau_paint_tile_mode;
141 
142 /**
143  * @if Eng
144  * @brief  paint type.
145  * @else
146  * @brief  画笔类型
147  * @endif
148  */
149 typedef enum {
150     EXT_VAU_PAINT_TYPE_COLOR = 0,         /*!< @if Eng Solid fill.
151                                                @else   纯色填充 @endif */
152     EXT_VAU_PAINT_TYPE_COLOR_ALPHA_FF,    /*!< @if Eng Solid color fill, but alpha in the path is all FF.
153                                                @else   纯色填充,但路径内alpha为全FF @endif */
154     EXT_VAU_PAINT_TYPE_LINEAR_GRADIENT,   /*!< @if Eng Linear gradient fill.
155                                                @else   线性渐变填充 @endif */
156     EXT_VAU_PAINT_TYPE_RADIAL_GRADIENT,   /*!< @if Eng Radial gradient fill.
157                                                @else   径向渐变填充 @endif */
158     EXT_VAU_PAINT_TYPE_SWEEP_GRADIENT,    /*!< @if Eng Sweep gradient fill.
159                                                @else   扫描渐变填充 @endif */
160     EXT_VAU_PAINT_TYPE_PATTERN,           /*!< @if Eng Pattern fill.
161                                                @else   图案填充 @endif */
162     EXT_VAU_PAINT_TYPE_MAX                /*!< @if Eng Invalid input.
163                                                @else   无效输入 @endif */
164 } ext_vau_paint_type;
165 
166 /**
167  * @if Eng
168  * @brief  stroke cap type.
169  * @else
170  * @brief  stroke线冒类型
171  * @endif
172  */
173 typedef enum {
174     EXT_VAU_STROKE_LINE_CAP_BUTT = 0,    /*!< @if Eng Wireless Cap .
175                                               @else   无线帽 @endif */
176     EXT_VAU_STROKE_LINE_CAP_ROUND,       /*!< @if Eng Round cable cap .
177                                               @else   圆形线帽 @endif */
178     EXT_VAU_STROKE_LINE_CAP_SQUARE,      /*!< @if Eng Square cable cap .
179                                               @else   方形线帽 @endif */
180     EXT_VAU_STROKE_LINE_CAP_MAX          /*!< @if Eng Invalid value.
181                                               @else   无效值 @endif */
182 } ext_vau_stroke_line_cap;
183 
184 /**
185  * @if Eng
186  * @brief  stroke connection type.
187  * @else
188  * @brief  stroke连接类型
189  * @endif
190  */
191 typedef enum {
192     EXT_VAU_STROKE_LINE_JOIN_MITER = 0,    /*!< @if Eng miter.
193                                                 @else   斜接 @endif */
194     EXT_VAU_STROKE_LINE_JOIN_ROUND,        /*!< @if Eng circular connection.
195                                                 @else   圆形连接 @endif */
196     EXT_VAU_STROKE_LINE_JOIN_BEVEL,        /*!< @if Eng bevel connection.
197                                                 @else   斜面连接 @endif */
198     EXT_VAU_STROKE_LINE_JOIN_MAX           /*!< @if Eng Invalid value.
199                                                 @else   无效值 @endif */
200 } ext_vau_stroke_line_join;
201 
202 /**
203  * @if Eng
204  * @brief  Antialiasing attribution.
205  * @else
206  * @brief  抗锯齿属性
207  * @endif
208  */
209 typedef enum {
210     EXT_VAU_RENDER_QUALITY_NONE_AA,    /*!< @if Eng No anti-aliasing.
211                                             @else   不开抗锯齿 @endif */
212     EXT_VAU_RENDER_QUALITY_FASTER,     /*!< @if Eng MSAA8X, Bessel stroke fit with 4-segment Bessel.
213                                             @else   8X 多重采样抗锯齿模式,
214                                             贝塞尔stroke使用4条贝塞尔拟合 @endif */
215     EXT_VAU_RENDER_QUALITY_BETTER,     /*!< @if Eng MSAA8X, Bessel stroke fit with 32egment Bessel.
216                                             @else   8X 多重采样抗锯齿模式,
217                                             贝塞尔stroke使用32根直线拟合  @endif */
218 } ext_vau_render_quality;
219 
220 /**
221  * @if Eng
222  * @brief  Rendering configuration.
223  * @else
224  * @brief  渲染配置
225  * @endif
226  */
227 typedef struct {
228     ext_vau_render_quality render_quality;    /*!< @if Eng Rendering quality.
229                                                    @else   渲染质量 @endif */
230 } ext_vau_render_cfg;
231 
232 /**
233  * @if Eng
234  * @brief  point.
235  * @else
236  * @brief  点
237  * @endif
238  */
239 typedef struct {
240     td_s32 x;
241     td_s32 y;
242 } ext_vau_point;
243 
244 /**
245  * @if Eng
246  * @brief  Line.
247  * @else
248  * @brief  直线
249  * @endif
250  */
251 typedef struct {
252     td_float x0;
253     td_float y0;
254     td_float x1;
255     td_float y1;
256 } ext_vau_line;
257 
258 
259 /**
260  * @if Eng
261  * @brief  Rectangle, Ellipse.
262  * @else
263  * @brief  矩形,椭圆
264  * @endif
265  */
266 typedef struct {
267     td_float x;
268     td_float y;
269     td_float width;
270     td_float height;
271 } ext_vau_rect, ext_vau_ellipse;
272 
273 /**
274  * @if Eng
275  * @brief  Rounded Rectangle.
276  * @else
277  * @brief  圆角矩形
278  * @endif
279  */
280 typedef struct {
281     td_float x;
282     td_float y;
283     td_float width;
284     td_float height;
285     td_float arc_width;
286     td_float arc_height;
287 } ext_vau_round_rect;
288 
289 /**
290  * @if Eng
291  * @brief  Arc Type.
292  * @else
293  * @brief  弧类型
294  * @endif
295  */
296 typedef enum {
297     EXT_VAU_ARC_TYPE_OPEN,
298     EXT_VAU_ARC_TYPE_CHORD,
299     EXT_VAU_ARC_TYPE_PIE,
300 
301     EXT_VAU_ARC_TYPE_MAX,
302 } ext_vau_arc_type;
303 
304 /**
305  * @if Eng
306  * @brief  Arc.
307  * @else
308  * @brief  弧
309  * @endif
310  */
311 typedef struct {
312     td_float x;
313     td_float y;
314     td_float width;
315     td_float height;
316     td_float start_angle;
317     td_float angle_extend;
318     ext_vau_arc_type type;
319 } ext_vau_arc;
320 
321 /**
322  * @if Eng
323  * @brief  solid paint attribution.
324  * @else
325  * @brief  纯色画笔属性
326  * @endif
327  */
328 typedef union {
329     struct {
330         td_u32 rgb : 24;
331         td_u32 opa : 8;
332     };
333     td_u32 color;
334 } ext_vau_solid_attr;
335 
336 /**
337  * @if Eng
338  * @brief  stops.
339  * @else
340  * @brief  停止点
341  * @endif
342  */
343 typedef struct {
344     ext_vau_color *colors; /*!< @if Eng Stop Point Color Array.
345                                 @else   停止点颜色数组 @endif */
346     td_float *offsets;     /*!< @if Eng Indicates the stop point offset array, which is expressed in floating point.
347                                 @else   停止点偏移数组,浮点表示 @endif */
348     td_u8 num;             /*!< @if Eng Number of stop points, that is, the number of colors and offset arrays.
349                                 @else   停止点个数,即colors和offset的数组个数 @endif */
350 } ext_vau_stops;
351 
352 /**
353  * @if Eng
354  * @brief  Linear Gradient Fill Properties.
355  * @else
356  * @brief  线性渐变填充属性
357  * @endif
358  */
359 typedef struct {
360     ext_vau_point start_point;    /*!< @if Eng Start point coordinate.
361                                        @else   起始点坐标 @endif */
362     ext_vau_point end_point;      /*!< @if Eng end point coordinate.
363                                        @else   终点坐标 @endif */
364 } ext_vau_linear_gradient_attr;
365 
366 /**
367  * @if Eng
368  * @brief  Radial gradient fill attribution.
369  * @else
370  * @brief  径向渐变填充属性
371  * @endif
372  */
373 typedef struct {
374     td_u16 radius;          /*!< @if Eng Gradient Radius.
375                                  @else   渐变半径 @endif */
376     ext_vau_point center;   /*!< @if Eng Gradient Center Point.
377                                  @else   圆点 @endif */
378 } ext_vau_radial_gradient_attr;
379 
380 /**
381  * @if Eng
382  * @brief  sweep gradient fill attribution.
383  * @else
384  * @brief  画笔渐变平铺模式
385  * @endif
386  */
387 typedef struct {
388     ext_vau_point center;   /*!< @if Eng Gradient Center Point.
389                                  @else   渐变中心点 @endif */
390     td_u32 start_angle;     /*!< @if Eng Gradient Start Angle.
391                                  @else   渐变起始角度 @endif */
392 } ext_vau_sweep_gradient_attr;
393 
394 /**
395  * @if Eng
396  * @brief  Gradient paint attribution.
397  * @else
398  * @brief  渐变画笔属性
399  * @endif
400  */
401 typedef struct {
402     ext_vau_paint_tile_mode tile_mode;       /*!< @if Eng Brush Gradient Tile Mode.
403                                                   @else   画笔渐变平铺模式 @endif */
404     ext_vau_stops stops;                     /*!< @if Eng stops info.
405                                                   @else   停止点信息 @endif */
406     union {
407         ext_vau_linear_gradient_attr linear; /*!< @if Eng Linear gradient fill attribution.
408                                                   @else   线性渐变填充属性 @endif */
409         ext_vau_radial_gradient_attr radial; /*!< @if Eng Radial gradient fill attribution.
410                                                   @else   径向渐变填充属性 @endif */
411         ext_vau_sweep_gradient_attr sweep;   /*!< @if Eng Sweep gradient fill attribution.
412                                                   @else   扫描渐变填充属性 @endif */
413     };
414 } ext_vau_gradient_attr;
415 
416 /**
417  * @if Eng
418  * @brief  Paint attribution.
419  * @else
420  * @brief  画笔属性
421  * @endif
422  */
423 typedef struct {
424     ext_vau_paint_type paint_type;       /*!< @if Eng paint type.
425                                               @else   画笔类型 @endif */
426     union {
427         ext_vau_solid_attr solid;        /*!< @if Eng solid paint attribution.
428                                               @else   纯色画笔属性 @endif */
429         ext_vau_gradient_attr gradient;  /*!< @if Eng Gradient paint attribution.
430                                               @else   渐变画笔属性 @endif */
431     };
432 } ext_vau_paint_attr;
433 
434 
435 /**
436  * @if Eng
437  * @brief  Dash.
438  * @else
439  * @brief  虚线
440  * @endif
441  */
442 typedef struct {
443     td_bool enable;    /*!< @if Eng Whether to enable the dotted line function.
444                             @else   是否使能虚线功能 @endif */
445     float *array;      /*!< @if Eng dashed array.
446                             @else   虚线数组 @endif */
447     td_u32 count;      /*!< @if Eng Array Length.
448                             @else   数组长度 @endif */
449     float offset;      /*!< @if Eng Dotted Line Start Offset.
450                             @else   虚线起点偏移 @endif */
451     td_bool reset;     /*!< @if Eng Whether to redraw dashed lines for subpaths.
452                             @else   子路径是否重新绘制虚线 @endif */
453 } ext_vau_dash;
454 
455 /**
456  * @if Eng
457  * @brief  Stroke attribution.
458  * @else
459  * @brief  描边属性
460  * @endif
461  */
462 typedef struct {
463     float width;                    /*!< @if Eng Line width.
464                                          @else   线宽 @endif */
465     ext_vau_dash dash;              /*!< @if Eng Dash information.
466                                          @else   虚线信息 @endif */
467     ext_vau_stroke_line_cap cap;    /*!< @if Eng Stroke cap type.
468                                          @else   stroke线冒类型 @endif */
469     ext_vau_stroke_line_join join;  /*!< @if Eng Stroke connection type.
470                                          @else   stroke连接类型 @endif */
471     float miter_limit;              /*!< @if Eng Maximum mitter length.
472                                          @else   最大的miter长度 @endif */
473     ext_vau_paint_attr paint_attr;  /*!< @if Eng Paint attribution.
474                                          @else   画笔属性 @endif */
475 } ext_vau_stroke_attr;
476 
477 /**
478  * @if Eng
479  * @brief  Filling type
480  * @else
481  * @brief  填充类型
482  * @endif
483  */
484 typedef enum {
485     EXT_VAU_EVEN_ODD_FILL = 0,    /*!< @if Eng The filling rule is Even ODD..
486                                        @else   奇偶规则 @endif */
487     EXT_VAU_NON_ZERO_FILL,        /*!< @if Eng The filling rule is zero..
488                                        @else   非零规则 @endif */
489     EXT_VAU_FILL_MAX              /*!< @if Eng Invalid value.
490                                        @else   无效值 @endif */
491 } ext_vau_fill_type;
492 
493 /**
494  * @if Eng
495  * @brief  Internal Fill attribution
496  * @else
497  * @brief  内部填充属性
498  * @endif
499  */
500 typedef struct {
501     ext_vau_fill_type type;         /*!< @if Eng Filling type.
502                                        @else   填充类型 @endif */
503     ext_vau_paint_attr paint_attr;  /*!< @if Eng Paint attribution.
504                                        @else   画笔属性 @endif */
505 } ext_vau_fill_attr;
506 
507 /**
508  * @if Eng
509  * @brief  Paint.
510  * @else
511  * @brief  画笔
512  * @endif
513  */
514 typedef struct {
515     ext_vau_render_cfg render_cfg;    /*!< @if Eng Drawing configuration.
516                                            @else   绘制配置 @endif */
517     ext_vau_stroke_attr *stroke_attr; /*!< @if Eng Stroke Properties.
518                                            @else   描边属性 @endif */
519     ext_vau_fill_attr *fill_attr;     /*!< @if Eng Internal Fill Properties.
520                                            @else   内部填充属性 @endif */
521     ext_vau_paint_mode paint_mode;    /*!< @if Eng Paint mode.
522                                            @else   画笔模式 @endif */
523 } ext_vau_paint;
524 
525 /**
526  * @if Eng
527  * @brief  Command Count.
528  * @else
529  * @brief  命令计数
530  * @endif
531  */
532 typedef struct {
533     td_bool enable;
534     td_u16 move_count;
535     td_u16 line_count;
536     td_u16 quad_count;
537     td_u16 cubic_count;
538     td_u16 arc_count;
539 } ext_cmd_count;
540 
541 typedef enum {
542     VAU_PATH_ABSOLUTE = 0,
543     VAU_PATH_RELATIVE = 1,
544 } vau_path_abs_rel;
545 
546 typedef enum {
547     VAU_PATH_CLOSE_PATH = (0 << 1),
548     VAU_PATH_MOVE_TO    = (1 << 1),
549     VAU_PATH_LINE_TO    = (2 << 1),
550     VAU_PATH_HLINE_TO   = (3 << 1),
551     VAU_PATH_VLINE_TO   = (4 << 1),
552     VAU_PATH_QUAD_TO    = (5 << 1),
553     VAU_PATH_CUBIC_TO   = (6 << 1),
554     VAU_PATH_SQUAD_TO   = (7 << 1),
555     VAU_PATH_SCUBIC_TO  = (8 << 1),
556     VAU_PATH_SCCWARC_TO = (9 << 1),
557     VAU_PATH_SCWARC_TO  = (10 << 1),
558     VAU_PATH_LCCWARC_TO = (11 << 1),
559     VAU_PATH_LCWARC_TO  = (12 << 1),
560 } vau_path_segment;
561 
562 enum {
563     VAU_PATH_MOVE_TO_DATA_NUM      = 2,
564     VAU_PATH_LINE_TO_DATA_NUM      = 2,
565     VAU_PATH_HLINE_TO_DATA_NUM     = 1,
566     VAU_PATH_VLINE_TO_DATA_NUM     = 1,
567     VAU_PATH_QUAD_TO_DATA_NUM      = 4,
568     VAU_PATH_CUBIC_TO_DATA_NUM     = 6,
569     VAU_PATH_SQUAD_TO_DATA_NUM     = 2,
570     VAU_PATH_SCUBIC_TO_DATA_NUM    = 4,
571     VAU_PATH_SCCWARC_TO_DATA_NUM   = 5,
572     VAU_PATH_SCWARC_TO_DATA_NUM    = 5,
573     VAU_PATH_LCCWARC_TO_DATA_NUM   = 5,
574     VAU_PATH_LCWARC_TO_DATA_NUM    = 5,
575 };
576 
577 typedef enum {
578     VAU_PATH_MOVE_TO_ABS    = VAU_PATH_MOVE_TO    | VAU_PATH_ABSOLUTE,
579     VAU_PATH_MOVE_TO_REL    = VAU_PATH_MOVE_TO    | VAU_PATH_RELATIVE,
580     VAU_PATH_LINE_TO_ABS    = VAU_PATH_LINE_TO    | VAU_PATH_ABSOLUTE,
581     VAU_PATH_LINE_TO_REL    = VAU_PATH_LINE_TO    | VAU_PATH_RELATIVE,
582     VAU_PATH_HLINE_TO_ABS   = VAU_PATH_HLINE_TO   | VAU_PATH_ABSOLUTE,
583     VAU_PATH_HLINE_TO_REL   = VAU_PATH_HLINE_TO   | VAU_PATH_RELATIVE,
584     VAU_PATH_VLINE_TO_ABS   = VAU_PATH_VLINE_TO   | VAU_PATH_ABSOLUTE,
585     VAU_PATH_VLINE_TO_REL   = VAU_PATH_VLINE_TO   | VAU_PATH_RELATIVE,
586     VAU_PATH_QUAD_TO_ABS    = VAU_PATH_QUAD_TO    | VAU_PATH_ABSOLUTE,
587     VAU_PATH_QUAD_TO_REL    = VAU_PATH_QUAD_TO    | VAU_PATH_RELATIVE,
588     VAU_PATH_CUBIC_TO_ABS   = VAU_PATH_CUBIC_TO   | VAU_PATH_ABSOLUTE,
589     VAU_PATH_CUBIC_TO_REL   = VAU_PATH_CUBIC_TO   | VAU_PATH_RELATIVE,
590     VAU_PATH_SQUAD_TO_ABS   = VAU_PATH_SQUAD_TO   | VAU_PATH_ABSOLUTE,
591     VAU_PATH_SQUAD_TO_REL   = VAU_PATH_SQUAD_TO   | VAU_PATH_RELATIVE,
592     VAU_PATH_SCUBIC_TO_ABS  = VAU_PATH_SCUBIC_TO  | VAU_PATH_ABSOLUTE,
593     VAU_PATH_SCUBIC_TO_REL  = VAU_PATH_SCUBIC_TO  | VAU_PATH_RELATIVE,
594     VAU_PATH_SCCWARC_TO_ABS = VAU_PATH_SCCWARC_TO | VAU_PATH_ABSOLUTE,
595     VAU_PATH_SCCWARC_TO_REL = VAU_PATH_SCCWARC_TO | VAU_PATH_RELATIVE,
596     VAU_PATH_SCWARC_TO_ABS  = VAU_PATH_SCWARC_TO  | VAU_PATH_ABSOLUTE,
597     VAU_PATH_SCWARC_TO_REL  = VAU_PATH_SCWARC_TO  | VAU_PATH_RELATIVE,
598     VAU_PATH_LCCWARC_TO_ABS = VAU_PATH_LCCWARC_TO | VAU_PATH_ABSOLUTE,
599     VAU_PATH_LCCWARC_TO_REL = VAU_PATH_LCCWARC_TO | VAU_PATH_RELATIVE,
600     VAU_PATH_LCWARC_TO_ABS  = VAU_PATH_LCWARC_TO  | VAU_PATH_ABSOLUTE,
601     VAU_PATH_LCWARC_TO_REL  = VAU_PATH_LCWARC_TO  | VAU_PATH_RELATIVE,
602     VAU_PATH_MAX            = 0xFF
603 } vau_path_cmd;
604 
605 /**
606  * @if Eng
607  * @brief  Path
608  * @else
609  * @brief  路径
610  * @endif
611  */
612 typedef struct {
613     ext_cmd_count cmd_count;    /*!< @if Eng Indicates the number of trails..
614                                      @else   路径条数提示值 endif */
615     td_uchar *cmds;             /*!< @if Eng Path command word array.
616                                      @else   路径命令字数组 endif */
617     td_u32 cmd_num;             /*!< @if Eng Number of command words.
618                                      @else   命令字的个数 endif */
619     td_float *datas;            /*!< @if Eng Coordinate data array.
620                                      @else   坐标数据数组 endif */
621     td_u32 data_num;            /*!< @if Eng Coordinate array array length.
622                                      @else   坐标数组数组长度 endif */
623 } ext_vau_path;
624 
625 typedef enum {
626     EXT_VAU_REFLECT_MODE_X = 0x1,
627     EXT_VAU_REFLECT_MODE_Y = 0x2,
628     EXT_VAU_REFLECT_MODE_XY = 0x4,
629 } ext_vau_reflect_mode;
630 
631 /**
632  * @if Eng
633  * @brief  affine mode.
634  * @else
635  * @brief  仿射变换模式
636  * @endif
637  */
638 typedef enum {
639     EXT_VAU_AFFINE_MODE_TRANSLATE = 0x1,
640     EXT_VAU_AFFINE_MODE_ZOOM      = 0x2,
641     EXT_VAU_AFFINE_MODE_ROTATE    = 0x4,
642     EXT_VAU_AFFINE_MODE_REFLECT   = 0x8,
643     EXT_VAU_AFFINE_MODE_SHEARING  = 0x10,
644     EXT_VAU_AFFINE_MODE_USE_COEF = 0x20,
645 } ext_vau_affine_mode;
646 
647 /**
648  * @if Eng
649  * @brief  Crop mode.
650  * @else
651  * @brief  剪切模式
652  * @endif
653  */
654 typedef enum {
655     EXT_VAU_CROP_INSIDE,
656     EXT_VAU_CROP_OUTSIDE,
657     EXT_VAU_CROP_MAX
658 } ext_vau_crop_mode;
659 
660 /**
661  * @if Eng
662  * @brief  Crop Attributes.
663  * @else
664  * @brief  剪切属性
665  * @endif
666  */
667 typedef struct {
668     td_bool crop_en;
669     ext_vau_crop_mode crop_mode;
670     ext_rect crop_rect;
671 } ext_vau_crop_attr;
672 
673 /**
674  * @if Eng
675  * @brief  Transfer Attributes.
676  * @else
677  * @brief  转移属性
678  * @endif
679  */
680 typedef struct {
681     td_bool enable;
682     td_s32 x;
683     td_s32 y;
684 } ext_vau_trans_attr;
685 
686 /**
687  * @if Eng
688  * @brief  Rop mode.
689  * @else
690  * @brief  rop模式
691  * @endif
692  */
693 typedef enum {
694     EXT_VAU_ROP_BLACK = 0x0,    /*!< @if Eng Write all 0s.
695                                      @else   写为全0 @endif */
696     EXT_VAU_ROP_NOTMERGEPEN,    /*!< @if Eng Foreground and Background are first or then reversed.
697                                      @else   前景与后景先作或再取反 @endif */
698     EXT_VAU_ROP_MASKNOTPEN,     /*!< @if Eng Reversing the foreground and re-anding the background.
699                                      @else   前景取反再与后景相与 @endif */
700     EXT_VAU_ROP_NOTCOPYPEN,     /*!< @if Eng foreground inversion.
701                                      @else   前景取反 @endif */
702     EXT_VAU_ROP_MASKPENNOT,     /*!< @if Eng Inversion of the background and re-parametering of the foreground.
703                                      @else   后景取反再与前景相与 @endif */
704     EXT_VAU_ROP_NOT,            /*!< @if Eng foreground inversion.
705                                      @else   前景取反 @endif */
706     EXT_VAU_ROP_XORPEN,         /*!< @if Eng XOR between foreground and background.
707                                      @else   前景与后景取异或 @endif */
708     EXT_VAU_ROP_NOTMASKPEN,     /*!< @if Eng Reversal of the foreground and the background.
709                                      @else   前景与后景相与后取反 @endif */
710     EXT_VAU_ROP_MASKPEN,        /*!< @if Eng The and operation of foreground and background.
711                                      @else   前景与后景相与 @endif */
712     EXT_VAU_ROP_NOTXORPEN,      /*!< @if Eng Inversion after XOR of foreground and background.
713                                      @else   前景与后景异或后取反 @endif */
714     EXT_VAU_ROP_NOP,            /*!< @if Eng Directly output background.
715                                      @else   直接输出背景 @endif */
716     EXT_VAU_ROP_MERGENOTPEN,    /*!< @if Eng Reversing the foreground and then ORing the background.
717                                      @else   前景取反再与后景相或 @endif */
718     EXT_VAU_ROP_COPYPEN,        /*!< @if Eng Direct output foreground.
719                                      @else   直接输出前景 @endif */
720     EXT_VAU_ROP_MERGEPENNOT,    /*!< @if Eng The background scene is reversed and then ORed with the foreground.
721                                      @else   背景景取反再与前景相或 @endif */
722     EXT_VAU_ROP_MERGEPEN,       /*!< @if Eng The foreground is ordained with the background.
723                                      @else   前景与后景相或 @endif */
724     EXT_VAU_ROP_WHITE,          /*!< @if Eng Write all 1s.
725                                      @else   写为全1 @endif */
726     EXT_VAU_ROP_MAX             /*!< @if Eng Invalid value.
727                                      @else   无效值 @endif */
728 } ext_vau_rop_mode;
729 
730 /**
731  * @if Eng
732  * @brief  ROP information configuration.
733  * @else
734  * @brief  rop信息配置
735  * @endif
736  */
737 typedef struct {
738     td_bool rop_enable;                /*!< @if Eng ROP enable.
739                                             @else   rop使能 @endif */
740     ext_vau_rop_mode alpha_rop_mode;   /*!< @if Eng Alpha rop mode.
741                                             @else   alpha rop模式 @endif */
742     ext_vau_rop_mode color_rop_mode;   /*!< @if Eng Color rop mode.
743                                             @else   color rop模式 @endif */
744 } ext_vau_rop_opt;
745 
746 /**
747  * @if Eng
748  * @brief  colorkey schematic attribute.
749  * @else
750  * @brief  colorkey模式属性
751  * @endif
752  */
753 typedef enum {
754     EXT_VAU_COLORKEY_NONE = 0,    /*!< @if Eng Do not perform the colorkey operation.
755                                        @else   不做colorkey操作 @endif */
756     EXT_VAU_COLORKEY_FOREGROUND,  /*!< @if Eng Perform the colorkey operation on the foreground bitmap.
757                                        @else   对前景位图进行colorkey操作 @endif */
758     EXT_VAU_COLORKEY_BACKGROUND,  /*!< @if Eng Perform the colorkey operation on the background bitmap.
759                                        @else   对背景位图进行colorkey操作 @endif */
760     EXT_VAU_COLORKEY_MAX          /*!< @if Eng Invalid colorkey mode.
761                                        @else   无效的colorkey模式 @endif */
762 } ext_vau_colorkey_mode;
763 
764 /**
765  * @if Eng
766  * @brief  Color key attributes for individual color components.
767  * @else
768  * @brief  单个颜色分量的关键色属性
769  * @endif
770  */
771 typedef struct {
772     td_u16 component_min;          /*!< @if Eng Minimum value of component color keys .
773                                         @else   分量关键色最小值 @endif */
774     td_u16 component_max;          /*!< @if Eng Maximum value of component color key .
775                                         @else   分量关键色最大值 @endif */
776     td_bool is_component_out;      /*!< @if Eng Component key is in or out of range .
777                                         @else   分量关键色在范围内或范围外 @endif */
778     td_bool is_component_ignore;   /*!< @if Eng Ignore Component .
779                                         @else   分量是否忽略 @endif */
780     td_u16 component_mask;   /*!< @if Eng Component mask. Currently, the value is meaningless and ranges from 0 to 255.
781                                         @else   分量掩码,目前该值无意义,0~255均可 @endif */
782 } ext_vau_colorkey_component;
783 
784 /**
785  * @if Eng
786  * @brief  Colorkey value.
787  * @else
788  * @brief  Colorkey值
789  * @endif
790  */
791 typedef union {
792     struct {
793         ext_vau_colorkey_component alpha;  /*!< @if Eng Alpha value .
794                                                 @else   alpha 值 @endif */
795         ext_vau_colorkey_component red;    /*!< @if Eng Red component .
796                                                 @else   红色分量 @endif */
797         ext_vau_colorkey_component green;  /*!< @if Eng Green component .
798                                                 @else   绿色分量 @endif */
799         ext_vau_colorkey_component blue;   /*!< @if Eng Blue component .
800                                                 @else   蓝色分量 @endif */
801     } colorkey_argb;
802 
803     struct {
804         ext_vau_colorkey_component alpha;
805         ext_vau_colorkey_component clut;
806     } colorkey_clut;                        /*!< @if Eng The ES does not support this function .
807                                                  @else   ES暂时不支持 @endif */
808 } ext_vau_colorkey_value;
809 
810 /**
811  * @if Eng
812  * @brief  Configuring Colorkey Information.
813  * @else
814  * @brief  Colorkey信息配置
815  * @endif
816  */
817 typedef struct {
818     td_bool colorkey_enable;               /*!< @if Eng Colorkey enable .
819                                                 @else   Colorkey使能 @endif */
820     ext_vau_colorkey_mode colorkey_mode;   /*!< @if Eng Colorkey mode.
821                                                 @else   Colorkey模式 @endif */
822     ext_vau_colorkey_value colorkey_value; /*!< @if Eng Colorkey value.
823                                                 @else   Colorkey值 @endif */
824 } ext_vau_colorkey_opt;
825 
826 /**
827  * @if Eng
828  * @brief  Blend mode.
829  * @else
830  * @brief  混合模式
831  * @endif
832  */
833 typedef enum {
834     EXT_VAU_BLEND_ZERO = 0x0,
835     EXT_VAU_BLEND_ONE,
836     EXT_VAU_BLEND_SRC2COLOR,
837     EXT_VAU_BLEND_INVSRC2COLOR,
838     EXT_VAU_BLEND_SRC2ALPHA,
839     EXT_VAU_BLEND_INVSRC2ALPHA,
840     EXT_VAU_BLEND_SRC1COLOR,
841     EXT_VAU_BLEND_INVSRC1COLOR,
842     EXT_VAU_BLEND_SRC1ALPHA,
843     EXT_VAU_BLEND_INVSRC1ALPHA,
844     EXT_VAU_BLEND_SRC2ALPHASAT,
845     EXT_VAU_BLEND_MAX
846 } ext_vau_blend_mode;
847 
848 /**
849  * @if Eng
850  * @brief  Blend command.
851  * @else
852  * @brief  混合命令
853  * @endif
854  */
855 typedef enum {
856     EXT_VAU_BLENDCMD_NONE = 0x0,  /*!< @if Eng Blend enable.
857                                        @else   blend使能 @endif */
858     EXT_VAU_BLENDCMD_CLEAR,       /*!< @if Eng The drawing will not be submitted to the canvas.
859                                        @else   所绘制不会提交到画布上 @endif */
860     EXT_VAU_BLENDCMD_SRC,         /*!< @if Eng Display upper-layer drawing picture.
861                                        @else   显示上层绘制图片 @endif */
862     EXT_VAU_BLENDCMD_SRCOVER,     /*!< @if Eng The upper and lower layers are overlapped.
863                                        @else   正常绘制显示,上下层绘制叠盖 @endif */
864     EXT_VAU_BLENDCMD_DSTOVER,     /*!< @if Eng Both the upper and lower levels are displayed. Lower top display.
865                                        @else   上下层都显示。下层居上显示 @endif */
866     EXT_VAU_BLENDCMD_SRCIN,       /*!< @if Eng Draw the intersection of two layers. Show the upper layer.
867                                        @else   取两层绘制交集。显示上层 @endif */
868     EXT_VAU_BLENDCMD_DSTIN,       /*!< @if Eng Draw the intersection of two layers. Show the lower layer.
869                                        @else   取两层绘制交集。显示下层 @endif */
870     EXT_VAU_BLENDCMD_SRCOUT,      /*!< @if Eng Draw the non-intersection part from the upper layer.
871                                        @else   取上层绘制非交集部分 @endif */
872     EXT_VAU_BLENDCMD_DSTOUT,      /*!< @if Eng Draw the non-intersection part from the lower layer.
873                                        @else   取下层绘制非交集部分 @endif */
874     EXT_VAU_BLENDCMD_SRCATOP,     /*!< @if Eng The non-intersection part of the lower layer and
875                                        the intersection part of the upper layer are selected.
876                                        @else   取下层非交集部分与上层交集部分 @endif */
877     EXT_VAU_BLENDCMD_DSTATOP,     /*!< @if Eng The non-intersection part of the upper layer and
878                                        the intersection part of the lower layer are selected.
879                                        @else   取上层非交集部分与下层交集部分 @endif */
880     EXT_VAU_BLENDCMD_ADD,         /*!< @if Eng The upper and lower layers are superimposed on CNend.
881                                        @else   上下两层叠加 @endif */
882     EXT_VAU_BLENDCMD_XOR,         /*!< @if Eng Take two layers to draw non-intersections.
883                                        Two-layer drawing non-intersection.
884                                        @else   取两层绘制非交集。两层绘制非交集 @endif */
885     EXT_VAU_BLENDCMD_DST,         /*!< @if Eng Display lower-layer drawing picture.
886                                        @else   显示下层绘制图片 @endif */
887     EXT_VAU_BLENDCMD_CONFIG,      /*!< @if Eng configuration.
888                                        @else   配置 @endif */
889     EXT_VAU_BLENDCMD_MAX          /*!< @if Eng Invalid value.
890                                        @else   无效值 @endif */
891 } ext_vau_blend_cmd;
892 
893 /**
894  * @if Eng
895  * @brief  Blend alpha mode.
896  * @else
897  * @brief  blend alpha模式
898  * @endif
899  */
900 typedef enum {
901     EXT_VAU_OUTALPHA_FROM_NORM = 0,    /*!< @if Eng alpha from superposition formula.
902                                             @else   alpha来自叠加公式 @endif */
903     EXT_VAU_OUTALPHA_FROM_BACKGROUND,  /*!< @if Eng alpha from the background.
904                                             @else   alpha来自后景 @endif */
905     EXT_VAU_OUTALPHA_FROM_FOREGROUND,  /*!< @if Eng alpha from foreground.
906                                             @else   alpha来自前景 @endif */
907     EXT_VAU_OUTALPHA_FROM_GLOBALALPHA, /*!< @if Eng alpha from global alpha.
908                                             @else   alpha来自全局alpha @endif */
909     EXT_VAU_OUTALPHA_FROM_MAX          /*!< @if Eng Invalid value.
910                                             @else   无效值 @endif */
911 } ext_vau_out_alpha_mode;
912 
913 /**
914  * @if Eng
915  * @brief  Compressed header information.
916  * @else
917  * @brief  压缩头信息
918  * @endif
919  */
920 typedef struct {
921     td_u32 version;       /*!< @if Eng 0:ES, 1:CS.
922                                @else   0:ES, 1:CS @endif */
923     td_u32 alpha_bypass;  /*!< @if Eng Indicates whether to enable compression for the alpha channel.
924                                The options are as follows: 0: yes; 1: no.
925                                @else   Alpha通道是否压缩的使能配置,配置参数:
926                                0:进行压缩  1:不进行压缩 @endif */
927     td_u32 width;         /*!< @if Eng Image width configuration; 1-pixel aligned, 4 min., 640 max.
928                                @else   图像宽度配置;1pixel对齐,最小4,最大640 @endif */
929     td_u32 height;        /*!< @if Eng Image height configuration; 1-pixel aligned, 4 min., 640 max.
930                                @else   图像高度配置;1pixel对齐,最小4, 最大640 @endif */
931     td_u32 stride;        /*!< @if Eng Size of a tile line after compression, in bytes.
932                                @else   TILE行压缩后的大小,以byte为单位 @endif */
933     td_u32 pixel_format;  /*!< @if Eng Image format (The ES supports only rgb888 and argb8888.).
934                                @else   图片格式(ES只支持rgb888,argb8888) @endif */
935     td_u32 tile_size;     /*!< @if Eng tile size, in 64bits.
936                                @else   无效值 @endif */
937     td_u32 alpha_value;   /*!< @if Eng 0:ALPHA rand value; 1:ALPHA all 0;2:ALPHA all 255; 3:ALPHA 0 and 255.
938                                @else   0:ALPHA rand value; 1:ALPHA all 0;2:ALPHA all 255; 3:ALPHA 0 and 255 @endif */
939     td_u32 mode;          /*!< @if Eng Compression enable flag.
940                                @else   压缩使能标志位:0-cmp 1-bypass @endif */
941     td_s32 tile_width;    /*!< @if Eng Compression ratio.
942                                @else   压缩倍率 @endif */
943 } ext_vau_cmp_header;
944 
945 /**
946  * @if Eng
947  * @brief  blend Information Configuration.
948  * @else
949  * @brief  混合信息配置
950  * @endif
951  */
952 typedef struct {
953     td_bool blend_enable;                      /*!< @if Eng blend enable.
954                                                     @else   blend使能 @endif */
955     ext_vau_blend_cmd blend_cmd;               /*!< @if Eng blend commend.
956                                                     @else   blend命令 @endif */
957     ext_vau_blend_mode background_blend_mode;  /*!< @if Eng Customized blend mode.
958                                                     @else   自定义blend模式 @endif */
959     ext_vau_blend_mode foreground_blend_mode;  /*!< @if Eng Customized blend mode.
960                                                     @else   自定义blend模式 @endif */
961     ext_vau_out_alpha_mode out_alpha_mode;     /*!< @if Eng Alpha Overlay Mode.
962                                                     @else   alpha叠加模式 @endif */
963 } ext_vau_blend_opt;
964 
965 /**
966  * @if Eng
967  * @brief  Gaussian fuzzy parameter.
968  * @else
969  * @brief  高斯模糊参数
970  * @endif
971  */
972 typedef struct {
973     td_float x_sigma;
974     td_float y_sigma;
975     td_bool alpha_gaussian;
976 } ext_vau_gaussian_para;
977 
978 /**
979  * @if Eng
980  * @brief  Gaussian Fuzzy Mode Attributes.
981  * @else
982  * @brief  高斯模糊模式属性
983  * @endif
984  */
985 typedef struct {
986     td_bool blur_en;                      /*!< @if Eng enable.
987                                                @else   使能 @endif */
988     ext_vau_blur_mode blur_mode;          /*!< @if Eng Gaussian fuzzy model.
989                                                @else   高斯模糊模式 @endif */
990     ext_vau_gaussian_para gaussian_attr;  /*!< @if Eng Gaussian fuzzy parameter.
991                                                @else   高斯模糊参数 @endif */
992 } ext_vau_blur_opt;
993 
994 /**
995  * @if Eng
996  * @brief  draw attribution.
997  * @else
998  * @brief  绘制属性
999  * @endif
1000  */
1001 typedef struct {
1002     ext_vau_path *path;
1003     ext_vau_paint *paint;
1004 } ext_vau_draw_attr;
1005 
1006 /**
1007  * @if Eng
1008  * @brief  Rendering Options.
1009  * @else
1010  * @brief  渲染选项
1011  * @endif
1012  */
1013 typedef struct {
1014     ext_vau_rop_opt rop_opt;           /*!< @if Eng rop mode attribute.
1015                                             @else   rop 模式属性 @endif */
1016     ext_vau_colorkey_opt colorkey_opt; /*!< @if Eng colorkey mode attribute.
1017                                             @else   colorkey 模式属性 @endif */
1018     ext_vau_blend_opt blend_opt;       /*!< @if Eng blen mode attribute.
1019                                             @else   blend 模式属性 @endif */
1020     ext_vau_blur_opt blur_opt;         /*!< @if Eng Blur mode attribute (not supported currently).
1021                                             @else   blur 模式属性(暂不支持) @endif */
1022 } ext_vau_blit_opt;
1023 
1024 /**
1025  * @if Eng
1026  * @brief  Pattern mode.
1027  * @else
1028  * @brief  图案填充模式
1029  * @endif
1030  */
1031 typedef enum {
1032     EXT_VAU_PATTERN_DISABLE = 0x0,    /*!< @if Eng Disable.
1033                                            @else   不使能 @endif */
1034     EXT_VAU_PATTERN_FILL    = 0x1,    /*!< @if Eng pattern Fill.
1035                                            @else   fill填充 @endif */
1036     EXT_VAU_PATTERN_PAD     = 0x2,    /*!< @if Eng pattern pad.
1037                                            @else   pad填充 @endif */
1038 } ext_vau_pattern_mode;
1039 
1040 /**
1041  * @if Eng
1042  * @brief  Pattern attribution.
1043  * @else
1044  * @brief  图案填充属性
1045  * @endif
1046  */
1047 typedef struct {
1048     ext_vau_pattern_mode mode;    /*!< @if Eng Pattern attribution.
1049                                        @else   图案填充属性 @endif */
1050     td_u32 argb;                  /*!< @if Eng fill color.
1051                                        @else   填充颜色 @endif */
1052 } ext_vau_pattern_attr;
1053 
1054 /**
1055  * @if Eng
1056  * @brief  Layer information required for executing the vau task.
1057  * @else
1058  * @brief  执行vau任务需要的图层信息
1059  * @endif
1060  */
1061 typedef struct {
1062     td_u32 width;                        /*!< @if Eng surface Width,Unit: number of pixels.
1063                                               @else   surface宽度, 单位:像素数 @endif */
1064     td_u32 height;                       /*!< @if Eng surface height,Unit: number of pixels.
1065                                               @else   surface高度, 单位:像素数 @endif */
1066     td_u32 stride;                       /*!< @if Eng Buffer line spacing.
1067                                               @else   buffer行间距 @endif */
1068     td_u32 phy_addr;                     /*!< @if Eng Physical address of the surface.
1069                                               @else   surface物理地址 @endif */
1070     td_u32 clut_addr;                    /*!< @if Eng Color Lookup Table Address.
1071                                               @else   颜色查找表地址 @endif */
1072     td_uchar *vir_addr;                  /*!< @if Eng Surface virtual address.
1073                                               @else   surface虚拟地址 @endif */
1074     ext_gfx_fmt color_fmt;               /*!< @if Eng Color Formatting.
1075                                               @else   颜色格式 @endif */
1076     ext_gfx_argb_order argb_order;       /*!< @if Eng Argb color format component layout.
1077                                               @else   argb颜色格式分量排布 @endif */
1078     td_bool is_color_surface;            /*!< @if Eng Solid color filling.
1079                                               @else   是否纯色填充 @endif */
1080     td_u32 color;                        /*!< @if Eng Fill color corresponding to solid fill.
1081                                               @else   纯色填充对应的填充颜色 @endif */
1082     ext_gfx_compress_mode compress_mode; /*!< @if Eng Data Compression Type.
1083                                               @else   数据压缩类型 @endif */
1084     ext_vau_alpha_info alpha_info;       /*!< @if Eng Alpha Attribute.
1085                                               @else   alpha属性配置 @endif */
1086     ext_rect rect;                       /*!< @if Eng Overlay area of the source.
1087                                               @else   源的叠加区域 @endif */
1088     ext_rect out_rect;                   /*!< @if Eng Target region superimposed with this source.
1089                                               @else   与该源叠加的目标区域 @endif */
1090     ext_vau_matrix *matrix;              /*!< @if Eng Affine transformation matrix information.
1091                                               @else   仿射变换矩阵信息 @endif */
1092     ext_vau_pattern_attr *pattern;       /*!< @if Eng The pattern function is valid only when the matrix is not empty.
1093                                              (The ES is not used currently.).
1094                                               @else   pattern功能只有在matrix不为空的时候才有效(ES暂未使用) @endif */
1095     ext_vau_draw_attr *draw;             /*!< @if Eng The ES is not used currently.
1096                                               @else   ES暂未使用 @endif */
1097 } ext_vau_surface;
1098 
1099 /**
1100  * @if Eng
1101  * @brief  Layer information required for executing the vau task.
1102  * @else
1103  * @brief  执行vau任务需要的图层信息
1104  * @endif
1105  */
1106 typedef struct {
1107     td_u32 src_surface_cnt;       /*!< @if Eng Number of source surfaces.
1108                                        @else   源surface的个数 @endif */
1109     ext_vau_surface *src_surface; /*!< @if Eng Source surface.
1110                                        @else   源surface @endif */
1111     ext_vau_surface *dst_surface; /*!< @if Eng Target surface.
1112                                        @else   目标surface @endif */
1113     ext_vau_blit_opt *opt;        /*!< @if Eng Configuration attributes of overlay, rop, and colorkey operations.
1114                                        @else   叠加、rop、colorkey的操作配置属性 @endif */
1115 } ext_vau_surface_list;
1116 
1117 /**
1118  * @}
1119  */
1120 
1121 #ifdef __cplusplus
1122 #if __cplusplus
1123 }
1124 #endif
1125 #endif
1126 
1127 #endif /* SOC_VAU_TYPE_H */
1128