]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h
1d19882217defca120bdc2058f5edbb4dbc39baf
[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_SHADER_HAS_INSTRUCTION_CACHE,
150     gcvFEATURE_DYNAMIC_FREQUENCY_SCALING,
151     gcvFEATURE_BUGFIX15,
152     gcvFEATURE_2D_GAMMA,
153     gcvFEATURE_2D_COLOR_SPACE_CONVERSION,
154     gcvFEATURE_2D_SUPER_TILE_VERSION,
155     gcvFEATURE_2D_MIRROR_EXTENSION,
156     gcvFEATURE_2D_SUPER_TILE_V1,
157     gcvFEATURE_2D_SUPER_TILE_V2,
158     gcvFEATURE_2D_SUPER_TILE_V3,
159     gcvFEATURE_2D_MULTI_SOURCE_BLT_EX2,
160     gcvFEATURE_ELEMENT_INDEX_UINT,
161     gcvFEATURE_2D_COMPRESSION,
162     gcvFEATURE_2D_OPF_YUV_OUTPUT,
163     gcvFEATURE_2D_MULTI_SRC_BLT_TO_UNIFIED_DST_RECT,
164     gcvFEATURE_2D_YUV_MODE,
165     gcvFEATURE_DECOMPRESS_Z16,
166         gcvFEATURE_LINEAR_RENDER_TARGET,
167     gcvFEATURE_BUG_FIXES8,
168     gcvFEATURE_HALTI2,
169     gcvFEATURE_MMU,
170 }
171 gceFEATURE;
172
173 /* Chip Power Status. */
174 typedef enum _gceCHIPPOWERSTATE
175 {
176     gcvPOWER_ON = 0,
177     gcvPOWER_OFF,
178     gcvPOWER_IDLE,
179     gcvPOWER_SUSPEND,
180     gcvPOWER_SUSPEND_ATPOWERON,
181     gcvPOWER_OFF_ATPOWERON,
182     gcvPOWER_IDLE_BROADCAST,
183     gcvPOWER_SUSPEND_BROADCAST,
184     gcvPOWER_OFF_BROADCAST,
185     gcvPOWER_OFF_RECOVERY,
186     gcvPOWER_OFF_TIMEOUT,
187     gcvPOWER_ON_AUTO
188 }
189 gceCHIPPOWERSTATE;
190
191 /* CPU cache operations */
192 typedef enum _gceCACHEOPERATION
193 {
194     gcvCACHE_CLEAN      = 0x01,
195     gcvCACHE_INVALIDATE = 0x02,
196     gcvCACHE_FLUSH      = gcvCACHE_CLEAN  | gcvCACHE_INVALIDATE,
197     gcvCACHE_MEMORY_BARRIER = 0x04
198 }
199 gceCACHEOPERATION;
200
201 /* Surface types. */
202 typedef enum _gceSURF_TYPE
203 {
204     gcvSURF_TYPE_UNKNOWN = 0,
205     gcvSURF_INDEX,
206     gcvSURF_VERTEX,
207     gcvSURF_TEXTURE,
208     gcvSURF_RENDER_TARGET,
209     gcvSURF_DEPTH,
210     gcvSURF_BITMAP,
211     gcvSURF_TILE_STATUS,
212         gcvSURF_IMAGE,
213     gcvSURF_MASK,
214     gcvSURF_SCISSOR,
215     gcvSURF_HIERARCHICAL_DEPTH,
216     gcvSURF_NUM_TYPES, /* Make sure this is the last one! */
217
218     /* Combinations. */
219     gcvSURF_NO_TILE_STATUS = 0x100,
220     gcvSURF_NO_VIDMEM      = 0x200, /* Used to allocate surfaces with no underlying vidmem node.
221                                        In Android, vidmem node is allocated by another process. */
222     gcvSURF_CACHEABLE      = 0x400, /* Used to allocate a cacheable surface */
223     gcvSURF_FLIP           = 0x800, /* The Resolve Target the will been flip resolve from RT */
224     gcvSURF_TILE_STATUS_DIRTY  = 0x1000, /* Init tile status to all dirty */
225
226     gcvSURF_LINEAR             = 0x2000,
227     gcvSURF_VG                     = 0x4000,
228
229     gcvSURF_TEXTURE_LINEAR               = gcvSURF_TEXTURE
230                                          | gcvSURF_LINEAR,
231
232     gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET
233                                          | gcvSURF_NO_TILE_STATUS,
234
235     gcvSURF_RENDER_TARGET_TS_DIRTY = gcvSURF_RENDER_TARGET
236                                          | gcvSURF_TILE_STATUS_DIRTY,
237
238     gcvSURF_DEPTH_NO_TILE_STATUS         = gcvSURF_DEPTH
239                                          | gcvSURF_NO_TILE_STATUS,
240
241     gcvSURF_DEPTH_TS_DIRTY               = gcvSURF_DEPTH
242                                          | gcvSURF_TILE_STATUS_DIRTY,
243
244     /* Supported surface types with no vidmem node. */
245     gcvSURF_BITMAP_NO_VIDMEM             = gcvSURF_BITMAP
246                                          | gcvSURF_NO_VIDMEM,
247
248     gcvSURF_TEXTURE_NO_VIDMEM            = gcvSURF_TEXTURE
249                                          | gcvSURF_NO_VIDMEM,
250
251     /* Cacheable surface types with no vidmem node. */
252     gcvSURF_CACHEABLE_BITMAP_NO_VIDMEM   = gcvSURF_BITMAP_NO_VIDMEM
253                                          | gcvSURF_CACHEABLE,
254
255     gcvSURF_CACHEABLE_BITMAP             = gcvSURF_BITMAP
256                                          | gcvSURF_CACHEABLE,
257
258     gcvSURF_FLIP_BITMAP                  = gcvSURF_BITMAP
259                                          | gcvSURF_FLIP,
260 }
261 gceSURF_TYPE;
262
263 typedef enum _gceSURF_USAGE
264 {
265     gcvSURF_USAGE_UNKNOWN,
266     gcvSURF_USAGE_RESOLVE_AFTER_CPU,
267     gcvSURF_USAGE_RESOLVE_AFTER_3D
268 }
269 gceSURF_USAGE;
270
271 typedef enum _gceSURF_COLOR_TYPE
272 {
273     gcvSURF_COLOR_UNKNOWN = 0,
274     gcvSURF_COLOR_LINEAR        = 0x01,
275     gcvSURF_COLOR_ALPHA_PRE     = 0x02,
276 }
277 gceSURF_COLOR_TYPE;
278
279 /* Rotation. */
280 typedef enum _gceSURF_ROTATION
281 {
282     gcvSURF_0_DEGREE = 0,
283     gcvSURF_90_DEGREE,
284     gcvSURF_180_DEGREE,
285     gcvSURF_270_DEGREE,
286     gcvSURF_FLIP_X,
287     gcvSURF_FLIP_Y,
288
289         gcvSURF_POST_FLIP_X = 0x40000000,
290     gcvSURF_POST_FLIP_Y = 0x80000000,
291 }
292 gceSURF_ROTATION;
293
294 typedef enum _gceMIPMAP_IMAGE_FORMAT
295 {
296     gcvUNKNOWN_MIPMAP_IMAGE_FORMAT  = -2
297 }
298 gceMIPMAP_IMAGE_FORMAT;
299
300
301 /* Surface formats. */
302 typedef enum _gceSURF_FORMAT
303 {
304     /* Unknown format. */
305     gcvSURF_UNKNOWN             = 0,
306
307     /* Palettized formats. */
308     gcvSURF_INDEX1              = 100,
309     gcvSURF_INDEX4,
310     gcvSURF_INDEX8,
311
312     /* RGB formats. */
313     gcvSURF_A2R2G2B2            = 200,
314     gcvSURF_R3G3B2,
315     gcvSURF_A8R3G3B2,
316     gcvSURF_X4R4G4B4,
317     gcvSURF_A4R4G4B4,
318     gcvSURF_R4G4B4A4,
319     gcvSURF_X1R5G5B5,
320     gcvSURF_A1R5G5B5,
321     gcvSURF_R5G5B5A1,
322     gcvSURF_R5G6B5,
323     gcvSURF_R8G8B8,
324     gcvSURF_X8R8G8B8,
325     gcvSURF_A8R8G8B8,
326     gcvSURF_R8G8B8A8,
327     gcvSURF_G8R8G8B8,
328     gcvSURF_R8G8B8G8,
329     gcvSURF_X2R10G10B10,
330     gcvSURF_A2R10G10B10,
331     gcvSURF_X12R12G12B12,
332     gcvSURF_A12R12G12B12,
333     gcvSURF_X16R16G16B16,
334     gcvSURF_A16R16G16B16,
335     gcvSURF_A32R32G32B32,
336     gcvSURF_R8G8B8X8,
337     gcvSURF_R5G5B5X1,
338     gcvSURF_R4G4B4X4,
339
340     /* BGR formats. */
341     gcvSURF_A4B4G4R4            = 300,
342     gcvSURF_A1B5G5R5,
343     gcvSURF_B5G6R5,
344     gcvSURF_B8G8R8,
345     gcvSURF_B16G16R16,
346     gcvSURF_X8B8G8R8,
347     gcvSURF_A8B8G8R8,
348     gcvSURF_A2B10G10R10,
349     gcvSURF_X16B16G16R16,
350     gcvSURF_A16B16G16R16,
351     gcvSURF_B32G32R32,
352     gcvSURF_X32B32G32R32,
353     gcvSURF_A32B32G32R32,
354     gcvSURF_B4G4R4A4,
355     gcvSURF_B5G5R5A1,
356     gcvSURF_B8G8R8X8,
357     gcvSURF_B8G8R8A8,
358     gcvSURF_X4B4G4R4,
359     gcvSURF_X1B5G5R5,
360     gcvSURF_B4G4R4X4,
361     gcvSURF_B5G5R5X1,
362     gcvSURF_X2B10G10R10,
363
364     /* Compressed formats. */
365     gcvSURF_DXT1                = 400,
366     gcvSURF_DXT2,
367     gcvSURF_DXT3,
368     gcvSURF_DXT4,
369     gcvSURF_DXT5,
370     gcvSURF_CXV8U8,
371     gcvSURF_ETC1,
372     gcvSURF_R11_EAC,
373     gcvSURF_SIGNED_R11_EAC,
374     gcvSURF_RG11_EAC,
375     gcvSURF_SIGNED_RG11_EAC,
376     gcvSURF_RGB8_ETC2,
377     gcvSURF_SRGB8_ETC2,
378     gcvSURF_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
379     gcvSURF_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
380     gcvSURF_RGBA8_ETC2_EAC,
381     gcvSURF_SRGB8_ALPHA8_ETC2_EAC,
382
383     /* YUV formats. */
384     gcvSURF_YUY2                = 500,
385     gcvSURF_UYVY,
386     gcvSURF_YV12,
387     gcvSURF_I420,
388     gcvSURF_NV12,
389     gcvSURF_NV21,
390     gcvSURF_NV16,
391     gcvSURF_NV61,
392     gcvSURF_YVYU,
393     gcvSURF_VYUY,
394
395     /* Depth formats. */
396     gcvSURF_D16                 = 600,
397     gcvSURF_D24S8,
398     gcvSURF_D32,
399     gcvSURF_D24X8,
400
401     /* Alpha formats. */
402     gcvSURF_A4                  = 700,
403     gcvSURF_A8,
404     gcvSURF_A12,
405     gcvSURF_A16,
406     gcvSURF_A32,
407     gcvSURF_A1,
408
409     /* Luminance formats. */
410     gcvSURF_L4                  = 800,
411     gcvSURF_L8,
412     gcvSURF_L12,
413     gcvSURF_L16,
414     gcvSURF_L32,
415     gcvSURF_L1,
416
417     /* Alpha/Luminance formats. */
418     gcvSURF_A4L4                = 900,
419     gcvSURF_A2L6,
420     gcvSURF_A8L8,
421     gcvSURF_A4L12,
422     gcvSURF_A12L12,
423     gcvSURF_A16L16,
424
425     /* Bump formats. */
426     gcvSURF_L6V5U5              = 1000,
427     gcvSURF_V8U8,
428     gcvSURF_X8L8V8U8,
429     gcvSURF_Q8W8V8U8,
430     gcvSURF_A2W10V10U10,
431     gcvSURF_V16U16,
432     gcvSURF_Q16W16V16U16,
433
434     /* R/RG/RA formats. */
435     gcvSURF_R8                  = 1100,
436     gcvSURF_X8R8,
437     gcvSURF_G8R8,
438     gcvSURF_X8G8R8,
439     gcvSURF_A8R8,
440     gcvSURF_R16,
441     gcvSURF_X16R16,
442     gcvSURF_G16R16,
443     gcvSURF_X16G16R16,
444     gcvSURF_A16R16,
445     gcvSURF_R32,
446     gcvSURF_X32R32,
447     gcvSURF_G32R32,
448     gcvSURF_X32G32R32,
449     gcvSURF_A32R32,
450     gcvSURF_RG16,
451
452     /* Floating point formats. */
453     gcvSURF_R16F                = 1200,
454     gcvSURF_X16R16F,
455     gcvSURF_G16R16F,
456     gcvSURF_X16G16R16F,
457     gcvSURF_B16G16R16F,
458     gcvSURF_X16B16G16R16F,
459     gcvSURF_A16B16G16R16F,
460     gcvSURF_R32F,
461     gcvSURF_X32R32F,
462     gcvSURF_G32R32F,
463     gcvSURF_X32G32R32F,
464     gcvSURF_B32G32R32F,
465     gcvSURF_X32B32G32R32F,
466     gcvSURF_A32B32G32R32F,
467     gcvSURF_A16F,
468     gcvSURF_L16F,
469     gcvSURF_A16L16F,
470     gcvSURF_A16R16F,
471     gcvSURF_A32F,
472     gcvSURF_L32F,
473     gcvSURF_A32L32F,
474     gcvSURF_A32R32F,
475
476 }
477 gceSURF_FORMAT;
478
479 /* Pixel swizzle modes. */
480 typedef enum _gceSURF_SWIZZLE
481 {
482     gcvSURF_NOSWIZZLE = 0,
483     gcvSURF_ARGB,
484     gcvSURF_ABGR,
485     gcvSURF_RGBA,
486     gcvSURF_BGRA
487 }
488 gceSURF_SWIZZLE;
489
490 /* Transparency modes. */
491 typedef enum _gceSURF_TRANSPARENCY
492 {
493     /* Valid only for PE 1.0 */
494     gcvSURF_OPAQUE = 0,
495     gcvSURF_SOURCE_MATCH,
496     gcvSURF_SOURCE_MASK,
497     gcvSURF_PATTERN_MASK,
498 }
499 gceSURF_TRANSPARENCY;
500
501 /* Surface Alignment. */
502 typedef enum _gceSURF_ALIGNMENT
503 {
504     gcvSURF_FOUR = 0,
505     gcvSURF_SIXTEEN,
506     gcvSURF_SUPER_TILED,
507     gcvSURF_SPLIT_TILED,
508     gcvSURF_SPLIT_SUPER_TILED,
509 }
510 gceSURF_ALIGNMENT;
511
512
513 /* Surface Addressing. */
514 typedef enum _gceSURF_ADDRESSING
515 {
516     gcvSURF_NO_STRIDE_TILED = 0,
517     gcvSURF_NO_STRIDE_LINEAR,
518     gcvSURF_STRIDE_TILED,
519     gcvSURF_STRIDE_LINEAR
520 }
521 gceSURF_ADDRESSING;
522
523 /* Transparency modes. */
524 typedef enum _gce2D_TRANSPARENCY
525 {
526     /* Valid only for PE 2.0 */
527     gcv2D_OPAQUE = 0,
528     gcv2D_KEYED,
529     gcv2D_MASKED
530 }
531 gce2D_TRANSPARENCY;
532
533 /* Mono packing modes. */
534 typedef enum _gceSURF_MONOPACK
535 {
536     gcvSURF_PACKED8 = 0,
537     gcvSURF_PACKED16,
538     gcvSURF_PACKED32,
539     gcvSURF_UNPACKED,
540 }
541 gceSURF_MONOPACK;
542
543 /* Blending modes. */
544 typedef enum _gceSURF_BLEND_MODE
545 {
546     /* Porter-Duff blending modes.                   */
547     /*                         Fsrc      Fdst        */
548     gcvBLEND_CLEAR = 0,     /* 0         0           */
549     gcvBLEND_SRC,           /* 1         0           */
550     gcvBLEND_DST,           /* 0         1           */
551     gcvBLEND_SRC_OVER_DST,  /* 1         1 - Asrc    */
552     gcvBLEND_DST_OVER_SRC,  /* 1 - Adst  1           */
553     gcvBLEND_SRC_IN_DST,    /* Adst      0           */
554     gcvBLEND_DST_IN_SRC,    /* 0         Asrc        */
555     gcvBLEND_SRC_OUT_DST,   /* 1 - Adst  0           */
556     gcvBLEND_DST_OUT_SRC,   /* 0         1 - Asrc    */
557     gcvBLEND_SRC_ATOP_DST,  /* Adst      1 - Asrc    */
558     gcvBLEND_DST_ATOP_SRC,  /* 1 - Adst  Asrc        */
559     gcvBLEND_SRC_XOR_DST,   /* 1 - Adst  1 - Asrc    */
560
561     /* Special blending modes.                       */
562     gcvBLEND_SET,           /* DST = 1               */
563     gcvBLEND_SUB            /* DST = DST * (1 - SRC) */
564 }
565 gceSURF_BLEND_MODE;
566
567 /* Per-pixel alpha modes. */
568 typedef enum _gceSURF_PIXEL_ALPHA_MODE
569 {
570     gcvSURF_PIXEL_ALPHA_STRAIGHT = 0,
571     gcvSURF_PIXEL_ALPHA_INVERSED
572 }
573 gceSURF_PIXEL_ALPHA_MODE;
574
575 /* Global alpha modes. */
576 typedef enum _gceSURF_GLOBAL_ALPHA_MODE
577 {
578     gcvSURF_GLOBAL_ALPHA_OFF = 0,
579     gcvSURF_GLOBAL_ALPHA_ON,
580     gcvSURF_GLOBAL_ALPHA_SCALE
581 }
582 gceSURF_GLOBAL_ALPHA_MODE;
583
584 /* Color component modes for alpha blending. */
585 typedef enum _gceSURF_PIXEL_COLOR_MODE
586 {
587     gcvSURF_COLOR_STRAIGHT = 0,
588     gcvSURF_COLOR_MULTIPLY
589 }
590 gceSURF_PIXEL_COLOR_MODE;
591
592 /* Color component modes for alpha blending. */
593 typedef enum _gce2D_PIXEL_COLOR_MULTIPLY_MODE
594 {
595     gcv2D_COLOR_MULTIPLY_DISABLE = 0,
596     gcv2D_COLOR_MULTIPLY_ENABLE
597 }
598 gce2D_PIXEL_COLOR_MULTIPLY_MODE;
599
600 /* Color component modes for alpha blending. */
601 typedef enum _gce2D_GLOBAL_COLOR_MULTIPLY_MODE
602 {
603     gcv2D_GLOBAL_COLOR_MULTIPLY_DISABLE = 0,
604     gcv2D_GLOBAL_COLOR_MULTIPLY_ALPHA,
605     gcv2D_GLOBAL_COLOR_MULTIPLY_COLOR
606 }
607 gce2D_GLOBAL_COLOR_MULTIPLY_MODE;
608
609 /* Alpha blending factor modes. */
610 typedef enum _gceSURF_BLEND_FACTOR_MODE
611 {
612     gcvSURF_BLEND_ZERO = 0,
613     gcvSURF_BLEND_ONE,
614     gcvSURF_BLEND_STRAIGHT,
615     gcvSURF_BLEND_INVERSED,
616     gcvSURF_BLEND_COLOR,
617     gcvSURF_BLEND_COLOR_INVERSED,
618     gcvSURF_BLEND_SRC_ALPHA_SATURATED,
619     gcvSURF_BLEND_STRAIGHT_NO_CROSS,
620     gcvSURF_BLEND_INVERSED_NO_CROSS,
621     gcvSURF_BLEND_COLOR_NO_CROSS,
622     gcvSURF_BLEND_COLOR_INVERSED_NO_CROSS,
623     gcvSURF_BLEND_SRC_ALPHA_SATURATED_CROSS
624 }
625 gceSURF_BLEND_FACTOR_MODE;
626
627 /* Alpha blending porter duff rules. */
628 typedef enum _gce2D_PORTER_DUFF_RULE
629 {
630     gcvPD_CLEAR = 0,
631     gcvPD_SRC,
632     gcvPD_SRC_OVER,
633     gcvPD_DST_OVER,
634     gcvPD_SRC_IN,
635     gcvPD_DST_IN,
636     gcvPD_SRC_OUT,
637     gcvPD_DST_OUT,
638     gcvPD_SRC_ATOP,
639     gcvPD_DST_ATOP,
640     gcvPD_ADD,
641     gcvPD_XOR,
642     gcvPD_DST
643 }
644 gce2D_PORTER_DUFF_RULE;
645
646 /* Alpha blending factor modes. */
647 typedef enum _gce2D_YUV_COLOR_MODE
648 {
649     gcv2D_YUV_601= 0,
650     gcv2D_YUV_709,
651     gcv2D_YUV_USER_DEFINED,
652     gcv2D_YUV_USER_DEFINED_CLAMP,
653
654     /* Default setting is for src. gcv2D_YUV_DST
655         can be ORed to set dst.
656     */
657     gcv2D_YUV_DST = 0x80000000,
658 }
659 gce2D_YUV_COLOR_MODE;
660
661 typedef enum _gce2D_COMMAND
662 {
663     gcv2D_CLEAR = 0,
664     gcv2D_LINE,
665     gcv2D_BLT,
666     gcv2D_STRETCH,
667     gcv2D_HOR_FILTER,
668     gcv2D_VER_FILTER,
669     gcv2D_MULTI_SOURCE_BLT,
670 }
671 gce2D_COMMAND;
672
673 typedef enum _gce2D_TILE_STATUS_CONFIG
674 {
675     gcv2D_TSC_DISABLE       = 0,
676     gcv2D_TSC_ENABLE        = 0x00000001,
677     gcv2D_TSC_COMPRESSED    = 0x00000002,
678     gcv2D_TSC_DOWN_SAMPLER  = 0x00000004,
679     gcv2D_TSC_2D_COMPRESSED = 0x00000008,
680 }
681 gce2D_TILE_STATUS_CONFIG;
682
683 typedef enum _gce2D_QUERY
684 {
685     gcv2D_QUERY_RGB_ADDRESS_MIN_ALIGN       = 0,
686     gcv2D_QUERY_RGB_STRIDE_MIN_ALIGN,
687     gcv2D_QUERY_YUV_ADDRESS_MIN_ALIGN,
688     gcv2D_QUERY_YUV_STRIDE_MIN_ALIGN,
689 }
690 gce2D_QUERY;
691
692 typedef enum _gce2D_SUPER_TILE_VERSION
693 {
694     gcv2D_SUPER_TILE_VERSION_V1       = 1,
695     gcv2D_SUPER_TILE_VERSION_V2       = 2,
696     gcv2D_SUPER_TILE_VERSION_V3       = 3,
697 }
698 gce2D_SUPER_TILE_VERSION;
699
700 typedef enum _gce2D_STATE
701 {
702     gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE       = 1,
703     gcv2D_STATE_SUPER_TILE_VERSION,
704     gcv2D_STATE_EN_GAMMA,
705     gcv2D_STATE_DE_GAMMA,
706     gcv2D_STATE_MULTI_SRC_BLIT_UNIFIED_DST_RECT,
707
708     gcv2D_STATE_ARRAY_EN_GAMMA                   = 0x10001,
709     gcv2D_STATE_ARRAY_DE_GAMMA,
710     gcv2D_STATE_ARRAY_CSC_YUV_TO_RGB,
711     gcv2D_STATE_ARRAY_CSC_RGB_TO_YUV,
712 }
713 gce2D_STATE;
714
715 #ifndef VIVANTE_NO_3D
716 /* Texture functions. */
717 typedef enum _gceTEXTURE_FUNCTION
718 {
719     gcvTEXTURE_DUMMY = 0,
720     gcvTEXTURE_REPLACE = 0,
721     gcvTEXTURE_MODULATE,
722     gcvTEXTURE_ADD,
723     gcvTEXTURE_ADD_SIGNED,
724     gcvTEXTURE_INTERPOLATE,
725     gcvTEXTURE_SUBTRACT,
726     gcvTEXTURE_DOT3
727 }
728 gceTEXTURE_FUNCTION;
729
730 /* Texture sources. */
731 typedef enum _gceTEXTURE_SOURCE
732 {
733     gcvCOLOR_FROM_TEXTURE = 0,
734     gcvCOLOR_FROM_CONSTANT_COLOR,
735     gcvCOLOR_FROM_PRIMARY_COLOR,
736     gcvCOLOR_FROM_PREVIOUS_COLOR
737 }
738 gceTEXTURE_SOURCE;
739
740 /* Texture source channels. */
741 typedef enum _gceTEXTURE_CHANNEL
742 {
743     gcvFROM_COLOR = 0,
744     gcvFROM_ONE_MINUS_COLOR,
745     gcvFROM_ALPHA,
746     gcvFROM_ONE_MINUS_ALPHA
747 }
748 gceTEXTURE_CHANNEL;
749 #endif /* VIVANTE_NO_3D */
750
751 /* Filter types. */
752 typedef enum _gceFILTER_TYPE
753 {
754     gcvFILTER_SYNC = 0,
755     gcvFILTER_BLUR,
756     gcvFILTER_USER
757 }
758 gceFILTER_TYPE;
759
760 /* Filter pass types. */
761 typedef enum _gceFILTER_PASS_TYPE
762 {
763     gcvFILTER_HOR_PASS = 0,
764     gcvFILTER_VER_PASS
765 }
766 gceFILTER_PASS_TYPE;
767
768 /* Endian hints. */
769 typedef enum _gceENDIAN_HINT
770 {
771     gcvENDIAN_NO_SWAP = 0,
772     gcvENDIAN_SWAP_WORD,
773     gcvENDIAN_SWAP_DWORD
774 }
775 gceENDIAN_HINT;
776
777 /* Tiling modes. */
778 typedef enum _gceTILING
779 {
780     gcvLINEAR = 0,
781     gcvTILED,
782     gcvSUPERTILED,
783     gcvMULTI_TILED,
784     gcvMULTI_SUPERTILED,
785     gcvMINORTILED,
786 }
787 gceTILING;
788
789 /* 2D pattern type. */
790 typedef enum _gce2D_PATTERN
791 {
792     gcv2D_PATTERN_SOLID = 0,
793     gcv2D_PATTERN_MONO,
794     gcv2D_PATTERN_COLOR,
795     gcv2D_PATTERN_INVALID
796 }
797 gce2D_PATTERN;
798
799 /* 2D source type. */
800 typedef enum _gce2D_SOURCE
801 {
802     gcv2D_SOURCE_MASKED = 0,
803     gcv2D_SOURCE_MONO,
804     gcv2D_SOURCE_COLOR,
805     gcv2D_SOURCE_INVALID
806 }
807 gce2D_SOURCE;
808
809 /* Pipes. */
810 typedef enum _gcePIPE_SELECT
811 {
812     gcvPIPE_INVALID = ~0,
813     gcvPIPE_3D      =  0,
814     gcvPIPE_2D
815 }
816 gcePIPE_SELECT;
817
818 /* Hardware type. */
819 typedef enum _gceHARDWARE_TYPE
820 {
821     gcvHARDWARE_INVALID = 0x00,
822     gcvHARDWARE_3D      = 0x01,
823     gcvHARDWARE_2D      = 0x02,
824     gcvHARDWARE_VG      = 0x04,
825
826     gcvHARDWARE_3D2D    = gcvHARDWARE_3D | gcvHARDWARE_2D
827 }
828 gceHARDWARE_TYPE;
829
830 #define gcdCHIP_COUNT               3
831
832 typedef enum _gceMMU_MODE
833 {
834     gcvMMU_MODE_1K,
835     gcvMMU_MODE_4K,
836 } gceMMU_MODE;
837
838 /* User signal command codes. */
839 typedef enum _gceUSER_SIGNAL_COMMAND_CODES
840 {
841     gcvUSER_SIGNAL_CREATE,
842     gcvUSER_SIGNAL_DESTROY,
843     gcvUSER_SIGNAL_SIGNAL,
844     gcvUSER_SIGNAL_WAIT,
845     gcvUSER_SIGNAL_MAP,
846     gcvUSER_SIGNAL_UNMAP,
847 }
848 gceUSER_SIGNAL_COMMAND_CODES;
849
850 /* Sync point command codes. */
851 typedef enum _gceSYNC_POINT_COMMAND_CODES
852 {
853     gcvSYNC_POINT_CREATE,
854     gcvSYNC_POINT_DESTROY,
855     gcvSYNC_POINT_SIGNAL,
856 }
857 gceSYNC_POINT_COMMAND_CODES;
858
859 /* Event locations. */
860 typedef enum _gceKERNEL_WHERE
861 {
862     gcvKERNEL_COMMAND,
863     gcvKERNEL_VERTEX,
864     gcvKERNEL_TRIANGLE,
865     gcvKERNEL_TEXTURE,
866     gcvKERNEL_PIXEL,
867 }
868 gceKERNEL_WHERE;
869
870 #if gcdENABLE_VG
871 /* Hardware blocks. */
872 typedef enum _gceBLOCK
873 {
874         gcvBLOCK_COMMAND,
875         gcvBLOCK_TESSELLATOR,
876         gcvBLOCK_TESSELLATOR2,
877         gcvBLOCK_TESSELLATOR3,
878         gcvBLOCK_RASTER,
879         gcvBLOCK_VG,
880         gcvBLOCK_VG2,
881         gcvBLOCK_VG3,
882         gcvBLOCK_PIXEL,
883
884         /* Number of defined blocks. */
885         gcvBLOCK_COUNT
886 }
887 gceBLOCK;
888 #endif
889
890 /* gcdDUMP message type. */
891 typedef enum _gceDEBUG_MESSAGE_TYPE
892 {
893     gcvMESSAGE_TEXT,
894     gcvMESSAGE_DUMP
895 }
896 gceDEBUG_MESSAGE_TYPE;
897
898 typedef enum _gceSPECIAL_HINT
899 {
900     gceSPECIAL_HINT0,
901     gceSPECIAL_HINT1,
902     gceSPECIAL_HINT2,
903     gceSPECIAL_HINT3,
904     /* For disable dynamic stream/index */
905     gceSPECIAL_HINT4
906 }
907 gceSPECIAL_HINT;
908
909 typedef enum _gceMACHINECODE
910 {
911     gcvMACHINECODE_HOVERJET0       = 0x0,
912     gcvMACHINECODE_HOVERJET1      ,
913
914     gcvMACHINECODE_TAIJI0         ,
915     gcvMACHINECODE_TAIJI1         ,
916     gcvMACHINECODE_TAIJI2         ,
917
918     gcvMACHINECODE_ANTUTU0        ,
919
920     gcvMACHINECODE_GLB27_RELEASE_0,
921     gcvMACHINECODE_GLB27_RELEASE_1,
922
923     gcvMACHINECODE_WAVESCAPE0     ,
924     gcvMACHINECODE_WAVESCAPE1     ,
925
926     gcvMACHINECODE_NENAMARKV2_4_0 ,
927     gcvMACHINECODE_NENAMARKV2_4_1 ,
928
929     gcvMACHINECODE_GLB25_RELEASE_0,
930     gcvMACHINECODE_GLB25_RELEASE_1,
931     gcvMACHINECODE_GLB25_RELEASE_2,
932 }
933 gceMACHINECODE;
934
935
936 /******************************************************************************\
937 ****************************** Object Declarations *****************************
938 \******************************************************************************/
939
940 typedef struct _gckCONTEXT          * gckCONTEXT;
941 typedef struct _gcoCMDBUF           * gcoCMDBUF;
942 typedef struct _gcsSTATE_DELTA      * gcsSTATE_DELTA_PTR;
943 typedef struct _gcsQUEUE            * gcsQUEUE_PTR;
944 typedef struct _gcoQUEUE            * gcoQUEUE;
945 typedef struct _gcsHAL_INTERFACE    * gcsHAL_INTERFACE_PTR;
946 typedef struct _gcs2D_PROFILE       * gcs2D_PROFILE_PTR;
947
948 #if gcdENABLE_VG
949 typedef struct _gcoVGHARDWARE *                 gcoVGHARDWARE;
950 typedef struct _gcoVGBUFFER *           gcoVGBUFFER;
951 typedef struct _gckVGHARDWARE *         gckVGHARDWARE;
952 typedef struct _gcsVGCONTEXT *                  gcsVGCONTEXT_PTR;
953 typedef struct _gcsVGCONTEXT_MAP *              gcsVGCONTEXT_MAP_PTR;
954 typedef struct _gcsVGCMDQUEUE *                 gcsVGCMDQUEUE_PTR;
955 typedef struct _gcsTASK_MASTER_TABLE *  gcsTASK_MASTER_TABLE_PTR;
956 typedef struct _gckVGKERNEL *                   gckVGKERNEL;
957 typedef void *                                          gctTHREAD;
958 #endif
959
960 #ifdef __cplusplus
961 }
962 #endif
963
964 #endif /* __gc_hal_enum_h_ */