]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine_vg.h
4bb6772549ff3823a7738b1c09470e6685e785cc
[karo-tx-linux.git] / drivers / mxc / gpu-viv / hal / kernel / inc / gc_hal_engine_vg.h
1 /****************************************************************************
2 *
3 *    Copyright (C) 2005 - 2013 by Vivante Corp.
4 *
5 *    This program is free software; you can redistribute it and/or modify
6 *    it under the terms of the GNU General Public License as published by
7 *    the Free Software Foundation; either version 2 of the license, or
8 *    (at your option) any later version.
9 *
10 *    This program is distributed in the hope that it will be useful,
11 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 *    GNU General Public License for more details.
14 *
15 *    You should have received a copy of the GNU General Public License
16 *    along with this program; if not write to the Free Software
17 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *
19 *****************************************************************************/
20
21
22 #ifndef __gc_hal_engine_vg_h_
23 #define __gc_hal_engine_vg_h_
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 #include "gc_hal_types.h"
30
31 /******************************************************************************\
32 ******************************** VG Enumerations *******************************
33 \******************************************************************************/
34
35 /**
36 **  @ingroup gcoVG
37 **
38 **  @brief  Tiling mode for painting and imagig.
39 **
40 **  This enumeration defines the tiling modes supported by the HAL.  This is
41 **  in fact a one-to-one mapping of the OpenVG 1.1 tile modes.
42 */
43 typedef enum _gceTILE_MODE
44 {
45     gcvTILE_FILL,
46     gcvTILE_PAD,
47     gcvTILE_REPEAT,
48     gcvTILE_REFLECT
49 }
50 gceTILE_MODE;
51
52 /******************************************************************************/
53 /** @ingroup gcoVG
54 **
55 **  @brief  The different paint modes.
56 **
57 **  This enumeration lists the available paint modes.
58 */
59 typedef enum _gcePAINT_TYPE
60 {
61     /** Solid color. */
62     gcvPAINT_MODE_SOLID,
63
64     /** Linear gradient. */
65     gcvPAINT_MODE_LINEAR,
66
67     /** Radial gradient. */
68     gcvPAINT_MODE_RADIAL,
69
70     /** Pattern. */
71     gcvPAINT_MODE_PATTERN,
72
73     /** Mode count. */
74     gcvPAINT_MODE_COUNT
75 }
76 gcePAINT_TYPE;
77
78 /**
79 ** @ingroup gcoVG
80 **
81 **  @brief Types of path data supported by HAL.
82 **
83 **  This enumeration defines the types of path data supported by the HAL.
84 **  This is in fact a one-to-one mapping of the OpenVG 1.1 path types.
85 */
86 typedef enum _gcePATHTYPE
87 {
88     gcePATHTYPE_UNKNOWN = -1,
89     gcePATHTYPE_INT8,
90     gcePATHTYPE_INT16,
91     gcePATHTYPE_INT32,
92     gcePATHTYPE_FLOAT
93 }
94 gcePATHTYPE;
95
96 /**
97 ** @ingroup gcoVG
98 **
99 **  @brief Supported path segment commands.
100 **
101 **  This enumeration defines the path segment commands supported by the HAL.
102 */
103 typedef enum _gceVGCMD
104 {
105     gcvVGCMD_END,                        /*  0: GCCMD_TS_OPCODE_END           */
106     gcvVGCMD_CLOSE,                      /*  1: GCCMD_TS_OPCODE_CLOSE         */
107     gcvVGCMD_MOVE,                       /*  2: GCCMD_TS_OPCODE_MOVE          */
108     gcvVGCMD_MOVE_REL,                   /*  3: GCCMD_TS_OPCODE_MOVE_REL      */
109     gcvVGCMD_LINE,                       /*  4: GCCMD_TS_OPCODE_LINE          */
110     gcvVGCMD_LINE_REL,                   /*  5: GCCMD_TS_OPCODE_LINE_REL      */
111     gcvVGCMD_QUAD,                       /*  6: GCCMD_TS_OPCODE_QUADRATIC     */
112     gcvVGCMD_QUAD_REL,                   /*  7: GCCMD_TS_OPCODE_QUADRATIC_REL */
113     gcvVGCMD_CUBIC,                      /*  8: GCCMD_TS_OPCODE_CUBIC         */
114     gcvVGCMD_CUBIC_REL,                  /*  9: GCCMD_TS_OPCODE_CUBIC_REL     */
115     gcvVGCMD_BREAK,                      /* 10: GCCMD_TS_OPCODE_BREAK         */
116     gcvVGCMD_HLINE,                      /* 11: ******* R E S E R V E D *******/
117     gcvVGCMD_HLINE_REL,                  /* 12: ******* R E S E R V E D *******/
118     gcvVGCMD_VLINE,                      /* 13: ******* R E S E R V E D *******/
119     gcvVGCMD_VLINE_REL,                  /* 14: ******* R E S E R V E D *******/
120     gcvVGCMD_SQUAD,                      /* 15: ******* R E S E R V E D *******/
121     gcvVGCMD_SQUAD_REL,                  /* 16: ******* R E S E R V E D *******/
122     gcvVGCMD_SCUBIC,                     /* 17: ******* R E S E R V E D *******/
123     gcvVGCMD_SCUBIC_REL,                 /* 18: ******* R E S E R V E D *******/
124     gcvVGCMD_SCCWARC,                    /* 19: ******* R E S E R V E D *******/
125     gcvVGCMD_SCCWARC_REL,                /* 20: ******* R E S E R V E D *******/
126     gcvVGCMD_SCWARC,                     /* 21: ******* R E S E R V E D *******/
127     gcvVGCMD_SCWARC_REL,                 /* 22: ******* R E S E R V E D *******/
128     gcvVGCMD_LCCWARC,                    /* 23: ******* R E S E R V E D *******/
129     gcvVGCMD_LCCWARC_REL,                /* 24: ******* R E S E R V E D *******/
130     gcvVGCMD_LCWARC,                     /* 25: ******* R E S E R V E D *******/
131     gcvVGCMD_LCWARC_REL,                 /* 26: ******* R E S E R V E D *******/
132
133     /* The width of the command recognized by the hardware on bits. */
134     gcvVGCMD_WIDTH = 5,
135
136     /* Hardware command mask. */
137     gcvVGCMD_MASK = (1 << gcvVGCMD_WIDTH) - 1,
138
139     /* Command modifiers. */
140     gcvVGCMD_H_MOD   = 1 << gcvVGCMD_WIDTH,  /* =  32 */
141     gcvVGCMD_V_MOD   = 2 << gcvVGCMD_WIDTH,  /* =  64 */
142     gcvVGCMD_S_MOD   = 3 << gcvVGCMD_WIDTH,  /* =  96 */
143     gcvVGCMD_ARC_MOD = 4 << gcvVGCMD_WIDTH,  /* = 128 */
144
145     /* Emulated LINE commands. */
146     gcvVGCMD_HLINE_EMUL     = gcvVGCMD_H_MOD | gcvVGCMD_LINE,        /* =  36 */
147     gcvVGCMD_HLINE_EMUL_REL = gcvVGCMD_H_MOD | gcvVGCMD_LINE_REL,    /* =  37 */
148     gcvVGCMD_VLINE_EMUL     = gcvVGCMD_V_MOD | gcvVGCMD_LINE,        /* =  68 */
149     gcvVGCMD_VLINE_EMUL_REL = gcvVGCMD_V_MOD | gcvVGCMD_LINE_REL,    /* =  69 */
150
151     /* Emulated SMOOTH commands. */
152     gcvVGCMD_SQUAD_EMUL      = gcvVGCMD_S_MOD | gcvVGCMD_QUAD,       /* = 102 */
153     gcvVGCMD_SQUAD_EMUL_REL  = gcvVGCMD_S_MOD | gcvVGCMD_QUAD_REL,   /* = 103 */
154     gcvVGCMD_SCUBIC_EMUL     = gcvVGCMD_S_MOD | gcvVGCMD_CUBIC,      /* = 104 */
155     gcvVGCMD_SCUBIC_EMUL_REL = gcvVGCMD_S_MOD | gcvVGCMD_CUBIC_REL,  /* = 105 */
156
157     /* Emulation ARC commands. */
158     gcvVGCMD_ARC_LINE     = gcvVGCMD_ARC_MOD | gcvVGCMD_LINE,        /* = 132 */
159     gcvVGCMD_ARC_LINE_REL = gcvVGCMD_ARC_MOD | gcvVGCMD_LINE_REL,    /* = 133 */
160     gcvVGCMD_ARC_QUAD     = gcvVGCMD_ARC_MOD | gcvVGCMD_QUAD,        /* = 134 */
161     gcvVGCMD_ARC_QUAD_REL = gcvVGCMD_ARC_MOD | gcvVGCMD_QUAD_REL     /* = 135 */
162 }
163 gceVGCMD;
164 typedef enum _gceVGCMD * gceVGCMD_PTR;
165
166 /**
167 **  @ingroup gcoVG
168 **
169 **  @brief  Blending modes supported by the HAL.
170 **
171 **  This enumeration defines the blending modes supported by the HAL.  This is
172 **  in fact a one-to-one mapping of the OpenVG 1.1 blending modes.
173 */
174 typedef enum _gceVG_BLEND
175 {
176     gcvVG_BLEND_SRC,
177     gcvVG_BLEND_SRC_OVER,
178     gcvVG_BLEND_DST_OVER,
179     gcvVG_BLEND_SRC_IN,
180     gcvVG_BLEND_DST_IN,
181     gcvVG_BLEND_MULTIPLY,
182     gcvVG_BLEND_SCREEN,
183     gcvVG_BLEND_DARKEN,
184     gcvVG_BLEND_LIGHTEN,
185     gcvVG_BLEND_ADDITIVE,
186     gcvVG_BLEND_SUBTRACT,
187     gcvVG_BLEND_FILTER
188 }
189 gceVG_BLEND;
190
191 /**
192 **  @ingroup gcoVG
193 **
194 **  @brief  Image modes supported by the HAL.
195 **
196 **  This enumeration defines the image modes supported by the HAL.  This is
197 **  in fact a one-to-one mapping of the OpenVG 1.1 image modes with the addition
198 **  of NO IMAGE.
199 */
200 typedef enum _gceVG_IMAGE
201 {
202     gcvVG_IMAGE_NONE,
203     gcvVG_IMAGE_NORMAL,
204     gcvVG_IMAGE_MULTIPLY,
205     gcvVG_IMAGE_STENCIL,
206     gcvVG_IMAGE_FILTER
207 }
208 gceVG_IMAGE;
209
210 /**
211 **  @ingroup gcoVG
212 **
213 **  @brief  Filter mode patterns and imaging.
214 **
215 **  This enumeration defines the filter modes supported by the HAL.
216 */
217 typedef enum _gceIMAGE_FILTER
218 {
219     gcvFILTER_POINT,
220     gcvFILTER_LINEAR,
221     gcvFILTER_BI_LINEAR
222 }
223 gceIMAGE_FILTER;
224
225 /**
226 **  @ingroup gcoVG
227 **
228 **  @brief  Primitive modes supported by the HAL.
229 **
230 **  This enumeration defines the primitive modes supported by the HAL.
231 */
232 typedef enum _gceVG_PRIMITIVE
233 {
234     gcvVG_SCANLINE,
235     gcvVG_RECTANGLE,
236     gcvVG_TESSELLATED,
237     gcvVG_TESSELLATED_TILED
238 }
239 gceVG_PRIMITIVE;
240
241 /**
242 **  @ingroup gcoVG
243 **
244 **  @brief  Rendering quality modes supported by the HAL.
245 **
246 **  This enumeration defines the rendering quality modes supported by the HAL.
247 */
248 typedef enum _gceRENDER_QUALITY
249 {
250     gcvVG_NONANTIALIASED,
251     gcvVG_2X2_MSAA,
252     gcvVG_2X4_MSAA,
253     gcvVG_4X4_MSAA
254 }
255 gceRENDER_QUALITY;
256
257 /**
258 **  @ingroup gcoVG
259 **
260 **  @brief  Fill rules supported by the HAL.
261 **
262 **  This enumeration defines the fill rules supported by the HAL.
263 */
264 typedef enum _gceFILL_RULE
265 {
266     gcvVG_EVEN_ODD,
267     gcvVG_NON_ZERO
268 }
269 gceFILL_RULE;
270
271 /**
272 **  @ingroup gcoVG
273 **
274 **  @brief  Cap styles supported by the HAL.
275 **
276 **  This enumeration defines the cap styles supported by the HAL.
277 */
278 typedef enum _gceCAP_STYLE
279 {
280     gcvCAP_BUTT,
281     gcvCAP_ROUND,
282     gcvCAP_SQUARE
283 }
284 gceCAP_STYLE;
285
286 /**
287 **  @ingroup gcoVG
288 **
289 **  @brief  Join styles supported by the HAL.
290 **
291 **  This enumeration defines the join styles supported by the HAL.
292 */
293 typedef enum _gceJOIN_STYLE
294 {
295     gcvJOIN_MITER,
296     gcvJOIN_ROUND,
297     gcvJOIN_BEVEL
298 }
299 gceJOIN_STYLE;
300
301 /**
302 **  @ingroup gcoVG
303 **
304 **  @brief  Channel mask values.
305 **
306 **  This enumeration defines the values for channel mask used in image
307 **  filtering.
308 */
309
310 /* Base values for channel mask definitions. */
311 #define gcvCHANNEL_X    (0)
312 #define gcvCHANNEL_R    (1 << 0)
313 #define gcvCHANNEL_G    (1 << 1)
314 #define gcvCHANNEL_B    (1 << 2)
315 #define gcvCHANNEL_A    (1 << 3)
316
317 typedef enum _gceCHANNEL
318 {
319     gcvCHANNEL_XXXX = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X),
320     gcvCHANNEL_XXXA = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_A),
321     gcvCHANNEL_XXBX = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_X),
322     gcvCHANNEL_XXBA = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_A),
323
324     gcvCHANNEL_XGXX = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_X),
325     gcvCHANNEL_XGXA = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_A),
326     gcvCHANNEL_XGBX = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_X),
327     gcvCHANNEL_XGBA = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_A),
328
329     gcvCHANNEL_RXXX = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X),
330     gcvCHANNEL_RXXA = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_A),
331     gcvCHANNEL_RXBX = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_X),
332     gcvCHANNEL_RXBA = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_A),
333
334     gcvCHANNEL_RGXX = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_X),
335     gcvCHANNEL_RGXA = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_A),
336     gcvCHANNEL_RGBX = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_X),
337     gcvCHANNEL_RGBA = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_A),
338 }
339 gceCHANNEL;
340
341 /******************************************************************************\
342 ******************************** VG Structures *******************************
343 \******************************************************************************/
344
345 /**
346 **  @ingroup    gcoVG
347 **
348 **  @brief      Definition of the color ramp used by the gradient paints.
349 **
350 **  The gcsCOLOR_RAMP structure defines the layout of one single color inside
351 **  a color ramp which is used by gradient paints.
352 */
353 typedef struct _gcsCOLOR_RAMP
354 {
355     /** Value for the color stop. */
356     gctFLOAT        stop;
357
358     /** Red color channel value for the color stop. */
359     gctFLOAT        red;
360
361     /** Green color channel value for the color stop. */
362     gctFLOAT        green;
363
364     /** Blue color channel value for the color stop. */
365     gctFLOAT        blue;
366
367     /** Alpha color channel value for the color stop. */
368     gctFLOAT        alpha;
369 }
370 gcsCOLOR_RAMP, * gcsCOLOR_RAMP_PTR;
371
372 /**
373 **  @ingroup    gcoVG
374 **
375 **  @brief      Definition of the color ramp used by the gradient paints in fixed form.
376 **
377 **  The gcsCOLOR_RAMP structure defines the layout of one single color inside
378 **  a color ramp which is used by gradient paints.
379 */
380 typedef struct _gcsFIXED_COLOR_RAMP
381 {
382     /** Value for the color stop. */
383     gctFIXED_POINT      stop;
384
385     /** Red color channel value for the color stop. */
386     gctFIXED_POINT      red;
387
388     /** Green color channel value for the color stop. */
389     gctFIXED_POINT      green;
390
391     /** Blue color channel value for the color stop. */
392     gctFIXED_POINT      blue;
393
394     /** Alpha color channel value for the color stop. */
395     gctFIXED_POINT      alpha;
396 }
397 gcsFIXED_COLOR_RAMP, * gcsFIXED_COLOR_RAMP_PTR;
398
399
400 /**
401 **  @ingroup gcoVG
402 **
403 **  @brief  Rectangle structure used by the gcoVG object.
404 **
405 **  This structure defines the layout of a rectangle.  Make sure width and
406 **  height are larger than 0.
407 */
408 typedef struct _gcsVG_RECT * gcsVG_RECT_PTR;
409 typedef struct _gcsVG_RECT
410 {
411     /** Left location of the rectangle. */
412     gctINT      x;
413
414     /** Top location of the rectangle. */
415     gctINT      y;
416
417     /** Width of the rectangle. */
418     gctINT      width;
419
420     /** Height of the rectangle. */
421     gctINT      height;
422 }
423 gcsVG_RECT;
424
425 /**
426 **  @ingroup    gcoVG
427 **
428 **  @brief      Path command buffer attribute structure.
429 **
430 **  The gcsPATH_BUFFER_INFO structure contains the specifics about
431 **  the layout of the path data command buffer.
432 */
433 typedef struct _gcsPATH_BUFFER_INFO * gcsPATH_BUFFER_INFO_PTR;
434 typedef struct _gcsPATH_BUFFER_INFO
435 {
436     gctUINT     reservedForHead;
437     gctUINT     reservedForTail;
438 }
439 gcsPATH_BUFFER_INFO;
440
441 /**
442 **  @ingroup    gcoVG
443 **
444 **  @brief      Definition of the path data container structure.
445 **
446 **  The gcsPATH structure defines the layout of the path data container.
447 */
448 typedef struct _gcsPATH_DATA * gcsPATH_DATA_PTR;
449 typedef struct _gcsPATH_DATA
450 {
451     /* Data container in command buffer format. */
452     gcsCMDBUFFER    data;
453
454     /* Path data type. */
455     gcePATHTYPE     dataType;
456 }
457 gcsPATH_DATA;
458
459
460 /******************************************************************************\
461 ********************************* gcoHAL Object ********************************
462 \******************************************************************************/
463
464 /* Query path data storage attributes. */
465 gceSTATUS
466 gcoHAL_QueryPathStorage(
467     IN gcoHAL Hal,
468     OUT gcsPATH_BUFFER_INFO_PTR Information
469     );
470
471 /* Associate a completion signal with the command buffer. */
472 gceSTATUS
473 gcoHAL_AssociateCompletion(
474     IN gcoHAL Hal,
475     IN gcsPATH_DATA_PTR PathData
476     );
477
478 /* Release the current command buffer completion signal. */
479 gceSTATUS
480 gcoHAL_DeassociateCompletion(
481     IN gcoHAL Hal,
482     IN gcsPATH_DATA_PTR PathData
483     );
484
485 /* Verify whether the command buffer is still in use. */
486 gceSTATUS
487 gcoHAL_CheckCompletion(
488     IN gcoHAL Hal,
489     IN gcsPATH_DATA_PTR PathData
490     );
491
492 /* Wait until the command buffer is no longer in use. */
493 gceSTATUS
494 gcoHAL_WaitCompletion(
495     IN gcoHAL Hal,
496     IN gcsPATH_DATA_PTR PathData
497     );
498
499 /* Flush the pixel cache. */
500 gceSTATUS
501 gcoHAL_Flush(
502     IN gcoHAL Hal
503     );
504
505 /* Split a harwdare address into pool and offset. */
506 gceSTATUS
507 gcoHAL_SplitAddress(
508     IN gcoHAL Hal,
509     IN gctUINT32 Address,
510     OUT gcePOOL * Pool,
511     OUT gctUINT32 * Offset
512     );
513
514 /* Combine pool and offset into a harwdare address. */
515 gceSTATUS
516 gcoHAL_CombineAddress(
517     IN gcoHAL Hal,
518     IN gcePOOL Pool,
519     IN gctUINT32 Offset,
520     OUT gctUINT32 * Address
521     );
522
523 /* Schedule to free linear video memory allocated. */
524 gceSTATUS
525 gcoHAL_ScheduleVideoMemory(
526     IN gcoHAL Hal,
527     IN gctUINT64 Node
528     );
529
530 /* Free linear video memory allocated with gcoHAL_AllocateLinearVideoMemory. */
531 gceSTATUS
532 gcoHAL_FreeVideoMemory(
533     IN gcoHAL Hal,
534     IN gctUINT64 Node
535     );
536
537 /* Query command buffer attributes. */
538 gceSTATUS
539 gcoHAL_QueryCommandBuffer(
540     IN gcoHAL Hal,
541     OUT gcsCOMMAND_BUFFER_INFO_PTR Information
542     );
543 /* Allocate and lock linear video memory. */
544 gceSTATUS
545 gcoHAL_AllocateLinearVideoMemory(
546     IN gcoHAL Hal,
547     IN gctUINT Size,
548     IN gctUINT Alignment,
549     IN gcePOOL Pool,
550     OUT gctUINT64 * Node,
551     OUT gctUINT32 * Address,
552     OUT gctPOINTER * Memory
553     );
554
555 /* Align the specified size accordingly to the hardware requirements. */
556 gceSTATUS
557 gcoHAL_GetAlignedSurfaceSize(
558     IN gcoHAL Hal,
559     IN gceSURF_TYPE Type,
560     IN OUT gctUINT32_PTR Width,
561     IN OUT gctUINT32_PTR Height
562     );
563
564 gceSTATUS
565 gcoHAL_ReserveTask(
566     IN gcoHAL Hal,
567     IN gceBLOCK Block,
568     IN gctUINT TaskCount,
569     IN gctSIZE_T Bytes,
570     OUT gctPOINTER * Memory
571     );
572 /******************************************************************************\
573 ********************************** gcoVG Object ********************************
574 \******************************************************************************/
575
576 /** @defgroup gcoVG gcoVG
577 **
578 **  The gcoVG object abstracts the VG hardware pipe.
579 */
580
581 gctBOOL
582 gcoVG_IsMaskSupported(
583     IN gceSURF_FORMAT Format
584     );
585
586 gctBOOL
587 gcoVG_IsTargetSupported(
588     IN gceSURF_FORMAT Format
589     );
590
591 gctBOOL
592 gcoVG_IsImageSupported(
593     IN gceSURF_FORMAT Format
594     );
595
596 gctUINT8 gcoVG_PackColorComponent(
597     gctFLOAT Value
598     );
599
600 gceSTATUS
601 gcoVG_Construct(
602     IN gcoHAL Hal,
603     OUT gcoVG * Vg
604     );
605
606 gceSTATUS
607 gcoVG_Destroy(
608     IN gcoVG Vg
609     );
610
611 gceSTATUS
612 gcoVG_SetTarget(
613     IN gcoVG Vg,
614     IN gcoSURF Target
615     );
616
617 gceSTATUS
618 gcoVG_UnsetTarget(
619     IN gcoVG Vg,
620     IN gcoSURF Surface
621     );
622
623 gceSTATUS
624 gcoVG_SetUserToSurface(
625     IN gcoVG Vg,
626     IN gctFLOAT UserToSurface[9]
627     );
628
629 gceSTATUS
630 gcoVG_SetSurfaceToImage(
631     IN gcoVG Vg,
632     IN gctFLOAT SurfaceToImage[9]
633     );
634
635 gceSTATUS
636 gcoVG_EnableMask(
637     IN gcoVG Vg,
638     IN gctBOOL Enable
639     );
640
641 gceSTATUS
642 gcoVG_SetMask(
643     IN gcoVG Vg,
644     IN gcoSURF Mask
645     );
646
647 gceSTATUS
648 gcoVG_UnsetMask(
649     IN gcoVG Vg,
650     IN gcoSURF Surface
651     );
652
653 gceSTATUS
654 gcoVG_FlushMask(
655     IN gcoVG Vg
656     );
657
658 gceSTATUS
659 gcoVG_EnableScissor(
660     IN gcoVG Vg,
661     IN gctBOOL Enable
662     );
663
664 gceSTATUS
665 gcoVG_SetScissor(
666     IN gcoVG Vg,
667     IN gctSIZE_T RectangleCount,
668     IN gcsVG_RECT_PTR Rectangles
669     );
670
671 gceSTATUS
672 gcoVG_EnableColorTransform(
673     IN gcoVG Vg,
674     IN gctBOOL Enable
675     );
676
677 gceSTATUS
678 gcoVG_SetColorTransform(
679     IN gcoVG Vg,
680     IN gctFLOAT ColorTransform[8]
681     );
682
683 gceSTATUS
684 gcoVG_SetTileFillColor(
685     IN gcoVG Vg,
686     IN gctFLOAT Red,
687     IN gctFLOAT Green,
688     IN gctFLOAT Blue,
689     IN gctFLOAT Alpha
690     );
691
692 gceSTATUS
693 gcoVG_SetSolidPaint(
694     IN gcoVG Vg,
695     IN gctUINT8 Red,
696     IN gctUINT8 Green,
697     IN gctUINT8 Blue,
698     IN gctUINT8 Alpha
699     );
700
701 gceSTATUS
702 gcoVG_SetLinearPaint(
703     IN gcoVG Vg,
704     IN gctFLOAT Constant,
705     IN gctFLOAT StepX,
706     IN gctFLOAT StepY
707     );
708
709 gceSTATUS
710 gcoVG_SetRadialPaint(
711     IN gcoVG Vg,
712     IN gctFLOAT LinConstant,
713     IN gctFLOAT LinStepX,
714     IN gctFLOAT LinStepY,
715     IN gctFLOAT RadConstant,
716     IN gctFLOAT RadStepX,
717     IN gctFLOAT RadStepY,
718     IN gctFLOAT RadStepXX,
719     IN gctFLOAT RadStepYY,
720     IN gctFLOAT RadStepXY
721     );
722
723 gceSTATUS
724 gcoVG_SetPatternPaint(
725     IN gcoVG Vg,
726     IN gctFLOAT UConstant,
727     IN gctFLOAT UStepX,
728     IN gctFLOAT UStepY,
729     IN gctFLOAT VConstant,
730     IN gctFLOAT VStepX,
731     IN gctFLOAT VStepY,
732     IN gctBOOL Linear
733     );
734
735 gceSTATUS
736 gcoVG_SetColorRamp(
737     IN gcoVG Vg,
738     IN gcoSURF ColorRamp,
739     IN gceTILE_MODE ColorRampSpreadMode
740     );
741
742 gceSTATUS
743 gcoVG_SetPattern(
744     IN gcoVG Vg,
745     IN gcoSURF Pattern,
746     IN gceTILE_MODE TileMode,
747     IN gceIMAGE_FILTER Filter
748     );
749
750 gceSTATUS
751 gcoVG_SetImageMode(
752     IN gcoVG Vg,
753     IN gceVG_IMAGE Mode
754     );
755
756 gceSTATUS
757 gcoVG_SetBlendMode(
758     IN gcoVG Vg,
759     IN gceVG_BLEND Mode
760     );
761
762 gceSTATUS
763 gcoVG_SetRenderingQuality(
764     IN gcoVG Vg,
765     IN gceRENDER_QUALITY Quality
766     );
767
768 gceSTATUS
769 gcoVG_SetFillRule(
770     IN gcoVG Vg,
771     IN gceFILL_RULE FillRule
772     );
773
774 gceSTATUS
775 gcoVG_FinalizePath(
776     IN gcoVG Vg,
777     IN gcsPATH_DATA_PTR PathData
778     );
779
780 gceSTATUS
781 gcoVG_Clear(
782     IN gcoVG Vg,
783     IN gctINT X,
784     IN gctINT Y,
785     IN gctINT Width,
786     IN gctINT Height
787     );
788
789 gceSTATUS
790 gcoVG_DrawPath(
791     IN gcoVG Vg,
792     IN gcsPATH_DATA_PTR PathData,
793     IN gctFLOAT Scale,
794     IN gctFLOAT Bias,
795     IN gctBOOL SoftwareTesselation
796     );
797
798 gceSTATUS
799 gcoVG_DrawImage(
800     IN gcoVG Vg,
801     IN gcoSURF Source,
802     IN gcsPOINT_PTR SourceOrigin,
803     IN gcsPOINT_PTR TargetOrigin,
804     IN gcsSIZE_PTR SourceSize,
805     IN gctINT SourceX,
806     IN gctINT SourceY,
807     IN gctINT TargetX,
808     IN gctINT TargetY,
809     IN gctINT Width,
810     IN gctINT Height,
811     IN gctBOOL Mask
812     );
813
814 gceSTATUS
815 gcoVG_TesselateImage(
816     IN gcoVG Vg,
817     IN gcoSURF Image,
818     IN gcsVG_RECT_PTR Rectangle,
819     IN gceIMAGE_FILTER Filter,
820     IN gctBOOL Mask,
821     IN gctBOOL SoftwareTesselation
822     );
823
824 gceSTATUS
825 gcoVG_Blit(
826     IN gcoVG Vg,
827     IN gcoSURF Source,
828     IN gcoSURF Target,
829     IN gcsVG_RECT_PTR SrcRect,
830     IN gcsVG_RECT_PTR TrgRect,
831     IN gceIMAGE_FILTER Filter,
832     IN gceVG_BLEND Mode
833     );
834
835 gceSTATUS
836 gcoVG_ColorMatrix(
837     IN gcoVG Vg,
838     IN gcoSURF Source,
839     IN gcoSURF Target,
840     IN const gctFLOAT * Matrix,
841     IN gceCHANNEL ColorChannels,
842     IN gctBOOL FilterLinear,
843     IN gctBOOL FilterPremultiplied,
844     IN gcsPOINT_PTR SourceOrigin,
845     IN gcsPOINT_PTR TargetOrigin,
846     IN gctINT Width,
847     IN gctINT Height
848     );
849
850 gceSTATUS
851 gcoVG_SeparableConvolve(
852     IN gcoVG Vg,
853     IN gcoSURF Source,
854     IN gcoSURF Target,
855     IN gctINT KernelWidth,
856     IN gctINT KernelHeight,
857     IN gctINT ShiftX,
858     IN gctINT ShiftY,
859     IN const gctINT16 * KernelX,
860     IN const gctINT16 * KernelY,
861     IN gctFLOAT Scale,
862     IN gctFLOAT Bias,
863     IN gceTILE_MODE TilingMode,
864     IN gctFLOAT_PTR FillColor,
865     IN gceCHANNEL ColorChannels,
866     IN gctBOOL FilterLinear,
867     IN gctBOOL FilterPremultiplied,
868     IN gcsPOINT_PTR SourceOrigin,
869     IN gcsPOINT_PTR TargetOrigin,
870     IN gcsSIZE_PTR SourceSize,
871     IN gctINT Width,
872     IN gctINT Height
873     );
874
875 gceSTATUS
876 gcoVG_GaussianBlur(
877     IN gcoVG Vg,
878     IN gcoSURF Source,
879     IN gcoSURF Target,
880     IN gctFLOAT StdDeviationX,
881     IN gctFLOAT StdDeviationY,
882     IN gceTILE_MODE TilingMode,
883     IN gctFLOAT_PTR FillColor,
884     IN gceCHANNEL ColorChannels,
885     IN gctBOOL FilterLinear,
886     IN gctBOOL FilterPremultiplied,
887     IN gcsPOINT_PTR SourceOrigin,
888     IN gcsPOINT_PTR TargetOrigin,
889     IN gcsSIZE_PTR SourceSize,
890     IN gctINT Width,
891     IN gctINT Height
892     );
893
894 gceSTATUS
895 gcoVG_EnableDither(
896     IN gcoVG Vg,
897     IN gctBOOL Enable
898     );
899
900 #ifdef __cplusplus
901 }
902 #endif
903
904 #endif  /* __gc_hal_vg_h_ */