1 /****************************************************************************
3 * Copyright (C) 2005 - 2011 by Vivante Corp.
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.
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.
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.
19 *****************************************************************************/
24 #ifndef __gc_hal_enum_h_
25 #define __gc_hal_enum_h_
32 typedef enum _gceCHIPMODEL
56 typedef enum _gceFEATURE
58 gcvFEATURE_PIPE_2D
= 0,
62 gcvFEATURE_HIGH_DYNAMIC_RANGE
,
65 gcvFEATURE_BUFFER_INTERLEAVING
,
66 gcvFEATURE_BYTE_WRITE_2D
,
67 gcvFEATURE_ENDIANNESS_CONFIG
,
68 gcvFEATURE_DUAL_RETURN_BUS
,
69 gcvFEATURE_DEBUG_MODE
,
70 gcvFEATURE_YUY2_RENDER_TARGET
,
71 gcvFEATURE_FRAGMENT_PROCESSOR
,
73 gcvFEATURE_FAST_CLEAR
,
74 gcvFEATURE_YUV420_TILER
,
75 gcvFEATURE_YUY2_AVERAGING
,
78 gcvFEATURE_Z_COMPRESSION
,
80 gcvFEATURE_SPECIAL_ANTI_ALIASING
,
81 gcvFEATURE_SPECIAL_MSAA_LOD
,
82 gcvFEATURE_422_TEXTURE_COMPRESSION
,
83 gcvFEATURE_DXT_TEXTURE_COMPRESSION
,
84 gcvFEATURE_ETC1_TEXTURE_COMPRESSION
,
85 gcvFEATURE_CORRECT_TEXTURE_CONVERTER
,
86 gcvFEATURE_TEXTURE_8K
,
88 gcvFEATURE_YUV420_SCALER
,
89 gcvFEATURE_SHADER_HAS_W
,
90 gcvFEATURE_SHADER_HAS_SIGN
,
91 gcvFEATURE_SHADER_HAS_FLOOR
,
92 gcvFEATURE_SHADER_HAS_CEIL
,
93 gcvFEATURE_SHADER_HAS_SQRT
,
94 gcvFEATURE_SHADER_HAS_TRIG
,
97 gcvFEATURE_CORRECT_STENCIL
,
101 gcvFEATURE_VG_DOUBLE_BUFFER
,
103 gcvFEATURE_SUPER_TILED
,
104 gcvFEATURE_2D_FILTERBLIT_PLUS_ALPHABLEND
,
105 gcvFEATURE_2D_DITHER
,
106 gcvFEATURE_2D_A8_TARGET
,
107 gcvFEATURE_2D_FILTERBLIT_FULLROTATION
,
108 gcvFEATURE_2D_BITBLIT_FULLROTATION
,
109 gcvFEATURE_WIDE_LINE
,
110 gcvFEATURE_FC_FLUSH_STALL
,
111 gcvFEATURE_FULL_DIRECTFB
,
112 gcvFEATURE_HALF_FLOAT_PIPE
,
113 gcvFEATURE_LINE_LOOP
,
114 gcvFEATURE_2D_YUV_BLIT
,
115 gcvFEATURE_2D_TILING
,
116 gcvFEATURE_NON_POWER_OF_TWO
,
117 gcvFEATURE_3D_TEXTURE
,
118 gcvFEATURE_TEXTURE_ARRAY
,
119 gcvFEATURE_TILE_FILLER
,
121 gcvFEATURE_COMPOSITION
,
122 gcvFEATURE_MIXED_STREAMS
,
123 gcvFEATURE_2D_MULTI_SOURCE_BLT
,
124 gcvFEATURE_END_EVENT
,
125 gcvFEATURE_VERTEX_10_10_10_2
,
126 gcvFEATURE_TEXTURE_10_10_10_2
,
127 gcvFEATURE_TEXTURE_ANISOTROPIC_FILTERING
,
128 gcvFEATURE_TEXTURE_FLOAT_HALF_FLOAT
,
129 gcvFEATURE_2D_ROTATION_STALL_FIX
,
133 /* Chip Power Status. */
134 typedef enum _gceCHIPPOWERSTATE
140 gcvPOWER_SUSPEND_ATPOWERON
,
141 gcvPOWER_OFF_ATPOWERON
,
142 gcvPOWER_IDLE_BROADCAST
,
143 gcvPOWER_SUSPEND_BROADCAST
,
144 gcvPOWER_OFF_BROADCAST
,
145 gcvPOWER_OFF_RECOVERY
,
146 #if gcdPOWEROFF_TIMEOUT
147 gcvPOWER_OFF_TIMEOUT
,
153 /* CPU cache operations */
154 typedef enum _gceCACHEOPERATION
156 gcvCACHE_CLEAN
= 0x01,
157 gcvCACHE_INVALIDATE
= 0x02,
158 gcvCACHE_FLUSH
= gcvCACHE_CLEAN
| gcvCACHE_INVALIDATE
163 typedef enum _gceSURF_TYPE
165 gcvSURF_TYPE_UNKNOWN
= 0,
169 gcvSURF_RENDER_TARGET
,
176 gcvSURF_HIERARCHICAL_DEPTH
,
177 gcvSURF_NUM_TYPES
, /* Make sure this is the last one! */
180 gcvSURF_NO_TILE_STATUS
= 0x100,
181 gcvSURF_NO_VIDMEM
= 0x200, /* Used to allocate surfaces with no underlying vidmem node.
182 In Android, vidmem node is allocated by another process. */
183 gcvSURF_CACHEABLE
= 0x400, /* Used to allocate a cacheable surface */
185 gcvSURF_RENDER_TARGET_NO_TILE_STATUS
= gcvSURF_RENDER_TARGET
186 | gcvSURF_NO_TILE_STATUS
,
188 gcvSURF_DEPTH_NO_TILE_STATUS
= gcvSURF_DEPTH
189 | gcvSURF_NO_TILE_STATUS
,
191 /* Supported surface types with no vidmem node. */
192 gcvSURF_BITMAP_NO_VIDMEM
= gcvSURF_BITMAP
195 gcvSURF_TEXTURE_NO_VIDMEM
= gcvSURF_TEXTURE
198 /* Cacheable surface types with no vidmem node. */
199 gcvSURF_CACHEABLE_BITMAP_NO_VIDMEM
= gcvSURF_BITMAP_NO_VIDMEM
202 gcvSURF_CACHEABLE_BITMAP
= gcvSURF_BITMAP
207 typedef enum _gceSURF_COLOR_TYPE
209 gcvSURF_COLOR_UNKNOWN
= 0,
210 gcvSURF_COLOR_LINEAR
= 0x01,
211 gcvSURF_COLOR_ALPHA_PRE
= 0x02,
216 typedef enum _gceSURF_ROTATION
218 gcvSURF_0_DEGREE
= 0,
227 /* Surface formats. */
228 typedef enum _gceSURF_FORMAT
230 /* Unknown format. */
233 /* Palettized formats. */
234 gcvSURF_INDEX1
= 100,
239 gcvSURF_A2R2G2B2
= 200,
257 gcvSURF_X12R12G12B12
,
258 gcvSURF_A12R12G12B12
,
259 gcvSURF_X16R16G16B16
,
260 gcvSURF_A16R16G16B16
,
261 gcvSURF_A32R32G32B32
,
267 gcvSURF_A4B4G4R4
= 300,
275 gcvSURF_X16B16G16R16
,
276 gcvSURF_A16B16G16R16
,
278 gcvSURF_X32B32G32R32
,
279 gcvSURF_A32B32G32R32
,
290 /* Compressed formats. */
325 /* Luminance formats. */
333 /* Alpha/Luminance formats. */
342 gcvSURF_L6V5U5
= 1000,
348 gcvSURF_Q16W16V16U16
,
350 /* R/RG/RA formats. */
367 /* Floating point formats. */
373 gcvSURF_X16B16G16R16F
,
374 gcvSURF_A16B16G16R16F
,
380 gcvSURF_X32B32G32R32F
,
381 gcvSURF_A32B32G32R32F
,
394 /* Pixel swizzle modes. */
395 typedef enum _gceSURF_SWIZZLE
397 gcvSURF_NOSWIZZLE
= 0,
405 /* Transparency modes. */
406 typedef enum _gceSURF_TRANSPARENCY
408 /* Valid only for PE 1.0 */
410 gcvSURF_SOURCE_MATCH
,
412 gcvSURF_PATTERN_MASK
,
414 gceSURF_TRANSPARENCY
;
416 /* Surface Alignment. */
417 typedef enum _gceSURF_ALIGNMENT
423 gcvSURF_SPLIT_SUPER_TILED
,
427 /* Transparency modes. */
428 typedef enum _gce2D_TRANSPARENCY
430 /* Valid only for PE 2.0 */
437 /* Mono packing modes. */
438 typedef enum _gceSURF_MONOPACK
447 /* Blending modes. */
448 typedef enum _gceSURF_BLEND_MODE
450 /* Porter-Duff blending modes. */
452 gcvBLEND_CLEAR
= 0, /* 0 0 */
453 gcvBLEND_SRC
, /* 1 0 */
454 gcvBLEND_DST
, /* 0 1 */
455 gcvBLEND_SRC_OVER_DST
, /* 1 1 - Asrc */
456 gcvBLEND_DST_OVER_SRC
, /* 1 - Adst 1 */
457 gcvBLEND_SRC_IN_DST
, /* Adst 0 */
458 gcvBLEND_DST_IN_SRC
, /* 0 Asrc */
459 gcvBLEND_SRC_OUT_DST
, /* 1 - Adst 0 */
460 gcvBLEND_DST_OUT_SRC
, /* 0 1 - Asrc */
461 gcvBLEND_SRC_ATOP_DST
, /* Adst 1 - Asrc */
462 gcvBLEND_DST_ATOP_SRC
, /* 1 - Adst Asrc */
463 gcvBLEND_SRC_XOR_DST
, /* 1 - Adst 1 - Asrc */
465 /* Special blending modes. */
466 gcvBLEND_SET
, /* DST = 1 */
467 gcvBLEND_SUB
/* DST = DST * (1 - SRC) */
471 /* Per-pixel alpha modes. */
472 typedef enum _gceSURF_PIXEL_ALPHA_MODE
474 gcvSURF_PIXEL_ALPHA_STRAIGHT
= 0,
475 gcvSURF_PIXEL_ALPHA_INVERSED
477 gceSURF_PIXEL_ALPHA_MODE
;
479 /* Global alpha modes. */
480 typedef enum _gceSURF_GLOBAL_ALPHA_MODE
482 gcvSURF_GLOBAL_ALPHA_OFF
= 0,
483 gcvSURF_GLOBAL_ALPHA_ON
,
484 gcvSURF_GLOBAL_ALPHA_SCALE
486 gceSURF_GLOBAL_ALPHA_MODE
;
488 /* Color component modes for alpha blending. */
489 typedef enum _gceSURF_PIXEL_COLOR_MODE
491 gcvSURF_COLOR_STRAIGHT
= 0,
492 gcvSURF_COLOR_MULTIPLY
494 gceSURF_PIXEL_COLOR_MODE
;
496 /* Color component modes for alpha blending. */
497 typedef enum _gce2D_PIXEL_COLOR_MULTIPLY_MODE
499 gcv2D_COLOR_MULTIPLY_DISABLE
= 0,
500 gcv2D_COLOR_MULTIPLY_ENABLE
502 gce2D_PIXEL_COLOR_MULTIPLY_MODE
;
504 /* Color component modes for alpha blending. */
505 typedef enum _gce2D_GLOBAL_COLOR_MULTIPLY_MODE
507 gcv2D_GLOBAL_COLOR_MULTIPLY_DISABLE
= 0,
508 gcv2D_GLOBAL_COLOR_MULTIPLY_ALPHA
,
509 gcv2D_GLOBAL_COLOR_MULTIPLY_COLOR
511 gce2D_GLOBAL_COLOR_MULTIPLY_MODE
;
513 /* Alpha blending factor modes. */
514 typedef enum _gceSURF_BLEND_FACTOR_MODE
516 gcvSURF_BLEND_ZERO
= 0,
518 gcvSURF_BLEND_STRAIGHT
,
519 gcvSURF_BLEND_INVERSED
,
521 gcvSURF_BLEND_COLOR_INVERSED
,
522 gcvSURF_BLEND_SRC_ALPHA_SATURATED
,
523 gcvSURF_BLEND_STRAIGHT_NO_CROSS
,
524 gcvSURF_BLEND_INVERSED_NO_CROSS
,
525 gcvSURF_BLEND_COLOR_NO_CROSS
,
526 gcvSURF_BLEND_COLOR_INVERSED_NO_CROSS
,
527 gcvSURF_BLEND_SRC_ALPHA_SATURATED_CROSS
529 gceSURF_BLEND_FACTOR_MODE
;
531 /* Alpha blending porter duff rules. */
532 typedef enum _gce2D_PORTER_DUFF_RULE
548 gce2D_PORTER_DUFF_RULE
;
550 /* Alpha blending factor modes. */
551 typedef enum _gce2D_YUV_COLOR_MODE
556 gce2D_YUV_COLOR_MODE
;
558 /* 2D Rotation and flipping. */
559 typedef enum _gce2D_ORIENTATION
570 typedef enum _gce2D_COMMAND
578 gcv2D_MULTI_SOURCE_BLT
,
582 #ifndef VIVANTE_NO_3D
583 /* Texture functions. */
584 typedef enum _gceTEXTURE_FUNCTION
586 gcvTEXTURE_DUMMY
= 0,
587 gcvTEXTURE_REPLACE
= 0,
590 gcvTEXTURE_ADD_SIGNED
,
591 gcvTEXTURE_INTERPOLATE
,
597 /* Texture sources. */
598 typedef enum _gceTEXTURE_SOURCE
600 gcvCOLOR_FROM_TEXTURE
= 0,
601 gcvCOLOR_FROM_CONSTANT_COLOR
,
602 gcvCOLOR_FROM_PRIMARY_COLOR
,
603 gcvCOLOR_FROM_PREVIOUS_COLOR
607 /* Texture source channels. */
608 typedef enum _gceTEXTURE_CHANNEL
611 gcvFROM_ONE_MINUS_COLOR
,
613 gcvFROM_ONE_MINUS_ALPHA
616 #endif /* VIVANTE_NO_3D */
619 typedef enum _gceFILTER_TYPE
627 /* Filter pass types. */
628 typedef enum _gceFILTER_PASS_TYPE
630 gcvFILTER_HOR_PASS
= 0,
636 typedef enum _gceENDIAN_HINT
638 gcvENDIAN_NO_SWAP
= 0,
645 typedef enum _gceTILING
655 /* 2D pattern type. */
656 typedef enum _gce2D_PATTERN
658 gcv2D_PATTERN_SOLID
= 0,
661 gcv2D_PATTERN_INVALID
665 /* 2D source type. */
666 typedef enum _gce2D_SOURCE
668 gcv2D_SOURCE_MASKED
= 0,
676 typedef enum _gcePIPE_SELECT
678 gcvPIPE_INVALID
= ~0,
685 typedef enum _gceHARDWARE_TYPE
687 gcvHARDWARE_INVALID
= 0x00,
688 gcvHARDWARE_3D
= 0x01,
689 gcvHARDWARE_2D
= 0x02,
690 gcvHARDWARE_VG
= 0x04,
692 gcvHARDWARE_3D2D
= gcvHARDWARE_3D
| gcvHARDWARE_2D
696 #define gcdCHIP_COUNT 3
698 typedef enum _gceMMU_MODE
704 /* User signal command codes. */
705 typedef enum _gceUSER_SIGNAL_COMMAND_CODES
707 gcvUSER_SIGNAL_CREATE
,
708 gcvUSER_SIGNAL_DESTROY
,
709 gcvUSER_SIGNAL_SIGNAL
,
712 gcvUSER_SIGNAL_UNMAP
,
714 gceUSER_SIGNAL_COMMAND_CODES
;
716 /* Event locations. */
717 typedef enum _gceKERNEL_WHERE
728 /* Hardware blocks. */
729 typedef enum _gceBLOCK
732 gcvBLOCK_TESSELLATOR
,
733 gcvBLOCK_TESSELLATOR2
,
734 gcvBLOCK_TESSELLATOR3
,
741 /* Number of defined blocks. */
747 /* gcdDUMP message type. */
748 typedef enum _gceDEBUG_MESSAGE_TYPE
753 gceDEBUG_MESSAGE_TYPE
;
755 /******************************************************************************\
756 ****************************** Object Declarations *****************************
757 \******************************************************************************/
759 typedef struct _gckCONTEXT
* gckCONTEXT
;
760 typedef struct _gcoCMDBUF
* gcoCMDBUF
;
761 typedef struct _gcsSTATE_DELTA
* gcsSTATE_DELTA_PTR
;
762 typedef struct _gcsQUEUE
* gcsQUEUE_PTR
;
763 typedef struct _gcoQUEUE
* gcoQUEUE
;
764 typedef struct _gcsHAL_INTERFACE
* gcsHAL_INTERFACE_PTR
;
765 typedef struct _gcs2D_PROFILE
* gcs2D_PROFILE_PTR
;
768 typedef struct _gcoVGHARDWARE
* gcoVGHARDWARE
;
769 typedef struct _gcoVGBUFFER
* gcoVGBUFFER
;
770 typedef struct _gckVGHARDWARE
* gckVGHARDWARE
;
771 typedef struct _gcsVGCONTEXT
* gcsVGCONTEXT_PTR
;
772 typedef struct _gcsVGCONTEXT_MAP
* gcsVGCONTEXT_MAP_PTR
;
773 typedef struct _gcsVGCMDQUEUE
* gcsVGCMDQUEUE_PTR
;
774 typedef struct _gcsTASK_MASTER_TABLE
* gcsTASK_MASTER_TABLE_PTR
;
775 typedef struct _gckVGKERNEL
* gckVGKERNEL
;
776 typedef void * gctTHREAD
;
783 #endif /* __gc_hal_enum_h_ */