]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h
gpu: vivante: Update driver from Freescale 3.10.53-1.1-ga BSP
[karo-tx-linux.git] / drivers / mxc / gpu-viv / hal / kernel / inc / gc_hal_raster.h
1 /****************************************************************************
2 *
3 *    Copyright (C) 2005 - 2014 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_raster_h_
23 #define __gc_hal_raster_h_
24
25 #include "gc_hal_enum.h"
26 #include "gc_hal_types.h"
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 /******************************************************************************\
33 ****************************** Object Declarations *****************************
34 \******************************************************************************/
35
36 typedef struct _gcoBRUSH *                gcoBRUSH;
37 typedef struct _gcoBRUSH_CACHE *          gcoBRUSH_CACHE;
38
39 /******************************************************************************\
40 ******************************** gcoBRUSH Object *******************************
41 \******************************************************************************/
42
43 /* Create a new solid color gcoBRUSH object. */
44 gceSTATUS
45 gcoBRUSH_ConstructSingleColor(
46     IN gcoHAL Hal,
47     IN gctUINT32 ColorConvert,
48     IN gctUINT32 Color,
49     IN gctUINT64 Mask,
50     gcoBRUSH * Brush
51     );
52
53 /* Create a new monochrome gcoBRUSH object. */
54 gceSTATUS
55 gcoBRUSH_ConstructMonochrome(
56     IN gcoHAL Hal,
57     IN gctUINT32 OriginX,
58     IN gctUINT32 OriginY,
59     IN gctUINT32 ColorConvert,
60     IN gctUINT32 FgColor,
61     IN gctUINT32 BgColor,
62     IN gctUINT64 Bits,
63     IN gctUINT64 Mask,
64     gcoBRUSH * Brush
65     );
66
67 /* Create a color gcoBRUSH object. */
68 gceSTATUS
69 gcoBRUSH_ConstructColor(
70     IN gcoHAL Hal,
71     IN gctUINT32 OriginX,
72     IN gctUINT32 OriginY,
73     IN gctPOINTER Address,
74     IN gceSURF_FORMAT Format,
75     IN gctUINT64 Mask,
76     gcoBRUSH * Brush
77     );
78
79 /* Destroy an gcoBRUSH object. */
80 gceSTATUS
81 gcoBRUSH_Destroy(
82     IN gcoBRUSH Brush
83     );
84
85 /******************************************************************************\
86 ******************************** gcoSURF Object *******************************
87 \******************************************************************************/
88
89 /* Set cipping rectangle. */
90 gceSTATUS
91 gcoSURF_SetClipping(
92     IN gcoSURF Surface
93     );
94
95 /* Clear one or more rectangular areas. */
96 gceSTATUS
97 gcoSURF_Clear2D(
98     IN gcoSURF DestSurface,
99     IN gctUINT32 RectCount,
100     IN gcsRECT_PTR DestRect,
101     IN gctUINT32 LoColor,
102     IN gctUINT32 HiColor
103     );
104
105 /* Draw one or more Bresenham lines. */
106 gceSTATUS
107 gcoSURF_Line(
108     IN gcoSURF Surface,
109     IN gctUINT32 LineCount,
110     IN gcsRECT_PTR Position,
111     IN gcoBRUSH Brush,
112     IN gctUINT8 FgRop,
113     IN gctUINT8 BgRop
114     );
115
116 /* Generic rectangular blit. */
117 gceSTATUS
118 gcoSURF_Blit(
119     IN OPTIONAL gcoSURF SrcSurface,
120     IN gcoSURF DestSurface,
121     IN gctUINT32 RectCount,
122     IN OPTIONAL gcsRECT_PTR SrcRect,
123     IN gcsRECT_PTR DestRect,
124     IN OPTIONAL gcoBRUSH Brush,
125     IN gctUINT8 FgRop,
126     IN gctUINT8 BgRop,
127     IN OPTIONAL gceSURF_TRANSPARENCY Transparency,
128     IN OPTIONAL gctUINT32 TransparencyColor,
129     IN OPTIONAL gctPOINTER Mask,
130     IN OPTIONAL gceSURF_MONOPACK MaskPack
131     );
132
133 /* Monochrome blit. */
134 gceSTATUS
135 gcoSURF_MonoBlit(
136     IN gcoSURF DestSurface,
137     IN gctPOINTER Source,
138     IN gceSURF_MONOPACK SourcePack,
139     IN gcsPOINT_PTR SourceSize,
140     IN gcsPOINT_PTR SourceOrigin,
141     IN gcsRECT_PTR DestRect,
142     IN OPTIONAL gcoBRUSH Brush,
143     IN gctUINT8 FgRop,
144     IN gctUINT8 BgRop,
145     IN gctBOOL ColorConvert,
146     IN gctUINT8 MonoTransparency,
147     IN gceSURF_TRANSPARENCY Transparency,
148     IN gctUINT32 FgColor,
149     IN gctUINT32 BgColor
150     );
151
152 /* Filter blit. */
153 gceSTATUS
154 gcoSURF_FilterBlit(
155     IN gcoSURF SrcSurface,
156     IN gcoSURF DestSurface,
157     IN gcsRECT_PTR SrcRect,
158     IN gcsRECT_PTR DestRect,
159     IN gcsRECT_PTR DestSubRect
160     );
161
162 /* Enable alpha blending engine in the hardware and disengage the ROP engine. */
163 gceSTATUS
164 gcoSURF_EnableAlphaBlend(
165     IN gcoSURF Surface,
166     IN gctUINT8 SrcGlobalAlphaValue,
167     IN gctUINT8 DstGlobalAlphaValue,
168     IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode,
169     IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode,
170     IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode,
171     IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode,
172     IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode,
173     IN gceSURF_BLEND_FACTOR_MODE DstFactorMode,
174     IN gceSURF_PIXEL_COLOR_MODE SrcColorMode,
175     IN gceSURF_PIXEL_COLOR_MODE DstColorMode
176     );
177
178 /* Disable alpha blending engine in the hardware and engage the ROP engine. */
179 gceSTATUS
180 gcoSURF_DisableAlphaBlend(
181     IN gcoSURF Surface
182     );
183
184 /* Copy a rectangular area with format conversion. */
185 gceSTATUS
186 gcoSURF_CopyPixels(
187     IN gcoSURF Source,
188     IN gcoSURF Target,
189     IN gctINT SourceX,
190     IN gctINT SourceY,
191     IN gctINT TargetX,
192     IN gctINT TargetY,
193     IN gctINT Width,
194     IN gctINT Height
195     );
196
197 /* Read surface pixel. */
198 gceSTATUS
199 gcoSURF_ReadPixel(
200     IN gcoSURF Surface,
201     IN gctPOINTER Memory,
202     IN gctINT X,
203     IN gctINT Y,
204     IN gceSURF_FORMAT Format,
205     OUT gctPOINTER PixelValue
206     );
207
208 /* Write surface pixel. */
209 gceSTATUS
210 gcoSURF_WritePixel(
211     IN gcoSURF Surface,
212     IN gctPOINTER Memory,
213     IN gctINT X,
214     IN gctINT Y,
215     IN gceSURF_FORMAT Format,
216     IN gctPOINTER PixelValue
217     );
218
219 gceSTATUS
220 gcoSURF_SetDither(
221     IN gcoSURF Surface,
222     IN gctBOOL Dither
223     );
224
225 gceSTATUS
226 gcoSURF_Set2DSource(
227     gcoSURF Surface,
228     gceSURF_ROTATION Rotation
229     );
230
231 gceSTATUS
232 gcoSURF_Set2DTarget(
233     gcoSURF Surface,
234     gceSURF_ROTATION Rotation
235     );
236
237 /******************************************************************************\
238 ********************************** gco2D Object *********************************
239 \******************************************************************************/
240
241 /* Construct a new gco2D object. */
242 gceSTATUS
243 gco2D_Construct(
244     IN gcoHAL Hal,
245     OUT gco2D * Hardware
246     );
247
248 /* Destroy an gco2D object. */
249 gceSTATUS
250 gco2D_Destroy(
251     IN gco2D Hardware
252     );
253
254 /* Sets the maximum number of brushes in the brush cache. */
255 gceSTATUS
256 gco2D_SetBrushLimit(
257     IN gco2D Hardware,
258     IN gctUINT MaxCount
259     );
260
261 /* Flush the brush. */
262 gceSTATUS
263 gco2D_FlushBrush(
264     IN gco2D Engine,
265     IN gcoBRUSH Brush,
266     IN gceSURF_FORMAT Format
267     );
268
269 /* Program the specified solid color brush. */
270 gceSTATUS
271 gco2D_LoadSolidBrush(
272     IN gco2D Engine,
273     IN gceSURF_FORMAT Format,
274     IN gctUINT32 ColorConvert,
275     IN gctUINT32 Color,
276     IN gctUINT64 Mask
277     );
278
279 gceSTATUS
280 gco2D_LoadMonochromeBrush(
281     IN gco2D Engine,
282     IN gctUINT32 OriginX,
283     IN gctUINT32 OriginY,
284     IN gctUINT32 ColorConvert,
285     IN gctUINT32 FgColor,
286     IN gctUINT32 BgColor,
287     IN gctUINT64 Bits,
288     IN gctUINT64 Mask
289     );
290
291 gceSTATUS
292 gco2D_LoadColorBrush(
293     IN gco2D Engine,
294     IN gctUINT32 OriginX,
295     IN gctUINT32 OriginY,
296     IN gctUINT32 Address,
297     IN gceSURF_FORMAT Format,
298     IN gctUINT64 Mask
299     );
300
301 /* Configure monochrome source. */
302 gceSTATUS
303 gco2D_SetMonochromeSource(
304     IN gco2D Engine,
305     IN gctBOOL ColorConvert,
306     IN gctUINT8 MonoTransparency,
307     IN gceSURF_MONOPACK DataPack,
308     IN gctBOOL CoordRelative,
309     IN gceSURF_TRANSPARENCY Transparency,
310     IN gctUINT32 FgColor,
311     IN gctUINT32 BgColor
312     );
313
314 /* Configure color source. */
315 gceSTATUS
316 gco2D_SetColorSource(
317     IN gco2D Engine,
318     IN gctUINT32 Address,
319     IN gctUINT32 Stride,
320     IN gceSURF_FORMAT Format,
321     IN gceSURF_ROTATION Rotation,
322     IN gctUINT32 SurfaceWidth,
323     IN gctBOOL CoordRelative,
324     IN gceSURF_TRANSPARENCY Transparency,
325     IN gctUINT32 TransparencyColor
326     );
327
328 /* Configure color source extension for full rotation. */
329 gceSTATUS
330 gco2D_SetColorSourceEx(
331     IN gco2D Engine,
332     IN gctUINT32 Address,
333     IN gctUINT32 Stride,
334     IN gceSURF_FORMAT Format,
335     IN gceSURF_ROTATION Rotation,
336     IN gctUINT32 SurfaceWidth,
337     IN gctUINT32 SurfaceHeight,
338     IN gctBOOL CoordRelative,
339     IN gceSURF_TRANSPARENCY Transparency,
340     IN gctUINT32 TransparencyColor
341     );
342
343 /* Configure color source. */
344 gceSTATUS
345 gco2D_SetColorSourceAdvanced(
346     IN gco2D Engine,
347     IN gctUINT32 Address,
348     IN gctUINT32 Stride,
349     IN gceSURF_FORMAT Format,
350     IN gceSURF_ROTATION Rotation,
351     IN gctUINT32 SurfaceWidth,
352     IN gctUINT32 SurfaceHeight,
353     IN gctBOOL CoordRelative
354     );
355
356 gceSTATUS
357 gco2D_SetColorSourceN(
358     IN gco2D Engine,
359     IN gctUINT32 Address,
360     IN gctUINT32 Stride,
361     IN gceSURF_FORMAT Format,
362     IN gceSURF_ROTATION Rotation,
363     IN gctUINT32 SurfaceWidth,
364     IN gctUINT32 SurfaceHeight,
365     IN gctUINT32 SurfaceNumber
366     );
367
368 /* Configure masked color source. */
369 gceSTATUS
370 gco2D_SetMaskedSource(
371     IN gco2D Engine,
372     IN gctUINT32 Address,
373     IN gctUINT32 Stride,
374     IN gceSURF_FORMAT Format,
375     IN gctBOOL CoordRelative,
376     IN gceSURF_MONOPACK MaskPack
377     );
378
379 /* Configure masked color source extension for full rotation. */
380 gceSTATUS
381 gco2D_SetMaskedSourceEx(
382     IN gco2D Engine,
383     IN gctUINT32 Address,
384     IN gctUINT32 Stride,
385     IN gceSURF_FORMAT Format,
386     IN gctBOOL CoordRelative,
387     IN gceSURF_MONOPACK MaskPack,
388     IN gceSURF_ROTATION Rotation,
389     IN gctUINT32 SurfaceWidth,
390     IN gctUINT32 SurfaceHeight
391     );
392
393 /* Setup the source rectangle. */
394 gceSTATUS
395 gco2D_SetSource(
396     IN gco2D Engine,
397     IN gcsRECT_PTR SrcRect
398     );
399
400 /* Set clipping rectangle. */
401 gceSTATUS
402 gco2D_SetClipping(
403     IN gco2D Engine,
404     IN gcsRECT_PTR Rect
405     );
406
407 /* Configure destination. */
408 gceSTATUS
409 gco2D_SetTarget(
410     IN gco2D Engine,
411     IN gctUINT32 Address,
412     IN gctUINT32 Stride,
413     IN gceSURF_ROTATION Rotation,
414     IN gctUINT32 SurfaceWidth
415     );
416
417 /* Configure destination extension for full rotation. */
418 gceSTATUS
419 gco2D_SetTargetEx(
420     IN gco2D Engine,
421     IN gctUINT32 Address,
422     IN gctUINT32 Stride,
423     IN gceSURF_ROTATION Rotation,
424     IN gctUINT32 SurfaceWidth,
425     IN gctUINT32 SurfaceHeight
426     );
427
428 /* Calculate and program the stretch factors. */
429 gceSTATUS
430 gco2D_CalcStretchFactor(
431     IN gco2D Engine,
432     IN gctINT32 SrcSize,
433     IN gctINT32 DestSize,
434     OUT gctUINT32_PTR Factor
435     );
436
437 gceSTATUS
438 gco2D_SetStretchFactors(
439     IN gco2D Engine,
440     IN gctUINT32 HorFactor,
441     IN gctUINT32 VerFactor
442     );
443
444 /* Calculate and program the stretch factors based on the rectangles. */
445 gceSTATUS
446 gco2D_SetStretchRectFactors(
447     IN gco2D Engine,
448     IN gcsRECT_PTR SrcRect,
449     IN gcsRECT_PTR DestRect
450     );
451
452 /* Create a new solid color gcoBRUSH object. */
453 gceSTATUS
454 gco2D_ConstructSingleColorBrush(
455     IN gco2D Engine,
456     IN gctUINT32 ColorConvert,
457     IN gctUINT32 Color,
458     IN gctUINT64 Mask,
459     gcoBRUSH * Brush
460     );
461
462 /* Create a new monochrome gcoBRUSH object. */
463 gceSTATUS
464 gco2D_ConstructMonochromeBrush(
465     IN gco2D Engine,
466     IN gctUINT32 OriginX,
467     IN gctUINT32 OriginY,
468     IN gctUINT32 ColorConvert,
469     IN gctUINT32 FgColor,
470     IN gctUINT32 BgColor,
471     IN gctUINT64 Bits,
472     IN gctUINT64 Mask,
473     gcoBRUSH * Brush
474     );
475
476 /* Create a color gcoBRUSH object. */
477 gceSTATUS
478 gco2D_ConstructColorBrush(
479     IN gco2D Engine,
480     IN gctUINT32 OriginX,
481     IN gctUINT32 OriginY,
482     IN gctPOINTER Address,
483     IN gceSURF_FORMAT Format,
484     IN gctUINT64 Mask,
485     gcoBRUSH * Brush
486     );
487
488 /* Clear one or more rectangular areas. */
489 gceSTATUS
490 gco2D_Clear(
491     IN gco2D Engine,
492     IN gctUINT32 RectCount,
493     IN gcsRECT_PTR Rect,
494     IN gctUINT32 Color32,
495     IN gctUINT8 FgRop,
496     IN gctUINT8 BgRop,
497     IN gceSURF_FORMAT DestFormat
498     );
499
500 /* Draw one or more Bresenham lines. */
501 gceSTATUS
502 gco2D_Line(
503     IN gco2D Engine,
504     IN gctUINT32 LineCount,
505     IN gcsRECT_PTR Position,
506     IN gcoBRUSH Brush,
507     IN gctUINT8 FgRop,
508     IN gctUINT8 BgRop,
509     IN gceSURF_FORMAT DestFormat
510     );
511
512 /* Draw one or more Bresenham lines based on the 32-bit color. */
513 gceSTATUS
514 gco2D_ColorLine(
515     IN gco2D Engine,
516     IN gctUINT32 LineCount,
517     IN gcsRECT_PTR Position,
518     IN gctUINT32 Color32,
519     IN gctUINT8 FgRop,
520     IN gctUINT8 BgRop,
521     IN gceSURF_FORMAT DestFormat
522     );
523
524 /* Generic blit. */
525 gceSTATUS
526 gco2D_Blit(
527     IN gco2D Engine,
528     IN gctUINT32 RectCount,
529     IN gcsRECT_PTR Rect,
530     IN gctUINT8 FgRop,
531     IN gctUINT8 BgRop,
532     IN gceSURF_FORMAT DestFormat
533     );
534
535 gceSTATUS
536 gco2D_Blend(
537     IN gco2D Engine,
538     IN gctUINT32 SrcCount,
539     IN gctUINT32 RectCount,
540     IN gcsRECT_PTR Rect,
541     IN gctUINT8 FgRop,
542     IN gctUINT8 BgRop,
543     IN gceSURF_FORMAT DestFormat
544     );
545
546 /* Batch blit. */
547 gceSTATUS
548 gco2D_BatchBlit(
549     IN gco2D Engine,
550     IN gctUINT32 RectCount,
551     IN gcsRECT_PTR SrcRect,
552     IN gcsRECT_PTR DestRect,
553     IN gctUINT8 FgRop,
554     IN gctUINT8 BgRop,
555     IN gceSURF_FORMAT DestFormat
556     );
557
558 /* Stretch blit. */
559 gceSTATUS
560 gco2D_StretchBlit(
561     IN gco2D Engine,
562     IN gctUINT32 RectCount,
563     IN gcsRECT_PTR Rect,
564     IN gctUINT8 FgRop,
565     IN gctUINT8 BgRop,
566     IN gceSURF_FORMAT DestFormat
567     );
568
569 /* Monochrome blit. */
570 gceSTATUS
571 gco2D_MonoBlit(
572     IN gco2D Engine,
573     IN gctPOINTER StreamBits,
574     IN gcsPOINT_PTR StreamSize,
575     IN gcsRECT_PTR StreamRect,
576     IN gceSURF_MONOPACK SrcStreamPack,
577     IN gceSURF_MONOPACK DestStreamPack,
578     IN gcsRECT_PTR DestRect,
579     IN gctUINT32 FgRop,
580     IN gctUINT32 BgRop,
581     IN gceSURF_FORMAT DestFormat
582     );
583
584 gceSTATUS
585 gco2D_MonoBlitEx(
586     IN gco2D        Engine,
587     IN gctPOINTER   StreamBits,
588     IN gctINT32     StreamStride,
589     IN gctINT32     StreamWidth,
590     IN gctINT32     StreamHeight,
591     IN gctINT32     StreamX,
592     IN gctINT32     StreamY,
593     IN gctUINT32    FgColor,
594     IN gctUINT32    BgColor,
595     IN gcsRECT_PTR  SrcRect,
596     IN gcsRECT_PTR  DstRect,
597     IN gctUINT8     FgRop,
598     IN gctUINT8     BgRop
599     );
600
601 /* Set kernel size. */
602 gceSTATUS
603 gco2D_SetKernelSize(
604     IN gco2D Engine,
605     IN gctUINT8 HorKernelSize,
606     IN gctUINT8 VerKernelSize
607     );
608
609 /* Set filter type. */
610 gceSTATUS
611 gco2D_SetFilterType(
612     IN gco2D Engine,
613     IN gceFILTER_TYPE FilterType
614     );
615
616 /* Set the filter kernel by user. */
617 gceSTATUS
618 gco2D_SetUserFilterKernel(
619     IN gco2D Engine,
620     IN gceFILTER_PASS_TYPE PassType,
621     IN gctUINT16_PTR KernelArray
622     );
623
624 /* Select the pass(es) to be done for user defined filter. */
625 gceSTATUS
626 gco2D_EnableUserFilterPasses(
627     IN gco2D Engine,
628     IN gctBOOL HorPass,
629     IN gctBOOL VerPass
630     );
631
632 /* Frees the temporary buffer allocated by filter blit operation. */
633 gceSTATUS
634 gco2D_FreeFilterBuffer(
635     IN gco2D Engine
636     );
637
638 /* Filter blit. */
639 gceSTATUS
640 gco2D_FilterBlit(
641     IN gco2D Engine,
642     IN gctUINT32 SrcAddress,
643     IN gctUINT SrcStride,
644     IN gctUINT32 SrcUAddress,
645     IN gctUINT SrcUStride,
646     IN gctUINT32 SrcVAddress,
647     IN gctUINT SrcVStride,
648     IN gceSURF_FORMAT SrcFormat,
649     IN gceSURF_ROTATION SrcRotation,
650     IN gctUINT32 SrcSurfaceWidth,
651     IN gcsRECT_PTR SrcRect,
652     IN gctUINT32 DestAddress,
653     IN gctUINT DestStride,
654     IN gceSURF_FORMAT DestFormat,
655     IN gceSURF_ROTATION DestRotation,
656     IN gctUINT32 DestSurfaceWidth,
657     IN gcsRECT_PTR DestRect,
658     IN gcsRECT_PTR DestSubRect
659     );
660
661 /* Filter blit extension for full rotation. */
662 gceSTATUS
663 gco2D_FilterBlitEx(
664     IN gco2D Engine,
665     IN gctUINT32 SrcAddress,
666     IN gctUINT SrcStride,
667     IN gctUINT32 SrcUAddress,
668     IN gctUINT SrcUStride,
669     IN gctUINT32 SrcVAddress,
670     IN gctUINT SrcVStride,
671     IN gceSURF_FORMAT SrcFormat,
672     IN gceSURF_ROTATION SrcRotation,
673     IN gctUINT32 SrcSurfaceWidth,
674     IN gctUINT32 SrcSurfaceHeight,
675     IN gcsRECT_PTR SrcRect,
676     IN gctUINT32 DestAddress,
677     IN gctUINT DestStride,
678     IN gceSURF_FORMAT DestFormat,
679     IN gceSURF_ROTATION DestRotation,
680     IN gctUINT32 DestSurfaceWidth,
681     IN gctUINT32 DestSurfaceHeight,
682     IN gcsRECT_PTR DestRect,
683     IN gcsRECT_PTR DestSubRect
684     );
685
686 gceSTATUS
687 gco2D_FilterBlitEx2(
688     IN gco2D                Engine,
689     IN gctUINT32_PTR        SrcAddresses,
690     IN gctUINT32            SrcAddressNum,
691     IN gctUINT32_PTR        SrcStrides,
692     IN gctUINT32            SrcStrideNum,
693     IN gceTILING            SrcTiling,
694     IN gceSURF_FORMAT       SrcFormat,
695     IN gceSURF_ROTATION     SrcRotation,
696     IN gctUINT32            SrcSurfaceWidth,
697     IN gctUINT32            SrcSurfaceHeight,
698     IN gcsRECT_PTR          SrcRect,
699     IN gctUINT32_PTR        DestAddresses,
700     IN gctUINT32            DestAddressNum,
701     IN gctUINT32_PTR        DestStrides,
702     IN gctUINT32            DestStrideNum,
703     IN gceTILING            DestTiling,
704     IN gceSURF_FORMAT       DestFormat,
705     IN gceSURF_ROTATION     DestRotation,
706     IN gctUINT32            DestSurfaceWidth,
707     IN gctUINT32            DestSurfaceHeight,
708     IN gcsRECT_PTR          DestRect,
709     IN gcsRECT_PTR          DestSubRect
710     );
711
712 /* Enable alpha blending engine in the hardware and disengage the ROP engine. */
713 gceSTATUS
714 gco2D_EnableAlphaBlend(
715     IN gco2D Engine,
716     IN gctUINT8 SrcGlobalAlphaValue,
717     IN gctUINT8 DstGlobalAlphaValue,
718     IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode,
719     IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode,
720     IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode,
721     IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode,
722     IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode,
723     IN gceSURF_BLEND_FACTOR_MODE DstFactorMode,
724     IN gceSURF_PIXEL_COLOR_MODE SrcColorMode,
725     IN gceSURF_PIXEL_COLOR_MODE DstColorMode
726     );
727
728 /* Enable alpha blending engine in the hardware. */
729 gceSTATUS
730 gco2D_EnableAlphaBlendAdvanced(
731     IN gco2D Engine,
732     IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode,
733     IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode,
734     IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode,
735     IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode,
736     IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode,
737     IN gceSURF_BLEND_FACTOR_MODE DstFactorMode
738     );
739
740 /* Enable alpha blending engine with Porter Duff rule. */
741 gceSTATUS
742 gco2D_SetPorterDuffBlending(
743     IN gco2D Engine,
744     IN gce2D_PORTER_DUFF_RULE Rule
745     );
746
747 /* Disable alpha blending engine in the hardware and engage the ROP engine. */
748 gceSTATUS
749 gco2D_DisableAlphaBlend(
750     IN gco2D Engine
751     );
752
753 /* Retrieve the maximum number of 32-bit data chunks for a single DE command. */
754 gctUINT32
755 gco2D_GetMaximumDataCount(
756     void
757     );
758
759 /* Retrieve the maximum number of rectangles, that can be passed in a single DE command. */
760 gctUINT32
761 gco2D_GetMaximumRectCount(
762     void
763     );
764
765 /* Returns the pixel alignment of the surface. */
766 gceSTATUS
767 gco2D_GetPixelAlignment(
768     gceSURF_FORMAT Format,
769     gcsPOINT_PTR Alignment
770     );
771
772 /* Retrieve monochrome stream pack size. */
773 gceSTATUS
774 gco2D_GetPackSize(
775     IN gceSURF_MONOPACK StreamPack,
776     OUT gctUINT32 * PackWidth,
777     OUT gctUINT32 * PackHeight
778     );
779
780 /* Flush the 2D pipeline. */
781 gceSTATUS
782 gco2D_Flush(
783     IN gco2D Engine
784     );
785
786 /* Load 256-entry color table for INDEX8 source surfaces. */
787 gceSTATUS
788 gco2D_LoadPalette(
789     IN gco2D Engine,
790     IN gctUINT FirstIndex,
791     IN gctUINT IndexCount,
792     IN gctPOINTER ColorTable,
793     IN gctBOOL ColorConvert
794     );
795
796 /* Enable/disable 2D BitBlt mirrorring. */
797 gceSTATUS
798 gco2D_SetBitBlitMirror(
799     IN gco2D Engine,
800     IN gctBOOL HorizontalMirror,
801     IN gctBOOL VerticalMirror
802     );
803
804 /*
805  * Set the transparency for source, destination and pattern.
806  * It also enable or disable the DFB color key mode.
807  */
808 gceSTATUS
809 gco2D_SetTransparencyAdvancedEx(
810     IN gco2D Engine,
811     IN gce2D_TRANSPARENCY SrcTransparency,
812     IN gce2D_TRANSPARENCY DstTransparency,
813     IN gce2D_TRANSPARENCY PatTransparency,
814     IN gctBOOL EnableDFBColorKeyMode
815     );
816
817 /* Set the transparency for source, destination and pattern. */
818 gceSTATUS
819 gco2D_SetTransparencyAdvanced(
820     IN gco2D Engine,
821     IN gce2D_TRANSPARENCY SrcTransparency,
822     IN gce2D_TRANSPARENCY DstTransparency,
823     IN gce2D_TRANSPARENCY PatTransparency
824     );
825
826 /* Set the source color key. */
827 gceSTATUS
828 gco2D_SetSourceColorKeyAdvanced(
829     IN gco2D Engine,
830     IN gctUINT32 ColorKey
831     );
832
833 /* Set the source color key range. */
834 gceSTATUS
835 gco2D_SetSourceColorKeyRangeAdvanced(
836     IN gco2D Engine,
837     IN gctUINT32 ColorKeyLow,
838     IN gctUINT32 ColorKeyHigh
839     );
840
841 /* Set the target color key. */
842 gceSTATUS
843 gco2D_SetTargetColorKeyAdvanced(
844     IN gco2D Engine,
845     IN gctUINT32 ColorKey
846     );
847
848 /* Set the target color key range. */
849 gceSTATUS
850 gco2D_SetTargetColorKeyRangeAdvanced(
851     IN gco2D Engine,
852     IN gctUINT32 ColorKeyLow,
853     IN gctUINT32 ColorKeyHigh
854     );
855
856 /* Set the YUV color space mode. */
857 gceSTATUS
858 gco2D_SetYUVColorMode(
859     IN gco2D Engine,
860     IN gce2D_YUV_COLOR_MODE Mode
861     );
862
863 /* Setup the source global color value in ARGB8 format. */
864 gceSTATUS gco2D_SetSourceGlobalColorAdvanced(
865     IN gco2D Engine,
866     IN gctUINT32 Color32
867     );
868
869 /* Setup the target global color value in ARGB8 format. */
870 gceSTATUS gco2D_SetTargetGlobalColorAdvanced(
871     IN gco2D Engine,
872     IN gctUINT32 Color32
873     );
874
875 /* Setup the source and target pixel multiply modes. */
876 gceSTATUS
877 gco2D_SetPixelMultiplyModeAdvanced(
878     IN gco2D Engine,
879     IN gce2D_PIXEL_COLOR_MULTIPLY_MODE SrcPremultiplySrcAlpha,
880     IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstPremultiplyDstAlpha,
881     IN gce2D_GLOBAL_COLOR_MULTIPLY_MODE SrcPremultiplyGlobalMode,
882     IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstDemultiplyDstAlpha
883     );
884
885 /* Set the GPU clock cycles after which the idle engine will keep auto-flushing. */
886 gceSTATUS
887 gco2D_SetAutoFlushCycles(
888     IN gco2D Engine,
889     IN gctUINT32 Cycles
890     );
891
892 #if VIVANTE_PROFILER
893 /* Read the profile registers available in the 2D engine and sets them in the profile.
894    The function will also reset the pixelsRendered counter every time.
895 */
896 gceSTATUS
897 gco2D_ProfileEngine(
898     IN gco2D Engine,
899     OPTIONAL gcs2D_PROFILE_PTR Profile
900     );
901 #endif
902
903 /* Enable or disable 2D dithering. */
904 gceSTATUS
905 gco2D_EnableDither(
906     IN gco2D Engine,
907     IN gctBOOL Enable
908     );
909
910 gceSTATUS
911 gco2D_SetGenericSource(
912     IN gco2D               Engine,
913     IN gctUINT32_PTR       Addresses,
914     IN gctUINT32           AddressNum,
915     IN gctUINT32_PTR       Strides,
916     IN gctUINT32           StrideNum,
917     IN gceTILING           Tiling,
918     IN gceSURF_FORMAT      Format,
919     IN gceSURF_ROTATION    Rotation,
920     IN gctUINT32           SurfaceWidth,
921     IN gctUINT32           SurfaceHeight
922 );
923
924 gceSTATUS
925 gco2D_SetGenericTarget(
926     IN gco2D               Engine,
927     IN gctUINT32_PTR       Addresses,
928     IN gctUINT32           AddressNum,
929     IN gctUINT32_PTR       Strides,
930     IN gctUINT32           StrideNum,
931     IN gceTILING           Tiling,
932     IN gceSURF_FORMAT      Format,
933     IN gceSURF_ROTATION    Rotation,
934     IN gctUINT32           SurfaceWidth,
935     IN gctUINT32           SurfaceHeight
936 );
937
938 gceSTATUS
939 gco2D_SetCurrentSourceIndex(
940     IN gco2D        Engine,
941     IN gctUINT32    SrcIndex
942     );
943
944 gceSTATUS
945 gco2D_MultiSourceBlit(
946     IN gco2D Engine,
947     IN gctUINT32 SourceMask,
948     IN gcsRECT_PTR DestRect,
949     IN gctUINT32 RectCount
950     );
951
952 gceSTATUS
953 gco2D_SetROP(
954     IN gco2D Engine,
955     IN gctUINT8 FgRop,
956     IN gctUINT8 BgRop
957     );
958
959 gceSTATUS
960 gco2D_SetGdiStretchMode(
961     IN gco2D Engine,
962     IN gctBOOL Enable
963     );
964
965 gceSTATUS
966 gco2D_SetSourceTileStatus(
967     IN gco2D Engine,
968     IN gce2D_TILE_STATUS_CONFIG TSControl,
969     IN gceSURF_FORMAT CompressedFormat,
970     IN gctUINT32 ClearValue,
971     IN gctUINT32 GpuAddress
972     );
973
974 gceSTATUS
975 gco2D_SetTargetTileStatus(
976     IN gco2D Engine,
977     IN gce2D_TILE_STATUS_CONFIG TileStatusConfig,
978     IN gceSURF_FORMAT CompressedFormat,
979     IN gctUINT32 ClearValue,
980     IN gctUINT32 GpuAddress
981     );
982
983 gceSTATUS
984 gco2D_QueryU32(
985     IN gco2D Engine,
986     IN gce2D_QUERY Item,
987     OUT gctUINT32_PTR Value
988     );
989
990 gceSTATUS
991 gco2D_SetStateU32(
992     IN gco2D Engine,
993     IN gce2D_STATE State,
994     IN gctUINT32 Value
995     );
996
997 gceSTATUS
998 gco2D_SetStateArrayI32(
999     IN gco2D Engine,
1000     IN gce2D_STATE State,
1001     IN gctINT32_PTR Array,
1002     IN gctINT32 ArraySize
1003     );
1004
1005 gceSTATUS
1006 gco2D_SetStateArrayU32(
1007     IN gco2D Engine,
1008     IN gce2D_STATE State,
1009     IN gctUINT32_PTR Array,
1010     IN gctINT32 ArraySize
1011     );
1012
1013 gceSTATUS
1014 gco2D_SetTargetRect(
1015     IN gco2D Engine,
1016     IN gcsRECT_PTR Rect
1017     );
1018
1019 gceSTATUS
1020 gco2D_Set2DEngine(
1021     IN gco2D Engine
1022     );
1023
1024 gceSTATUS
1025 gco2D_UnSet2DEngine(
1026     IN gco2D Engine
1027     );
1028
1029 gceSTATUS
1030 gco2D_Get2DEngine(
1031     OUT gco2D * Engine
1032     );
1033
1034 #ifdef __cplusplus
1035 }
1036 #endif
1037
1038 #endif /* __gc_hal_raster_h_ */