1 /****************************************************************************
3 * Copyright (C) 2005 - 2013 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 *****************************************************************************/
22 #ifndef __gc_hal_enum_h_
23 #define __gc_hal_enum_h_
30 typedef enum _gceCHIPMODEL
55 typedef enum _gceFEATURE
57 gcvFEATURE_PIPE_2D = 0,
61 gcvFEATURE_HIGH_DYNAMIC_RANGE,
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,
72 gcvFEATURE_FAST_CLEAR,
73 gcvFEATURE_YUV420_TILER,
74 gcvFEATURE_YUY2_AVERAGING,
77 gcvFEATURE_Z_COMPRESSION,
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,
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,
96 gcvFEATURE_CORRECT_STENCIL,
100 gcvFEATURE_VG_DOUBLE_BUFFER,
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,
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,
151 gcvFEATURE_2D_MIRROR_EXTENSION,
152 gcvFEATURE_ELEMENT_INDEX_UINT,
156 /* Chip Power Status. */
157 typedef enum _gceCHIPPOWERSTATE
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,
174 /* CPU cache operations */
175 typedef enum _gceCACHEOPERATION
177 gcvCACHE_CLEAN = 0x01,
178 gcvCACHE_INVALIDATE = 0x02,
179 gcvCACHE_FLUSH = gcvCACHE_CLEAN | gcvCACHE_INVALIDATE,
180 gcvCACHE_MEMORY_BARRIER = 0x04
185 typedef enum _gceSURF_TYPE
187 gcvSURF_TYPE_UNKNOWN = 0,
191 gcvSURF_RENDER_TARGET,
198 gcvSURF_HIERARCHICAL_DEPTH,
199 gcvSURF_NUM_TYPES, /* Make sure this is the last one! */
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 */
209 gcvSURF_TILE_STATUS_DIRTY = 0x1000, /* Init tile status to all dirty */
211 gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET
212 | gcvSURF_NO_TILE_STATUS,
214 gcvSURF_RENDER_TARGET_TS_DIRTY = gcvSURF_RENDER_TARGET
215 | gcvSURF_TILE_STATUS_DIRTY,
217 gcvSURF_DEPTH_NO_TILE_STATUS = gcvSURF_DEPTH
218 | gcvSURF_NO_TILE_STATUS,
220 /* Supported surface types with no vidmem node. */
221 gcvSURF_BITMAP_NO_VIDMEM = gcvSURF_BITMAP
224 gcvSURF_TEXTURE_NO_VIDMEM = gcvSURF_TEXTURE
227 /* Cacheable surface types with no vidmem node. */
228 gcvSURF_CACHEABLE_BITMAP_NO_VIDMEM = gcvSURF_BITMAP_NO_VIDMEM
231 gcvSURF_CACHEABLE_BITMAP = gcvSURF_BITMAP
234 #if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST
235 gcvSURF_FLIP_BITMAP = gcvSURF_BITMAP
241 typedef enum _gceSURF_USAGE
243 gcvSURF_USAGE_UNKNOWN,
244 gcvSURF_USAGE_RESOLVE_AFTER_CPU,
245 gcvSURF_USAGE_RESOLVE_AFTER_3D
249 typedef enum _gceSURF_COLOR_TYPE
251 gcvSURF_COLOR_UNKNOWN = 0,
252 gcvSURF_COLOR_LINEAR = 0x01,
253 gcvSURF_COLOR_ALPHA_PRE = 0x02,
258 typedef enum _gceSURF_ROTATION
260 gcvSURF_0_DEGREE = 0,
269 typedef enum _gceMIPMAP_IMAGE_FORMAT
271 gcvUNKNOWN_MIPMAP_IMAGE_FORMAT = -2
273 gceMIPMAP_IMAGE_FORMAT;
276 /* Surface formats. */
277 typedef enum _gceSURF_FORMAT
279 /* Unknown format. */
282 /* Palettized formats. */
283 gcvSURF_INDEX1 = 100,
288 gcvSURF_A2R2G2B2 = 200,
306 gcvSURF_X12R12G12B12,
307 gcvSURF_A12R12G12B12,
308 gcvSURF_X16R16G16B16,
309 gcvSURF_A16R16G16B16,
310 gcvSURF_A32R32G32B32,
316 gcvSURF_A4B4G4R4 = 300,
324 gcvSURF_X16B16G16R16,
325 gcvSURF_A16B16G16R16,
327 gcvSURF_X32B32G32R32,
328 gcvSURF_A32B32G32R32,
339 /* Compressed formats. */
348 gcvSURF_SIGNED_R11_EAC,
350 gcvSURF_SIGNED_RG11_EAC,
353 gcvSURF_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
354 gcvSURF_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
355 gcvSURF_RGBA8_ETC2_EAC,
356 gcvSURF_SRGB8_ALPHA8_ETC2_EAC,
384 /* Luminance formats. */
392 /* Alpha/Luminance formats. */
401 gcvSURF_L6V5U5 = 1000,
407 gcvSURF_Q16W16V16U16,
409 /* R/RG/RA formats. */
427 /* Floating point formats. */
433 gcvSURF_X16B16G16R16F,
434 gcvSURF_A16B16G16R16F,
440 gcvSURF_X32B32G32R32F,
441 gcvSURF_A32B32G32R32F,
454 /* Pixel swizzle modes. */
455 typedef enum _gceSURF_SWIZZLE
457 gcvSURF_NOSWIZZLE = 0,
465 /* Transparency modes. */
466 typedef enum _gceSURF_TRANSPARENCY
468 /* Valid only for PE 1.0 */
470 gcvSURF_SOURCE_MATCH,
472 gcvSURF_PATTERN_MASK,
474 gceSURF_TRANSPARENCY;
476 /* Surface Alignment. */
477 typedef enum _gceSURF_ALIGNMENT
483 gcvSURF_SPLIT_SUPER_TILED,
488 /* Surface Addressing. */
489 typedef enum _gceSURF_ADDRESSING
491 gcvSURF_NO_STRIDE_TILED = 0,
492 gcvSURF_NO_STRIDE_LINEAR,
493 gcvSURF_STRIDE_TILED,
494 gcvSURF_STRIDE_LINEAR
498 /* Transparency modes. */
499 typedef enum _gce2D_TRANSPARENCY
501 /* Valid only for PE 2.0 */
508 /* Mono packing modes. */
509 typedef enum _gceSURF_MONOPACK
518 /* Blending modes. */
519 typedef enum _gceSURF_BLEND_MODE
521 /* Porter-Duff blending modes. */
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 */
536 /* Special blending modes. */
537 gcvBLEND_SET, /* DST = 1 */
538 gcvBLEND_SUB /* DST = DST * (1 - SRC) */
542 /* Per-pixel alpha modes. */
543 typedef enum _gceSURF_PIXEL_ALPHA_MODE
545 gcvSURF_PIXEL_ALPHA_STRAIGHT = 0,
546 gcvSURF_PIXEL_ALPHA_INVERSED
548 gceSURF_PIXEL_ALPHA_MODE;
550 /* Global alpha modes. */
551 typedef enum _gceSURF_GLOBAL_ALPHA_MODE
553 gcvSURF_GLOBAL_ALPHA_OFF = 0,
554 gcvSURF_GLOBAL_ALPHA_ON,
555 gcvSURF_GLOBAL_ALPHA_SCALE
557 gceSURF_GLOBAL_ALPHA_MODE;
559 /* Color component modes for alpha blending. */
560 typedef enum _gceSURF_PIXEL_COLOR_MODE
562 gcvSURF_COLOR_STRAIGHT = 0,
563 gcvSURF_COLOR_MULTIPLY
565 gceSURF_PIXEL_COLOR_MODE;
567 /* Color component modes for alpha blending. */
568 typedef enum _gce2D_PIXEL_COLOR_MULTIPLY_MODE
570 gcv2D_COLOR_MULTIPLY_DISABLE = 0,
571 gcv2D_COLOR_MULTIPLY_ENABLE
573 gce2D_PIXEL_COLOR_MULTIPLY_MODE;
575 /* Color component modes for alpha blending. */
576 typedef enum _gce2D_GLOBAL_COLOR_MULTIPLY_MODE
578 gcv2D_GLOBAL_COLOR_MULTIPLY_DISABLE = 0,
579 gcv2D_GLOBAL_COLOR_MULTIPLY_ALPHA,
580 gcv2D_GLOBAL_COLOR_MULTIPLY_COLOR
582 gce2D_GLOBAL_COLOR_MULTIPLY_MODE;
584 /* Alpha blending factor modes. */
585 typedef enum _gceSURF_BLEND_FACTOR_MODE
587 gcvSURF_BLEND_ZERO = 0,
589 gcvSURF_BLEND_STRAIGHT,
590 gcvSURF_BLEND_INVERSED,
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
600 gceSURF_BLEND_FACTOR_MODE;
602 /* Alpha blending porter duff rules. */
603 typedef enum _gce2D_PORTER_DUFF_RULE
619 gce2D_PORTER_DUFF_RULE;
621 /* Alpha blending factor modes. */
622 typedef enum _gce2D_YUV_COLOR_MODE
627 gce2D_YUV_COLOR_MODE;
629 /* 2D Rotation and flipping. */
630 typedef enum _gce2D_ORIENTATION
641 typedef enum _gce2D_COMMAND
649 gcv2D_MULTI_SOURCE_BLT,
653 typedef enum _gce2D_TILE_STATUS_CONFIG
655 gcv2D_TSC_DISABLE = 0,
656 gcv2D_TSC_ENABLE = 0x00000001,
657 gcv2D_TSC_COMPRESSED = 0x00000002,
658 gcv2D_TSC_DOWN_SAMPLER = 0x00000004,
660 gce2D_TILE_STATUS_CONFIG;
662 typedef enum _gce2D_QUERY
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,
671 typedef enum _gce2D_STATE
673 gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE = 1,
677 #ifndef VIVANTE_NO_3D
678 /* Texture functions. */
679 typedef enum _gceTEXTURE_FUNCTION
681 gcvTEXTURE_DUMMY = 0,
682 gcvTEXTURE_REPLACE = 0,
685 gcvTEXTURE_ADD_SIGNED,
686 gcvTEXTURE_INTERPOLATE,
692 /* Texture sources. */
693 typedef enum _gceTEXTURE_SOURCE
695 gcvCOLOR_FROM_TEXTURE = 0,
696 gcvCOLOR_FROM_CONSTANT_COLOR,
697 gcvCOLOR_FROM_PRIMARY_COLOR,
698 gcvCOLOR_FROM_PREVIOUS_COLOR
702 /* Texture source channels. */
703 typedef enum _gceTEXTURE_CHANNEL
706 gcvFROM_ONE_MINUS_COLOR,
708 gcvFROM_ONE_MINUS_ALPHA
711 #endif /* VIVANTE_NO_3D */
714 typedef enum _gceFILTER_TYPE
722 /* Filter pass types. */
723 typedef enum _gceFILTER_PASS_TYPE
725 gcvFILTER_HOR_PASS = 0,
731 typedef enum _gceENDIAN_HINT
733 gcvENDIAN_NO_SWAP = 0,
740 typedef enum _gceTILING
751 /* 2D pattern type. */
752 typedef enum _gce2D_PATTERN
754 gcv2D_PATTERN_SOLID = 0,
757 gcv2D_PATTERN_INVALID
761 /* 2D source type. */
762 typedef enum _gce2D_SOURCE
764 gcv2D_SOURCE_MASKED = 0,
772 typedef enum _gcePIPE_SELECT
774 gcvPIPE_INVALID = ~0,
781 typedef enum _gceHARDWARE_TYPE
783 gcvHARDWARE_INVALID = 0x00,
784 gcvHARDWARE_3D = 0x01,
785 gcvHARDWARE_2D = 0x02,
786 gcvHARDWARE_VG = 0x04,
788 gcvHARDWARE_3D2D = gcvHARDWARE_3D | gcvHARDWARE_2D
792 #define gcdCHIP_COUNT 3
794 typedef enum _gceMMU_MODE
800 /* User signal command codes. */
801 typedef enum _gceUSER_SIGNAL_COMMAND_CODES
803 gcvUSER_SIGNAL_CREATE,
804 gcvUSER_SIGNAL_DESTROY,
805 gcvUSER_SIGNAL_SIGNAL,
808 gcvUSER_SIGNAL_UNMAP,
810 gceUSER_SIGNAL_COMMAND_CODES;
812 /* Event locations. */
813 typedef enum _gceKERNEL_WHERE
824 /* Hardware blocks. */
825 typedef enum _gceBLOCK
828 gcvBLOCK_TESSELLATOR,
829 gcvBLOCK_TESSELLATOR2,
830 gcvBLOCK_TESSELLATOR3,
837 /* Number of defined blocks. */
843 /* gcdDUMP message type. */
844 typedef enum _gceDEBUG_MESSAGE_TYPE
849 gceDEBUG_MESSAGE_TYPE;
851 /******************************************************************************\
852 ****************************** Object Declarations *****************************
853 \******************************************************************************/
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;
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;
879 #endif /* __gc_hal_enum_h_ */