]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h
ENGR00240988: gpu: copy gpu-viv driver from 3.5.7 kernel
[karo-tx-linux.git] / drivers / mxc / gpu-viv / hal / kernel / inc / gc_hal_enum.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_enum_h_
23 #define __gc_hal_enum_h_
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 /* Chip models. */
30 typedef enum _gceCHIPMODEL
31 {
32     gcv300  = 0x0300,
33     gcv320  = 0x0320,
34     gcv350  = 0x0350,
35     gcv355  = 0x0355,
36     gcv400  = 0x0400,
37     gcv410  = 0x0410,
38     gcv420  = 0x0420,
39     gcv450  = 0x0450,
40     gcv500  = 0x0500,
41     gcv530  = 0x0530,
42     gcv600  = 0x0600,
43     gcv700  = 0x0700,
44     gcv800  = 0x0800,
45     gcv860  = 0x0860,
46     gcv880  = 0x0880,
47     gcv1000 = 0x1000,
48     gcv2000 = 0x2000,
49     gcv2100 = 0x2100,
50     gcv4000 = 0x4000,
51 }
52 gceCHIPMODEL;
53
54 /* Chip features. */
55 typedef enum _gceFEATURE
56 {
57     gcvFEATURE_PIPE_2D = 0,
58     gcvFEATURE_PIPE_3D,
59     gcvFEATURE_PIPE_VG,
60     gcvFEATURE_DC,
61     gcvFEATURE_HIGH_DYNAMIC_RANGE,
62     gcvFEATURE_MODULE_CG,
63     gcvFEATURE_MIN_AREA,
64     gcvFEATURE_BUFFER_INTERLEAVING,
65     gcvFEATURE_BYTE_WRITE_2D,
66     gcvFEATURE_ENDIANNESS_CONFIG,
67     gcvFEATURE_DUAL_RETURN_BUS,
68     gcvFEATURE_DEBUG_MODE,
69     gcvFEATURE_YUY2_RENDER_TARGET,
70     gcvFEATURE_FRAGMENT_PROCESSOR,
71     gcvFEATURE_2DPE20,
72     gcvFEATURE_FAST_CLEAR,
73     gcvFEATURE_YUV420_TILER,
74     gcvFEATURE_YUY2_AVERAGING,
75     gcvFEATURE_FLIP_Y,
76     gcvFEATURE_EARLY_Z,
77     gcvFEATURE_Z_COMPRESSION,
78     gcvFEATURE_MSAA,
79     gcvFEATURE_SPECIAL_ANTI_ALIASING,
80     gcvFEATURE_SPECIAL_MSAA_LOD,
81     gcvFEATURE_422_TEXTURE_COMPRESSION,
82     gcvFEATURE_DXT_TEXTURE_COMPRESSION,
83     gcvFEATURE_ETC1_TEXTURE_COMPRESSION,
84     gcvFEATURE_CORRECT_TEXTURE_CONVERTER,
85     gcvFEATURE_TEXTURE_8K,
86     gcvFEATURE_SCALER,
87     gcvFEATURE_YUV420_SCALER,
88     gcvFEATURE_SHADER_HAS_W,
89     gcvFEATURE_SHADER_HAS_SIGN,
90     gcvFEATURE_SHADER_HAS_FLOOR,
91     gcvFEATURE_SHADER_HAS_CEIL,
92     gcvFEATURE_SHADER_HAS_SQRT,
93     gcvFEATURE_SHADER_HAS_TRIG,
94     gcvFEATURE_VAA,
95     gcvFEATURE_HZ,
96     gcvFEATURE_CORRECT_STENCIL,
97     gcvFEATURE_VG20,
98     gcvFEATURE_VG_FILTER,
99     gcvFEATURE_VG21,
100     gcvFEATURE_VG_DOUBLE_BUFFER,
101     gcvFEATURE_MC20,
102     gcvFEATURE_SUPER_TILED,
103     gcvFEATURE_2D_FILTERBLIT_PLUS_ALPHABLEND,
104     gcvFEATURE_2D_DITHER,
105     gcvFEATURE_2D_A8_TARGET,
106     gcvFEATURE_2D_FILTERBLIT_FULLROTATION,
107     gcvFEATURE_2D_BITBLIT_FULLROTATION,
108     gcvFEATURE_WIDE_LINE,
109     gcvFEATURE_FC_FLUSH_STALL,
110     gcvFEATURE_FULL_DIRECTFB,
111     gcvFEATURE_HALF_FLOAT_PIPE,
112     gcvFEATURE_LINE_LOOP,
113     gcvFEATURE_2D_YUV_BLIT,
114     gcvFEATURE_2D_TILING,
115     gcvFEATURE_NON_POWER_OF_TWO,
116     gcvFEATURE_3D_TEXTURE,
117     gcvFEATURE_TEXTURE_ARRAY,
118     gcvFEATURE_TILE_FILLER,
119     gcvFEATURE_LOGIC_OP,
120     gcvFEATURE_COMPOSITION,
121     gcvFEATURE_MIXED_STREAMS,
122     gcvFEATURE_2D_MULTI_SOURCE_BLT,
123     gcvFEATURE_END_EVENT,
124     gcvFEATURE_VERTEX_10_10_10_2,
125     gcvFEATURE_TEXTURE_10_10_10_2,
126     gcvFEATURE_TEXTURE_ANISOTROPIC_FILTERING,
127     gcvFEATURE_TEXTURE_FLOAT_HALF_FLOAT,
128         gcvFEATURE_2D_ROTATION_STALL_FIX,
129     gcvFEATURE_2D_MULTI_SOURCE_BLT_EX,
130         gcvFEATURE_BUG_FIXES10,
131     gcvFEATURE_2D_MINOR_TILING,
132     /* Supertiled compressed textures are supported. */
133     gcvFEATURE_TEX_COMPRRESSION_SUPERTILED,
134     gcvFEATURE_FAST_MSAA,
135     gcvFEATURE_BUG_FIXED_INDEXED_TRIANGLE_STRIP,
136     gcvFEATURE_TEXTURE_TILED_READ,
137     gcvFEATURE_DEPTH_BIAS_FIX,
138     gcvFEATURE_RECT_PRIMITIVE,
139         gcvFEATURE_BUG_FIXES11,
140         gcvFEATURE_SUPERTILED_TEXTURE,
141     gcvFEATURE_2D_NO_COLORBRUSH_INDEX8,
142     gcvFEATURE_RS_YUV_TARGET,
143     gcvFEATURE_2D_FC_SOURCE,
144         gcvFEATURE_PE_DITHER_FIX,
145     gcvFEATURE_2D_YUV_SEPARATE_STRIDE,
146     gcvFEATURE_FRUSTUM_CLIP_FIX,
147     gcvFEATURE_TEXTURE_LINEAR,
148     gcvFEATURE_TEXTURE_YUV_ASSEMBLER,
149     gcvFEATURE_DYNAMIC_FREQUENCY_SCALING,
150     gcvFEATURE_BUGFIX15,
151     gcvFEATURE_2D_MIRROR_EXTENSION,
152     gcvFEATURE_ELEMENT_INDEX_UINT,
153 }
154 gceFEATURE;
155
156 /* Chip Power Status. */
157 typedef enum _gceCHIPPOWERSTATE
158 {
159     gcvPOWER_ON = 0,
160     gcvPOWER_OFF,
161     gcvPOWER_IDLE,
162     gcvPOWER_SUSPEND,
163     gcvPOWER_SUSPEND_ATPOWERON,
164     gcvPOWER_OFF_ATPOWERON,
165     gcvPOWER_IDLE_BROADCAST,
166     gcvPOWER_SUSPEND_BROADCAST,
167     gcvPOWER_OFF_BROADCAST,
168     gcvPOWER_OFF_RECOVERY,
169     gcvPOWER_OFF_TIMEOUT,
170     gcvPOWER_ON_AUTO
171 }
172 gceCHIPPOWERSTATE;
173
174 /* CPU cache operations */
175 typedef enum _gceCACHEOPERATION
176 {
177     gcvCACHE_CLEAN      = 0x01,
178     gcvCACHE_INVALIDATE = 0x02,
179     gcvCACHE_FLUSH      = gcvCACHE_CLEAN  | gcvCACHE_INVALIDATE,
180     gcvCACHE_MEMORY_BARRIER = 0x04
181 }
182 gceCACHEOPERATION;
183
184 /* Surface types. */
185 typedef enum _gceSURF_TYPE
186 {
187     gcvSURF_TYPE_UNKNOWN = 0,
188     gcvSURF_INDEX,
189     gcvSURF_VERTEX,
190     gcvSURF_TEXTURE,
191     gcvSURF_RENDER_TARGET,
192     gcvSURF_DEPTH,
193     gcvSURF_BITMAP,
194     gcvSURF_TILE_STATUS,
195         gcvSURF_IMAGE,
196     gcvSURF_MASK,
197     gcvSURF_SCISSOR,
198     gcvSURF_HIERARCHICAL_DEPTH,
199     gcvSURF_NUM_TYPES, /* Make sure this is the last one! */
200
201     /* Combinations. */
202     gcvSURF_NO_TILE_STATUS = 0x100,
203     gcvSURF_NO_VIDMEM      = 0x200, /* Used to allocate surfaces with no underlying vidmem node.
204                                        In Android, vidmem node is allocated by another process. */
205     gcvSURF_CACHEABLE      = 0x400, /* Used to allocate a cacheable surface */
206 #if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST
207     gcvSURF_FLIP           = 0x800, /* The Resolve Target the will been flip resolve from RT */
208 #endif
209     gcvSURF_TILE_STATUS_DIRTY  = 0x1000, /* Init tile status to all dirty */
210
211     gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET
212                                          | gcvSURF_NO_TILE_STATUS,
213
214     gcvSURF_RENDER_TARGET_TS_DIRTY = gcvSURF_RENDER_TARGET
215                                          | gcvSURF_TILE_STATUS_DIRTY,
216
217     gcvSURF_DEPTH_NO_TILE_STATUS         = gcvSURF_DEPTH
218                                          | gcvSURF_NO_TILE_STATUS,
219
220     /* Supported surface types with no vidmem node. */
221     gcvSURF_BITMAP_NO_VIDMEM             = gcvSURF_BITMAP
222                                          | gcvSURF_NO_VIDMEM,
223
224     gcvSURF_TEXTURE_NO_VIDMEM            = gcvSURF_TEXTURE
225                                          | gcvSURF_NO_VIDMEM,
226
227     /* Cacheable surface types with no vidmem node. */
228     gcvSURF_CACHEABLE_BITMAP_NO_VIDMEM   = gcvSURF_BITMAP_NO_VIDMEM
229                                          | gcvSURF_CACHEABLE,
230
231     gcvSURF_CACHEABLE_BITMAP             = gcvSURF_BITMAP
232                                          | gcvSURF_CACHEABLE,
233
234 #if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST
235     gcvSURF_FLIP_BITMAP                  = gcvSURF_BITMAP
236                                          | gcvSURF_FLIP,
237 #endif
238 }
239 gceSURF_TYPE;
240
241 typedef enum _gceSURF_USAGE
242 {
243     gcvSURF_USAGE_UNKNOWN,
244     gcvSURF_USAGE_RESOLVE_AFTER_CPU,
245     gcvSURF_USAGE_RESOLVE_AFTER_3D
246 }
247 gceSURF_USAGE;
248
249 typedef enum _gceSURF_COLOR_TYPE
250 {
251     gcvSURF_COLOR_UNKNOWN = 0,
252     gcvSURF_COLOR_LINEAR        = 0x01,
253     gcvSURF_COLOR_ALPHA_PRE     = 0x02,
254 }
255 gceSURF_COLOR_TYPE;
256
257 /* Rotation. */
258 typedef enum _gceSURF_ROTATION
259 {
260     gcvSURF_0_DEGREE = 0,
261     gcvSURF_90_DEGREE,
262     gcvSURF_180_DEGREE,
263     gcvSURF_270_DEGREE,
264     gcvSURF_FLIP_X,
265     gcvSURF_FLIP_Y,
266 }
267 gceSURF_ROTATION;
268
269 typedef enum _gceMIPMAP_IMAGE_FORMAT
270 {
271     gcvUNKNOWN_MIPMAP_IMAGE_FORMAT  = -2
272 }
273 gceMIPMAP_IMAGE_FORMAT;
274
275
276 /* Surface formats. */
277 typedef enum _gceSURF_FORMAT
278 {
279     /* Unknown format. */
280     gcvSURF_UNKNOWN             = 0,
281
282     /* Palettized formats. */
283     gcvSURF_INDEX1              = 100,
284     gcvSURF_INDEX4,
285     gcvSURF_INDEX8,
286
287     /* RGB formats. */
288     gcvSURF_A2R2G2B2            = 200,
289     gcvSURF_R3G3B2,
290     gcvSURF_A8R3G3B2,
291     gcvSURF_X4R4G4B4,
292     gcvSURF_A4R4G4B4,
293     gcvSURF_R4G4B4A4,
294     gcvSURF_X1R5G5B5,
295     gcvSURF_A1R5G5B5,
296     gcvSURF_R5G5B5A1,
297     gcvSURF_R5G6B5,
298     gcvSURF_R8G8B8,
299     gcvSURF_X8R8G8B8,
300     gcvSURF_A8R8G8B8,
301     gcvSURF_R8G8B8A8,
302     gcvSURF_G8R8G8B8,
303     gcvSURF_R8G8B8G8,
304     gcvSURF_X2R10G10B10,
305     gcvSURF_A2R10G10B10,
306     gcvSURF_X12R12G12B12,
307     gcvSURF_A12R12G12B12,
308     gcvSURF_X16R16G16B16,
309     gcvSURF_A16R16G16B16,
310     gcvSURF_A32R32G32B32,
311     gcvSURF_R8G8B8X8,
312     gcvSURF_R5G5B5X1,
313     gcvSURF_R4G4B4X4,
314
315     /* BGR formats. */
316     gcvSURF_A4B4G4R4            = 300,
317     gcvSURF_A1B5G5R5,
318     gcvSURF_B5G6R5,
319     gcvSURF_B8G8R8,
320     gcvSURF_B16G16R16,
321     gcvSURF_X8B8G8R8,
322     gcvSURF_A8B8G8R8,
323     gcvSURF_A2B10G10R10,
324     gcvSURF_X16B16G16R16,
325     gcvSURF_A16B16G16R16,
326     gcvSURF_B32G32R32,
327     gcvSURF_X32B32G32R32,
328     gcvSURF_A32B32G32R32,
329     gcvSURF_B4G4R4A4,
330     gcvSURF_B5G5R5A1,
331     gcvSURF_B8G8R8X8,
332     gcvSURF_B8G8R8A8,
333     gcvSURF_X4B4G4R4,
334     gcvSURF_X1B5G5R5,
335     gcvSURF_B4G4R4X4,
336     gcvSURF_B5G5R5X1,
337     gcvSURF_X2B10G10R10,
338
339     /* Compressed formats. */
340     gcvSURF_DXT1                = 400,
341     gcvSURF_DXT2,
342     gcvSURF_DXT3,
343     gcvSURF_DXT4,
344     gcvSURF_DXT5,
345     gcvSURF_CXV8U8,
346     gcvSURF_ETC1,
347     gcvSURF_R11_EAC,
348     gcvSURF_SIGNED_R11_EAC,
349     gcvSURF_RG11_EAC,
350     gcvSURF_SIGNED_RG11_EAC,
351     gcvSURF_RGB8_ETC2,
352     gcvSURF_SRGB8_ETC2,
353     gcvSURF_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
354     gcvSURF_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
355     gcvSURF_RGBA8_ETC2_EAC,
356     gcvSURF_SRGB8_ALPHA8_ETC2_EAC,
357
358     /* YUV formats. */
359     gcvSURF_YUY2                = 500,
360     gcvSURF_UYVY,
361     gcvSURF_YV12,
362     gcvSURF_I420,
363     gcvSURF_NV12,
364     gcvSURF_NV21,
365     gcvSURF_NV16,
366     gcvSURF_NV61,
367     gcvSURF_YVYU,
368     gcvSURF_VYUY,
369
370     /* Depth formats. */
371     gcvSURF_D16                 = 600,
372     gcvSURF_D24S8,
373     gcvSURF_D32,
374     gcvSURF_D24X8,
375
376     /* Alpha formats. */
377     gcvSURF_A4                  = 700,
378     gcvSURF_A8,
379     gcvSURF_A12,
380     gcvSURF_A16,
381     gcvSURF_A32,
382     gcvSURF_A1,
383
384     /* Luminance formats. */
385     gcvSURF_L4                  = 800,
386     gcvSURF_L8,
387     gcvSURF_L12,
388     gcvSURF_L16,
389     gcvSURF_L32,
390     gcvSURF_L1,
391
392     /* Alpha/Luminance formats. */
393     gcvSURF_A4L4                = 900,
394     gcvSURF_A2L6,
395     gcvSURF_A8L8,
396     gcvSURF_A4L12,
397     gcvSURF_A12L12,
398     gcvSURF_A16L16,
399
400     /* Bump formats. */
401     gcvSURF_L6V5U5              = 1000,
402     gcvSURF_V8U8,
403     gcvSURF_X8L8V8U8,
404     gcvSURF_Q8W8V8U8,
405     gcvSURF_A2W10V10U10,
406     gcvSURF_V16U16,
407     gcvSURF_Q16W16V16U16,
408
409     /* R/RG/RA formats. */
410     gcvSURF_R8                  = 1100,
411     gcvSURF_X8R8,
412     gcvSURF_G8R8,
413     gcvSURF_X8G8R8,
414     gcvSURF_A8R8,
415     gcvSURF_R16,
416     gcvSURF_X16R16,
417     gcvSURF_G16R16,
418     gcvSURF_X16G16R16,
419     gcvSURF_A16R16,
420     gcvSURF_R32,
421     gcvSURF_X32R32,
422     gcvSURF_G32R32,
423     gcvSURF_X32G32R32,
424     gcvSURF_A32R32,
425     gcvSURF_RG16,
426
427     /* Floating point formats. */
428     gcvSURF_R16F                = 1200,
429     gcvSURF_X16R16F,
430     gcvSURF_G16R16F,
431     gcvSURF_X16G16R16F,
432     gcvSURF_B16G16R16F,
433     gcvSURF_X16B16G16R16F,
434     gcvSURF_A16B16G16R16F,
435     gcvSURF_R32F,
436     gcvSURF_X32R32F,
437     gcvSURF_G32R32F,
438     gcvSURF_X32G32R32F,
439     gcvSURF_B32G32R32F,
440     gcvSURF_X32B32G32R32F,
441     gcvSURF_A32B32G32R32F,
442     gcvSURF_A16F,
443     gcvSURF_L16F,
444     gcvSURF_A16L16F,
445     gcvSURF_A16R16F,
446     gcvSURF_A32F,
447     gcvSURF_L32F,
448     gcvSURF_A32L32F,
449     gcvSURF_A32R32F,
450
451 }
452 gceSURF_FORMAT;
453
454 /* Pixel swizzle modes. */
455 typedef enum _gceSURF_SWIZZLE
456 {
457     gcvSURF_NOSWIZZLE = 0,
458     gcvSURF_ARGB,
459     gcvSURF_ABGR,
460     gcvSURF_RGBA,
461     gcvSURF_BGRA
462 }
463 gceSURF_SWIZZLE;
464
465 /* Transparency modes. */
466 typedef enum _gceSURF_TRANSPARENCY
467 {
468     /* Valid only for PE 1.0 */
469     gcvSURF_OPAQUE = 0,
470     gcvSURF_SOURCE_MATCH,
471     gcvSURF_SOURCE_MASK,
472     gcvSURF_PATTERN_MASK,
473 }
474 gceSURF_TRANSPARENCY;
475
476 /* Surface Alignment. */
477 typedef enum _gceSURF_ALIGNMENT
478 {
479     gcvSURF_FOUR = 0,
480     gcvSURF_SIXTEEN,
481     gcvSURF_SUPER_TILED,
482     gcvSURF_SPLIT_TILED,
483     gcvSURF_SPLIT_SUPER_TILED,
484 }
485 gceSURF_ALIGNMENT;
486
487
488 /* Surface Addressing. */
489 typedef enum _gceSURF_ADDRESSING
490 {
491     gcvSURF_NO_STRIDE_TILED = 0,
492     gcvSURF_NO_STRIDE_LINEAR,
493     gcvSURF_STRIDE_TILED,
494     gcvSURF_STRIDE_LINEAR
495 }
496 gceSURF_ADDRESSING;
497
498 /* Transparency modes. */
499 typedef enum _gce2D_TRANSPARENCY
500 {
501     /* Valid only for PE 2.0 */
502     gcv2D_OPAQUE = 0,
503     gcv2D_KEYED,
504     gcv2D_MASKED
505 }
506 gce2D_TRANSPARENCY;
507
508 /* Mono packing modes. */
509 typedef enum _gceSURF_MONOPACK
510 {
511     gcvSURF_PACKED8 = 0,
512     gcvSURF_PACKED16,
513     gcvSURF_PACKED32,
514     gcvSURF_UNPACKED,
515 }
516 gceSURF_MONOPACK;
517
518 /* Blending modes. */
519 typedef enum _gceSURF_BLEND_MODE
520 {
521     /* Porter-Duff blending modes.                   */
522     /*                         Fsrc      Fdst        */
523     gcvBLEND_CLEAR = 0,     /* 0         0           */
524     gcvBLEND_SRC,           /* 1         0           */
525     gcvBLEND_DST,           /* 0         1           */
526     gcvBLEND_SRC_OVER_DST,  /* 1         1 - Asrc    */
527     gcvBLEND_DST_OVER_SRC,  /* 1 - Adst  1           */
528     gcvBLEND_SRC_IN_DST,    /* Adst      0           */
529     gcvBLEND_DST_IN_SRC,    /* 0         Asrc        */
530     gcvBLEND_SRC_OUT_DST,   /* 1 - Adst  0           */
531     gcvBLEND_DST_OUT_SRC,   /* 0         1 - Asrc    */
532     gcvBLEND_SRC_ATOP_DST,  /* Adst      1 - Asrc    */
533     gcvBLEND_DST_ATOP_SRC,  /* 1 - Adst  Asrc        */
534     gcvBLEND_SRC_XOR_DST,   /* 1 - Adst  1 - Asrc    */
535
536     /* Special blending modes.                       */
537     gcvBLEND_SET,           /* DST = 1               */
538     gcvBLEND_SUB            /* DST = DST * (1 - SRC) */
539 }
540 gceSURF_BLEND_MODE;
541
542 /* Per-pixel alpha modes. */
543 typedef enum _gceSURF_PIXEL_ALPHA_MODE
544 {
545     gcvSURF_PIXEL_ALPHA_STRAIGHT = 0,
546     gcvSURF_PIXEL_ALPHA_INVERSED
547 }
548 gceSURF_PIXEL_ALPHA_MODE;
549
550 /* Global alpha modes. */
551 typedef enum _gceSURF_GLOBAL_ALPHA_MODE
552 {
553     gcvSURF_GLOBAL_ALPHA_OFF = 0,
554     gcvSURF_GLOBAL_ALPHA_ON,
555     gcvSURF_GLOBAL_ALPHA_SCALE
556 }
557 gceSURF_GLOBAL_ALPHA_MODE;
558
559 /* Color component modes for alpha blending. */
560 typedef enum _gceSURF_PIXEL_COLOR_MODE
561 {
562     gcvSURF_COLOR_STRAIGHT = 0,
563     gcvSURF_COLOR_MULTIPLY
564 }
565 gceSURF_PIXEL_COLOR_MODE;
566
567 /* Color component modes for alpha blending. */
568 typedef enum _gce2D_PIXEL_COLOR_MULTIPLY_MODE
569 {
570     gcv2D_COLOR_MULTIPLY_DISABLE = 0,
571     gcv2D_COLOR_MULTIPLY_ENABLE
572 }
573 gce2D_PIXEL_COLOR_MULTIPLY_MODE;
574
575 /* Color component modes for alpha blending. */
576 typedef enum _gce2D_GLOBAL_COLOR_MULTIPLY_MODE
577 {
578     gcv2D_GLOBAL_COLOR_MULTIPLY_DISABLE = 0,
579     gcv2D_GLOBAL_COLOR_MULTIPLY_ALPHA,
580     gcv2D_GLOBAL_COLOR_MULTIPLY_COLOR
581 }
582 gce2D_GLOBAL_COLOR_MULTIPLY_MODE;
583
584 /* Alpha blending factor modes. */
585 typedef enum _gceSURF_BLEND_FACTOR_MODE
586 {
587     gcvSURF_BLEND_ZERO = 0,
588     gcvSURF_BLEND_ONE,
589     gcvSURF_BLEND_STRAIGHT,
590     gcvSURF_BLEND_INVERSED,
591     gcvSURF_BLEND_COLOR,
592     gcvSURF_BLEND_COLOR_INVERSED,
593     gcvSURF_BLEND_SRC_ALPHA_SATURATED,
594     gcvSURF_BLEND_STRAIGHT_NO_CROSS,
595     gcvSURF_BLEND_INVERSED_NO_CROSS,
596     gcvSURF_BLEND_COLOR_NO_CROSS,
597     gcvSURF_BLEND_COLOR_INVERSED_NO_CROSS,
598     gcvSURF_BLEND_SRC_ALPHA_SATURATED_CROSS
599 }
600 gceSURF_BLEND_FACTOR_MODE;
601
602 /* Alpha blending porter duff rules. */
603 typedef enum _gce2D_PORTER_DUFF_RULE
604 {
605     gcvPD_CLEAR = 0,
606     gcvPD_SRC,
607     gcvPD_SRC_OVER,
608     gcvPD_DST_OVER,
609     gcvPD_SRC_IN,
610     gcvPD_DST_IN,
611     gcvPD_SRC_OUT,
612     gcvPD_DST_OUT,
613     gcvPD_SRC_ATOP,
614     gcvPD_DST_ATOP,
615     gcvPD_ADD,
616     gcvPD_XOR,
617     gcvPD_DST
618 }
619 gce2D_PORTER_DUFF_RULE;
620
621 /* Alpha blending factor modes. */
622 typedef enum _gce2D_YUV_COLOR_MODE
623 {
624     gcv2D_YUV_601= 0,
625     gcv2D_YUV_709
626 }
627 gce2D_YUV_COLOR_MODE;
628
629 /* 2D Rotation and flipping. */
630 typedef enum _gce2D_ORIENTATION
631 {
632     gcv2D_0_DEGREE = 0,
633     gcv2D_90_DEGREE,
634     gcv2D_180_DEGREE,
635     gcv2D_270_DEGREE,
636     gcv2D_X_FLIP,
637     gcv2D_Y_FLIP
638 }
639 gce2D_ORIENTATION;
640
641 typedef enum _gce2D_COMMAND
642 {
643     gcv2D_CLEAR = 0,
644     gcv2D_LINE,
645     gcv2D_BLT,
646     gcv2D_STRETCH,
647     gcv2D_HOR_FILTER,
648     gcv2D_VER_FILTER,
649     gcv2D_MULTI_SOURCE_BLT,
650 }
651 gce2D_COMMAND;
652
653 typedef enum _gce2D_TILE_STATUS_CONFIG
654 {
655     gcv2D_TSC_DISABLE       = 0,
656     gcv2D_TSC_ENABLE        = 0x00000001,
657     gcv2D_TSC_COMPRESSED    = 0x00000002,
658     gcv2D_TSC_DOWN_SAMPLER  = 0x00000004,
659 }
660 gce2D_TILE_STATUS_CONFIG;
661
662 typedef enum _gce2D_QUERY
663 {
664     gcv2D_QUERY_RGB_ADDRESS_MAX_ALIGN       = 0,
665     gcv2D_QUERY_RGB_STRIDE_MAX_ALIGN,
666     gcv2D_QUERY_YUV_ADDRESS_MAX_ALIGN,
667     gcv2D_QUERY_YUV_STRIDE_MAX_ALIGN,
668 }
669 gce2D_QUERY;
670
671 typedef enum _gce2D_STATE
672 {
673     gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE       = 1,
674 }
675 gce2D_STATE;
676
677 #ifndef VIVANTE_NO_3D
678 /* Texture functions. */
679 typedef enum _gceTEXTURE_FUNCTION
680 {
681     gcvTEXTURE_DUMMY = 0,
682     gcvTEXTURE_REPLACE = 0,
683     gcvTEXTURE_MODULATE,
684     gcvTEXTURE_ADD,
685     gcvTEXTURE_ADD_SIGNED,
686     gcvTEXTURE_INTERPOLATE,
687     gcvTEXTURE_SUBTRACT,
688     gcvTEXTURE_DOT3
689 }
690 gceTEXTURE_FUNCTION;
691
692 /* Texture sources. */
693 typedef enum _gceTEXTURE_SOURCE
694 {
695     gcvCOLOR_FROM_TEXTURE = 0,
696     gcvCOLOR_FROM_CONSTANT_COLOR,
697     gcvCOLOR_FROM_PRIMARY_COLOR,
698     gcvCOLOR_FROM_PREVIOUS_COLOR
699 }
700 gceTEXTURE_SOURCE;
701
702 /* Texture source channels. */
703 typedef enum _gceTEXTURE_CHANNEL
704 {
705     gcvFROM_COLOR = 0,
706     gcvFROM_ONE_MINUS_COLOR,
707     gcvFROM_ALPHA,
708     gcvFROM_ONE_MINUS_ALPHA
709 }
710 gceTEXTURE_CHANNEL;
711 #endif /* VIVANTE_NO_3D */
712
713 /* Filter types. */
714 typedef enum _gceFILTER_TYPE
715 {
716     gcvFILTER_SYNC = 0,
717     gcvFILTER_BLUR,
718     gcvFILTER_USER
719 }
720 gceFILTER_TYPE;
721
722 /* Filter pass types. */
723 typedef enum _gceFILTER_PASS_TYPE
724 {
725     gcvFILTER_HOR_PASS = 0,
726     gcvFILTER_VER_PASS
727 }
728 gceFILTER_PASS_TYPE;
729
730 /* Endian hints. */
731 typedef enum _gceENDIAN_HINT
732 {
733     gcvENDIAN_NO_SWAP = 0,
734     gcvENDIAN_SWAP_WORD,
735     gcvENDIAN_SWAP_DWORD
736 }
737 gceENDIAN_HINT;
738
739 /* Tiling modes. */
740 typedef enum _gceTILING
741 {
742     gcvLINEAR = 0,
743     gcvTILED,
744     gcvSUPERTILED,
745     gcvMULTI_TILED,
746     gcvMULTI_SUPERTILED,
747     gcvMINORTILED,
748 }
749 gceTILING;
750
751 /* 2D pattern type. */
752 typedef enum _gce2D_PATTERN
753 {
754     gcv2D_PATTERN_SOLID = 0,
755     gcv2D_PATTERN_MONO,
756     gcv2D_PATTERN_COLOR,
757     gcv2D_PATTERN_INVALID
758 }
759 gce2D_PATTERN;
760
761 /* 2D source type. */
762 typedef enum _gce2D_SOURCE
763 {
764     gcv2D_SOURCE_MASKED = 0,
765     gcv2D_SOURCE_MONO,
766     gcv2D_SOURCE_COLOR,
767     gcv2D_SOURCE_INVALID
768 }
769 gce2D_SOURCE;
770
771 /* Pipes. */
772 typedef enum _gcePIPE_SELECT
773 {
774     gcvPIPE_INVALID = ~0,
775     gcvPIPE_3D      =  0,
776     gcvPIPE_2D
777 }
778 gcePIPE_SELECT;
779
780 /* Hardware type. */
781 typedef enum _gceHARDWARE_TYPE
782 {
783     gcvHARDWARE_INVALID = 0x00,
784     gcvHARDWARE_3D      = 0x01,
785     gcvHARDWARE_2D      = 0x02,
786     gcvHARDWARE_VG      = 0x04,
787
788     gcvHARDWARE_3D2D    = gcvHARDWARE_3D | gcvHARDWARE_2D
789 }
790 gceHARDWARE_TYPE;
791
792 #define gcdCHIP_COUNT               3
793
794 typedef enum _gceMMU_MODE
795 {
796     gcvMMU_MODE_1K,
797     gcvMMU_MODE_4K,
798 } gceMMU_MODE;
799
800 /* User signal command codes. */
801 typedef enum _gceUSER_SIGNAL_COMMAND_CODES
802 {
803     gcvUSER_SIGNAL_CREATE,
804     gcvUSER_SIGNAL_DESTROY,
805     gcvUSER_SIGNAL_SIGNAL,
806     gcvUSER_SIGNAL_WAIT,
807     gcvUSER_SIGNAL_MAP,
808     gcvUSER_SIGNAL_UNMAP,
809 }
810 gceUSER_SIGNAL_COMMAND_CODES;
811
812 /* Event locations. */
813 typedef enum _gceKERNEL_WHERE
814 {
815     gcvKERNEL_COMMAND,
816     gcvKERNEL_VERTEX,
817     gcvKERNEL_TRIANGLE,
818     gcvKERNEL_TEXTURE,
819     gcvKERNEL_PIXEL,
820 }
821 gceKERNEL_WHERE;
822
823 #if gcdENABLE_VG
824 /* Hardware blocks. */
825 typedef enum _gceBLOCK
826 {
827         gcvBLOCK_COMMAND,
828         gcvBLOCK_TESSELLATOR,
829         gcvBLOCK_TESSELLATOR2,
830         gcvBLOCK_TESSELLATOR3,
831         gcvBLOCK_RASTER,
832         gcvBLOCK_VG,
833         gcvBLOCK_VG2,
834         gcvBLOCK_VG3,
835         gcvBLOCK_PIXEL,
836
837         /* Number of defined blocks. */
838         gcvBLOCK_COUNT
839 }
840 gceBLOCK;
841 #endif
842
843 /* gcdDUMP message type. */
844 typedef enum _gceDEBUG_MESSAGE_TYPE
845 {
846     gcvMESSAGE_TEXT,
847     gcvMESSAGE_DUMP
848 }
849 gceDEBUG_MESSAGE_TYPE;
850
851 /******************************************************************************\
852 ****************************** Object Declarations *****************************
853 \******************************************************************************/
854
855 typedef struct _gckCONTEXT          * gckCONTEXT;
856 typedef struct _gcoCMDBUF           * gcoCMDBUF;
857 typedef struct _gcsSTATE_DELTA      * gcsSTATE_DELTA_PTR;
858 typedef struct _gcsQUEUE            * gcsQUEUE_PTR;
859 typedef struct _gcoQUEUE            * gcoQUEUE;
860 typedef struct _gcsHAL_INTERFACE    * gcsHAL_INTERFACE_PTR;
861 typedef struct _gcs2D_PROFILE       * gcs2D_PROFILE_PTR;
862
863 #if gcdENABLE_VG
864 typedef struct _gcoVGHARDWARE *                 gcoVGHARDWARE;
865 typedef struct _gcoVGBUFFER *           gcoVGBUFFER;
866 typedef struct _gckVGHARDWARE *         gckVGHARDWARE;
867 typedef struct _gcsVGCONTEXT *                  gcsVGCONTEXT_PTR;
868 typedef struct _gcsVGCONTEXT_MAP *              gcsVGCONTEXT_MAP_PTR;
869 typedef struct _gcsVGCMDQUEUE *                 gcsVGCMDQUEUE_PTR;
870 typedef struct _gcsTASK_MASTER_TABLE *  gcsTASK_MASTER_TABLE_PTR;
871 typedef struct _gckVGKERNEL *                   gckVGKERNEL;
872 typedef void *                                          gctTHREAD;
873 #endif
874
875 #ifdef __cplusplus
876 }
877 #endif
878
879 #endif /* __gc_hal_enum_h_ */