blob: 08ed52a1131244e0541c3b8ed1c9e89187a98441 [file] [log] [blame] [edit]
/****************************************************************************
*
* Copyright (c) 2005 - 2014 by Vivante Corp. All rights reserved.
*
* The material in this file is confidential and contains trade secrets
* of Vivante Corporation. This is proprietary information owned by
* Vivante Corporation. No part of this work may be disclosed,
* reproduced, copied, transmitted, or used in any way for any purpose,
* without the express written permission of Vivante Corporation.
*
*****************************************************************************/
#ifndef __gc_hal_enum_h_
#define __gc_hal_enum_h_
#ifdef __cplusplus
extern "C" {
#endif
/* Chip models. */
typedef enum _gceCHIPMODEL
{
gcv200 = 0x0200,
gcv300 = 0x0300,
gcv320 = 0x0320,
gcv328 = 0x0328,
gcv350 = 0x0350,
gcv355 = 0x0355,
gcv400 = 0x0400,
gcv410 = 0x0410,
gcv420 = 0x0420,
gcv428 = 0x0428,
gcv450 = 0x0450,
gcv500 = 0x0500,
gcv520 = 0x0520,
gcv530 = 0x0530,
gcv600 = 0x0600,
gcv700 = 0x0700,
gcv800 = 0x0800,
gcv860 = 0x0860,
gcv880 = 0x0880,
gcv1000 = 0x1000,
gcv1500 = 0x1500,
gcv2000 = 0x2000,
gcv2100 = 0x2100,
gcv2200 = 0x2200,
gcv2500 = 0x2500,
gcv3000 = 0x3000,
gcv4000 = 0x4000,
gcv5000 = 0x5000,
gcv5200 = 0x5200,
gcv6400 = 0x6400,
}
gceCHIPMODEL;
/* Chip features. */
typedef enum _gceFEATURE
{
gcvFEATURE_PIPE_2D = 0,
gcvFEATURE_PIPE_3D,
gcvFEATURE_PIPE_VG,
gcvFEATURE_DC,
gcvFEATURE_HIGH_DYNAMIC_RANGE,
gcvFEATURE_MODULE_CG,
gcvFEATURE_MIN_AREA,
gcvFEATURE_BUFFER_INTERLEAVING,
gcvFEATURE_BYTE_WRITE_2D,
gcvFEATURE_ENDIANNESS_CONFIG,
gcvFEATURE_DUAL_RETURN_BUS,
gcvFEATURE_DEBUG_MODE,
gcvFEATURE_YUY2_RENDER_TARGET,
gcvFEATURE_FRAGMENT_PROCESSOR,
gcvFEATURE_2DPE20,
gcvFEATURE_FAST_CLEAR,
gcvFEATURE_YUV420_TILER,
gcvFEATURE_YUY2_AVERAGING,
gcvFEATURE_FLIP_Y,
gcvFEATURE_EARLY_Z,
gcvFEATURE_COMPRESSION,
gcvFEATURE_MSAA,
gcvFEATURE_SPECIAL_ANTI_ALIASING,
gcvFEATURE_SPECIAL_MSAA_LOD,
gcvFEATURE_422_TEXTURE_COMPRESSION,
gcvFEATURE_DXT_TEXTURE_COMPRESSION,
gcvFEATURE_ETC1_TEXTURE_COMPRESSION,
gcvFEATURE_CORRECT_TEXTURE_CONVERTER,
gcvFEATURE_TEXTURE_8K,
gcvFEATURE_SCALER,
gcvFEATURE_YUV420_SCALER,
gcvFEATURE_SHADER_HAS_W,
gcvFEATURE_SHADER_HAS_SIGN,
gcvFEATURE_SHADER_HAS_FLOOR,
gcvFEATURE_SHADER_HAS_CEIL,
gcvFEATURE_SHADER_HAS_SQRT,
gcvFEATURE_SHADER_HAS_TRIG,
gcvFEATURE_VAA,
gcvFEATURE_HZ,
gcvFEATURE_CORRECT_STENCIL,
gcvFEATURE_VG20,
gcvFEATURE_VG_FILTER,
gcvFEATURE_VG21,
gcvFEATURE_VG_DOUBLE_BUFFER,
gcvFEATURE_MC20,
gcvFEATURE_SUPER_TILED,
gcvFEATURE_FAST_CLEAR_FLUSH,
gcvFEATURE_2D_FILTERBLIT_PLUS_ALPHABLEND,
gcvFEATURE_2D_DITHER,
gcvFEATURE_2D_A8_TARGET,
gcvFEATURE_2D_A8_NO_ALPHA,
gcvFEATURE_2D_FILTERBLIT_FULLROTATION,
gcvFEATURE_2D_BITBLIT_FULLROTATION,
gcvFEATURE_WIDE_LINE,
gcvFEATURE_FC_FLUSH_STALL,
gcvFEATURE_FULL_DIRECTFB,
gcvFEATURE_HALF_FLOAT_PIPE,
gcvFEATURE_LINE_LOOP,
gcvFEATURE_2D_YUV_BLIT,
gcvFEATURE_2D_TILING,
gcvFEATURE_NON_POWER_OF_TWO,
gcvFEATURE_3D_TEXTURE,
gcvFEATURE_TEXTURE_ARRAY,
gcvFEATURE_TILE_FILLER,
gcvFEATURE_LOGIC_OP,
gcvFEATURE_COMPOSITION,
gcvFEATURE_MIXED_STREAMS,
gcvFEATURE_2D_MULTI_SOURCE_BLT,
gcvFEATURE_END_EVENT,
gcvFEATURE_VERTEX_10_10_10_2,
gcvFEATURE_TEXTURE_10_10_10_2,
gcvFEATURE_TEXTURE_ANISOTROPIC_FILTERING,
gcvFEATURE_TEXTURE_FLOAT_HALF_FLOAT,
gcvFEATURE_2D_ROTATION_STALL_FIX,
gcvFEATURE_2D_MULTI_SOURCE_BLT_EX,
gcvFEATURE_BUG_FIXES10,
gcvFEATURE_2D_MINOR_TILING,
/* Supertiled compressed textures are supported. */
gcvFEATURE_TEX_COMPRRESSION_SUPERTILED,
gcvFEATURE_FAST_MSAA,
gcvFEATURE_BUG_FIXED_INDEXED_TRIANGLE_STRIP,
gcvFEATURE_TEXTURE_TILE_STATUS_READ,
gcvFEATURE_DEPTH_BIAS_FIX,
gcvFEATURE_RECT_PRIMITIVE,
gcvFEATURE_BUG_FIXES11,
gcvFEATURE_SUPERTILED_TEXTURE,
gcvFEATURE_2D_NO_COLORBRUSH_INDEX8,
gcvFEATURE_RS_YUV_TARGET,
gcvFEATURE_2D_FC_SOURCE,
gcvFEATURE_2D_CC_NOAA_SOURCE,
gcvFEATURE_PE_DITHER_FIX,
gcvFEATURE_2D_YUV_SEPARATE_STRIDE,
gcvFEATURE_FRUSTUM_CLIP_FIX,
gcvFEATURE_TEXTURE_SWIZZLE,
gcvFEATURE_PRIMITIVE_RESTART,
gcvFEATURE_TEXTURE_LINEAR,
gcvFEATURE_TEXTURE_YUV_ASSEMBLER,
gcvFEATURE_LINEAR_RENDER_TARGET,
gcvFEATURE_SHADER_HAS_ATOMIC,
gcvFEATURE_SHADER_HAS_INSTRUCTION_CACHE,
gcvFEATURE_SHADER_ENHANCEMENTS2,
gcvFEATURE_BUG_FIXES7,
gcvFEATURE_SHADER_HAS_RTNE,
gcvFEATURE_SHADER_HAS_EXTRA_INSTRUCTIONS2,
gcvFEATURE_SHADER_ENHANCEMENTS3,
gcvFEATURE_DYNAMIC_FREQUENCY_SCALING,
gcvFEATURE_SINGLE_BUFFER,
gcvFEATURE_OCCLUSION_QUERY,
gcvFEATURE_2D_GAMMA,
gcvFEATURE_2D_COLOR_SPACE_CONVERSION,
gcvFEATURE_2D_SUPER_TILE_VERSION,
gcvFEATURE_HALTI0,
gcvFEATURE_HALTI1,
gcvFEATURE_HALTI2,
gcvFEATURE_2D_MIRROR_EXTENSION,
gcvFEATURE_TEXTURE_ASTC,
gcvFEATURE_2D_SUPER_TILE_V1,
gcvFEATURE_2D_SUPER_TILE_V2,
gcvFEATURE_2D_SUPER_TILE_V3,
gcvFEATURE_2D_MULTI_SOURCE_BLT_EX2,
gcvFEATURE_NEW_RA,
gcvFEATURE_BUG_FIXED_IMPLICIT_PRIMITIVE_RESTART,
gcvFEATURE_PE_MULTI_RT_BLEND_ENABLE_CONTROL,
gcvFEATURE_SMALL_MSAA, /* An upgraded version of Fast MSAA */
gcvFEATURE_VERTEX_INST_ID_AS_ATTRIBUTE,
gcvFEATURE_DUAL_16,
gcvFEATURE_BRANCH_ON_IMMEDIATE_REG,
gcvFEATURE_2D_COMPRESSION,
gcvFEATURE_TPC_COMPRESSION,
gcvFEATURE_2D_OPF_YUV_OUTPUT,
gcvFEATURE_2D_FILTERBLIT_A8_ALPHA,
gcvFEATURE_2D_MULTI_SRC_BLT_TO_UNIFIED_DST_RECT,
gcvFEATURE_V2_COMPRESSION_Z16_FIX,
gcvFEATURE_VERTEX_INST_ID_AS_INTEGER,
gcvFEATURE_2D_YUV_MODE,
gcvFEATURE_ACE,
gcvFEATURE_COLOR_COMPRESSION,
gcvFEATURE_32BPP_COMPONENT_TEXTURE_CHANNEL_SWIZZLE,
gcvFEATURE_64BPP_HW_CLEAR_SUPPORT,
gcvFEATURE_TX_LERP_PRECISION_FIX,
gcvFEATURE_COMPRESSION_V2,
gcvFEATURE_MMU,
gcvFEATURE_COMPRESSION_V3,
gcvFEATURE_TX_DECOMPRESSOR,
gcvFEATURE_MRT_TILE_STATUS_BUFFER,
gcvFEATURE_COMPRESSION_V1,
gcvFEATURE_V1_COMPRESSION_Z16_DECOMPRESS_FIX,
gcvFEATURE_RTT,
gcvFEATURE_GENERICS,
gcvFEATURE_2D_ONE_PASS_FILTER,
gcvFEATURE_2D_ONE_PASS_FILTER_TAP,
gcvFEATURE_2D_POST_FLIP,
gcvFEATURE_2D_PIXEL_ALIGNMENT,
gcvFEATURE_CORRECT_AUTO_DISABLE_COUNT,
gcvFEATURE_CORRECT_AUTO_DISABLE_COUNT_WIDTH,
gcvFEATURE_HALTI3,
gcvFEATURE_EEZ,
gcvFEATURE_INTEGER_PIPE_FIX,
gcvFEATURE_PSOUTPUT_MAPPING,
gcvFEATURE_8K_RT_FIX,
gcvFEATURE_TX_TILE_STATUS_MAPPING,
gcvFEATURE_SRGB_RT_SUPPORT,
gcvFEATURE_UNIFORM_APERTURE,
gcvFEATURE_TEXTURE_16K,
gcvFEATURE_PA_FARZCLIPPING_FIX,
gcvFEATURE_PE_DITHER_COLORMASK_FIX,
gcvFEATURE_ZSCALE_FIX,
gcvFEATURE_MULTI_PIXELPIPES,
gcvFEATURE_PIPE_CL,
gcvFEATURE_BUG_FIXES18,
gcvFEATURE_UNIFIED_SAMPLERS,
gcvFEATURE_CL_PS_WALKER,
gcvFEATURE_NEW_HZ,
gcvFEATURE_TX_FRAC_PRECISION_6BIT,
gcvFEATURE_SH_INSTRUCTION_PREFETCH,
gcvFEATURE_PROBE,
gcvFEATURE_BUG_FIXES8,
gcvFEATURE_2D_ALL_QUAD,
gcvFEATURE_SINGLE_PIPE_HALTI1,
gcvFEATURE_BLOCK_SIZE_16x16,
gcvFEATURE_NO_USER_CSC,
gcvFEATURE_ANDROID_ONLY,
gcvFEATURE_HAS_PRODUCTID,
gcvFEATURE_V2_MSAA_COMP_FIX,
gcvFEATURE_S8_ONLY_RENDERING,
gcvFEATURE_SEPARATE_SRC_DST,
gcvFEATURE_FE_START_VERTEX_SUPPORT,
gcvFEATURE_RS_DEPTHSTENCIL_NATIVE_SUPPORT,
gcvFEATURE_ZERO_ATTRIB_SUPPORT,
/* Insert features above this comment only. */
gcvFEATURE_COUNT /* Not a feature. */
}
gceFEATURE;
/* Chip SWWA. */
typedef enum _gceSWWA
{
gcvSWWA_601 = 0,
gcvSWWA_706,
gcvSWWA_1163,
gcvSWWA_1165,
/* Insert SWWA above this comment only. */
gcvSWWA_COUNT /* Not a SWWA. */
}
gceSWWA;
/* Option Set*/
typedef enum _gceOPITON
{
/* HW setting we take PREFER */
gcvOPTION_PREFER_MULTIPIPE_RS = 0,
gcvOPTION_PREFER_ZCONVERT_BYPASS =1,
gcvOPTION_HW_NULL = 50,
gcvOPTION_PRINT_OPTION = 51,
gcvOPTION_FBO_PREFER_MEM = 80,
/* Insert option above this comment only */
gcvOPTION_COUNT /* Not a OPTION*/
}
gceOPTION;
typedef enum _gceFRAMEINFO
{
gcvFRAMEINFO_FRAME_NUM = 0,
gcvFRAMEINFO_DRAW_NUM = 1,
gcvFRAMEINFO_DRAW_DUAL16_NUM = 2,
gcvFRAMEINFO_DRAW_FL32_NUM = 3,
gcvFRAMEINFO_COUNT,
}
gceFRAMEINFO;
typedef enum _gceFRAMEINFO_OP
{
gcvFRAMEINFO_OP_INC = 0,
gcvFRAMEINFO_OP_DEC = 1,
gcvFRAMEINFO_OP_ZERO = 2,
gcvFRAMEINFO_OP_GET = 3,
gcvFRAMEINFO_OP_COUNT,
}
gceFRAMEINFO_OP;
/* Chip Power Status. */
typedef enum _gceCHIPPOWERSTATE
{
gcvPOWER_ON = 0,
gcvPOWER_OFF,
gcvPOWER_IDLE,
gcvPOWER_SUSPEND,
gcvPOWER_SUSPEND_ATPOWERON,
gcvPOWER_OFF_ATPOWERON,
gcvPOWER_IDLE_BROADCAST,
gcvPOWER_SUSPEND_BROADCAST,
gcvPOWER_OFF_BROADCAST,
gcvPOWER_OFF_RECOVERY,
gcvPOWER_OFF_TIMEOUT,
gcvPOWER_ON_AUTO
}
gceCHIPPOWERSTATE;
/* CPU cache operations */
typedef enum _gceCACHEOPERATION
{
gcvCACHE_CLEAN = 0x01,
gcvCACHE_INVALIDATE = 0x02,
gcvCACHE_FLUSH = gcvCACHE_CLEAN | gcvCACHE_INVALIDATE,
gcvCACHE_MEMORY_BARRIER = 0x04
}
gceCACHEOPERATION;
/* Surface types. */
typedef enum _gceSURF_TYPE
{
gcvSURF_TYPE_UNKNOWN = 0,
gcvSURF_INDEX,
gcvSURF_VERTEX,
gcvSURF_TEXTURE,
gcvSURF_RENDER_TARGET,
gcvSURF_DEPTH,
gcvSURF_BITMAP,
gcvSURF_TILE_STATUS,
gcvSURF_IMAGE,
gcvSURF_MASK,
gcvSURF_SCISSOR,
gcvSURF_HIERARCHICAL_DEPTH,
gcvSURF_NUM_TYPES, /* Make sure this is the last one! */
/* Combinations. */
gcvSURF_NO_TILE_STATUS = 0x100,
gcvSURF_NO_VIDMEM = 0x200, /* Used to allocate surfaces with no underlying vidmem node.
In Android, vidmem node is allocated by another process. */
gcvSURF_CACHEABLE = 0x400, /* Used to allocate a cacheable surface */
gcvSURF_FLIP = 0x800, /* The Resolve Target the will been flip resolve from RT */
gcvSURF_TILE_STATUS_DIRTY = 0x1000, /* Init tile status to all dirty */
gcvSURF_LINEAR = 0x2000,
gcvSURF_CREATE_AS_TEXTURE = 0x4000, /* create it as a texture */
gcvSURF_PROTECTED_CONTENT = 0x8000, /* create it as content protected */
/* Create it as no compression, valid on when it has tile status. */
gcvSURF_NO_COMPRESSION = 0x40000,
gcvSURF_CONTIGUOUS = 0x20000, /*create it as contiguous */
gcvSURF_TEXTURE_LINEAR = gcvSURF_TEXTURE
| gcvSURF_LINEAR,
gcvSURF_RENDER_TARGET_LINEAR = gcvSURF_RENDER_TARGET
| gcvSURF_LINEAR,
gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET
| gcvSURF_NO_TILE_STATUS,
gcvSURF_RENDER_TARGET_TS_DIRTY = gcvSURF_RENDER_TARGET
| gcvSURF_TILE_STATUS_DIRTY,
gcvSURF_DEPTH_NO_TILE_STATUS = gcvSURF_DEPTH
| gcvSURF_NO_TILE_STATUS,
gcvSURF_DEPTH_TS_DIRTY = gcvSURF_DEPTH
| gcvSURF_TILE_STATUS_DIRTY,
/* Supported surface types with no vidmem node. */
gcvSURF_BITMAP_NO_VIDMEM = gcvSURF_BITMAP
| gcvSURF_NO_VIDMEM,
gcvSURF_TEXTURE_NO_VIDMEM = gcvSURF_TEXTURE
| gcvSURF_NO_VIDMEM,
/* Cacheable surface types with no vidmem node. */
gcvSURF_CACHEABLE_BITMAP_NO_VIDMEM = gcvSURF_BITMAP_NO_VIDMEM
| gcvSURF_CACHEABLE,
gcvSURF_CACHEABLE_BITMAP = gcvSURF_BITMAP
| gcvSURF_CACHEABLE,
gcvSURF_FLIP_BITMAP = gcvSURF_BITMAP
| gcvSURF_FLIP,
}
gceSURF_TYPE;
typedef enum _gceSURF_USAGE
{
gcvSURF_USAGE_UNKNOWN,
gcvSURF_USAGE_RESOLVE_AFTER_CPU,
gcvSURF_USAGE_RESOLVE_AFTER_3D
}
gceSURF_USAGE;
typedef enum _gceSURF_COLOR_SPACE
{
gcvSURF_COLOR_SPACE_UNKNOWN,
gcvSURF_COLOR_SPACE_LINEAR,
gcvSURF_COLOR_SPACE_NONLINEAR,
}
gceSURF_COLOR_SPACE;
typedef enum _gceSURF_COLOR_TYPE
{
gcvSURF_COLOR_UNKNOWN = 0,
gcvSURF_COLOR_LINEAR = 0x01,
gcvSURF_COLOR_ALPHA_PRE = 0x02,
}
gceSURF_COLOR_TYPE;
/* Rotation. */
typedef enum _gceSURF_ROTATION
{
gcvSURF_0_DEGREE = 0,
gcvSURF_90_DEGREE,
gcvSURF_180_DEGREE,
gcvSURF_270_DEGREE,
gcvSURF_FLIP_X,
gcvSURF_FLIP_Y,
gcvSURF_POST_FLIP_X = 0x40000000,
gcvSURF_POST_FLIP_Y = 0x80000000,
}
gceSURF_ROTATION;
/* Surface flag */
typedef enum _gceSURF_FLAG
{
/* None flag */
gcvSURF_FLAG_NONE = 0x0,
/* content is preserved after swap */
gcvSURF_FLAG_CONTENT_PRESERVED = 0x1,
/* content is updated after swap*/
gcvSURF_FLAG_CONTENT_UPDATED = 0x2,
/* content is y inverted */
gcvSURF_FLAG_CONTENT_YINVERTED = 0x4,
/* content is protected */
gcvSURF_FLAG_CONTENT_PROTECTED = 0x8,
/* surface is contiguous. */
gcvSURF_FLAG_CONTIGUOUS = (1 << 4),
}
gceSURF_FLAG;
typedef enum _gceMIPMAP_IMAGE_FORMAT
{
gcvUNKNOWN_MIPMAP_IMAGE_FORMAT = -2
}
gceMIPMAP_IMAGE_FORMAT;
/* Surface formats. */
typedef enum _gceSURF_FORMAT
{
/* Unknown format. */
gcvSURF_UNKNOWN = 0,
/* Palettized formats. */
gcvSURF_INDEX1 = 100,
gcvSURF_INDEX4,
gcvSURF_INDEX8,
/* RGB formats. */
gcvSURF_A2R2G2B2 = 200,
gcvSURF_R3G3B2,
gcvSURF_A8R3G3B2,
gcvSURF_X4R4G4B4,
gcvSURF_A4R4G4B4,
gcvSURF_R4G4B4A4,
gcvSURF_X1R5G5B5,
gcvSURF_A1R5G5B5,
gcvSURF_R5G5B5A1,
gcvSURF_R5G6B5,
gcvSURF_R8G8B8,
gcvSURF_X8R8G8B8,
gcvSURF_A8R8G8B8,
gcvSURF_R8G8B8A8,
gcvSURF_G8R8G8B8,
gcvSURF_R8G8B8G8,
gcvSURF_X2R10G10B10,
gcvSURF_A2R10G10B10,
gcvSURF_X12R12G12B12,
gcvSURF_A12R12G12B12,
gcvSURF_X16R16G16B16,
gcvSURF_A16R16G16B16,
gcvSURF_A32R32G32B32,
gcvSURF_R8G8B8X8,
gcvSURF_R5G5B5X1,
gcvSURF_R4G4B4X4,
gcvSURF_X16R16G16B16_2_A8R8G8B8,
gcvSURF_A16R16G16B16_2_A8R8G8B8,
gcvSURF_A32R32G32B32_2_G32R32F,
gcvSURF_A32R32G32B32_4_A8R8G8B8,
/* BGR formats. */
gcvSURF_A4B4G4R4 = 300,
gcvSURF_A1B5G5R5,
gcvSURF_B5G6R5,
gcvSURF_B8G8R8,
gcvSURF_B16G16R16,
gcvSURF_X8B8G8R8,
gcvSURF_A8B8G8R8,
gcvSURF_A2B10G10R10,
gcvSURF_X16B16G16R16,
gcvSURF_A16B16G16R16,
gcvSURF_B32G32R32,
gcvSURF_X32B32G32R32,
gcvSURF_A32B32G32R32,
gcvSURF_B4G4R4A4,
gcvSURF_B5G5R5A1,
gcvSURF_B8G8R8X8,
gcvSURF_B8G8R8A8,
gcvSURF_X4B4G4R4,
gcvSURF_X1B5G5R5,
gcvSURF_B4G4R4X4,
gcvSURF_B5G5R5X1,
gcvSURF_X2B10G10R10,
gcvSURF_B8G8R8_SNORM,
gcvSURF_X8B8G8R8_SNORM,
gcvSURF_A8B8G8R8_SNORM,
gcvSURF_A8B12G12R12_2_A8R8G8B8,
/* Compressed formats. */
gcvSURF_DXT1 = 400,
gcvSURF_DXT2,
gcvSURF_DXT3,
gcvSURF_DXT4,
gcvSURF_DXT5,
gcvSURF_CXV8U8,
gcvSURF_ETC1,
gcvSURF_R11_EAC,
gcvSURF_SIGNED_R11_EAC,
gcvSURF_RG11_EAC,
gcvSURF_SIGNED_RG11_EAC,
gcvSURF_RGB8_ETC2,
gcvSURF_SRGB8_ETC2,
gcvSURF_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
gcvSURF_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
gcvSURF_RGBA8_ETC2_EAC,
gcvSURF_SRGB8_ALPHA8_ETC2_EAC,
/* YUV formats. */
gcvSURF_YUY2 = 500,
gcvSURF_UYVY,
gcvSURF_YV12,
gcvSURF_I420,
gcvSURF_NV12,
gcvSURF_NV21,
gcvSURF_NV16,
gcvSURF_NV61,
gcvSURF_YVYU,
gcvSURF_VYUY,
/* Depth formats. */
gcvSURF_D16 = 600,
gcvSURF_D24S8,
gcvSURF_D32,
gcvSURF_D24X8,
gcvSURF_D32F,
gcvSURF_S8D32F,
gcvSURF_S8D32F_1_G32R32F,
gcvSURF_S8D32F_2_A8R8G8B8,
gcvSURF_D24S8_1_A8R8G8B8,
gcvSURF_S8,
/* Alpha formats. */
gcvSURF_A4 = 700,
gcvSURF_A8,
gcvSURF_A12,
gcvSURF_A16,
gcvSURF_A32,
gcvSURF_A1,
/* Luminance formats. */
gcvSURF_L4 = 800,
gcvSURF_L8,
gcvSURF_L12,
gcvSURF_L16,
gcvSURF_L32,
gcvSURF_L1,
/* Alpha/Luminance formats. */
gcvSURF_A4L4 = 900,
gcvSURF_A2L6,
gcvSURF_A8L8,
gcvSURF_A4L12,
gcvSURF_A12L12,
gcvSURF_A16L16,
/* Bump formats. */
gcvSURF_L6V5U5 = 1000,
gcvSURF_V8U8,
gcvSURF_X8L8V8U8,
gcvSURF_Q8W8V8U8,
gcvSURF_A2W10V10U10,
gcvSURF_V16U16,
gcvSURF_Q16W16V16U16,
/* R/RG/RA formats. */
gcvSURF_R8 = 1100,
gcvSURF_X8R8,
gcvSURF_G8R8,
gcvSURF_X8G8R8,
gcvSURF_A8R8,
gcvSURF_R16,
gcvSURF_X16R16,
gcvSURF_G16R16,
gcvSURF_X16G16R16,
gcvSURF_A16R16,
gcvSURF_R32,
gcvSURF_X32R32,
gcvSURF_G32R32,
gcvSURF_X32G32R32,
gcvSURF_A32R32,
gcvSURF_RG16,
gcvSURF_R8_SNORM,
gcvSURF_G8R8_SNORM,
gcvSURF_R8_1_X8R8G8B8,
gcvSURF_G8R8_1_X8R8G8B8,
/* Floating point formats. */
gcvSURF_R16F = 1200,
gcvSURF_X16R16F,
gcvSURF_G16R16F,
gcvSURF_X16G16R16F,
gcvSURF_B16G16R16F,
gcvSURF_X16B16G16R16F,
gcvSURF_A16B16G16R16F,
gcvSURF_R32F,
gcvSURF_X32R32F,
gcvSURF_G32R32F,
gcvSURF_X32G32R32F,
gcvSURF_B32G32R32F,
gcvSURF_X32B32G32R32F,
gcvSURF_A32B32G32R32F,
gcvSURF_A16F,
gcvSURF_L16F,
gcvSURF_A16L16F,
gcvSURF_A16R16F,
gcvSURF_A32F,
gcvSURF_L32F,
gcvSURF_A32L32F,
gcvSURF_A32R32F,
gcvSURF_E5B9G9R9,
gcvSURF_B10G11R11F,
gcvSURF_X16B16G16R16F_2_A8R8G8B8,
gcvSURF_A16B16G16R16F_2_A8R8G8B8,
gcvSURF_G32R32F_2_A8R8G8B8,
gcvSURF_X32B32G32R32F_2_G32R32F,
gcvSURF_A32B32G32R32F_2_G32R32F,
gcvSURF_X32B32G32R32F_4_A8R8G8B8,
gcvSURF_A32B32G32R32F_4_A8R8G8B8,
gcvSURF_R16F_1_A4R4G4B4,
gcvSURF_G16R16F_1_A8R8G8B8,
gcvSURF_B16G16R16F_2_A8R8G8B8,
gcvSURF_R32F_1_A8R8G8B8,
gcvSURF_B32G32R32F_3_A8R8G8B8,
gcvSURF_B10G11R11F_1_A8R8G8B8,
/* sRGB format. */
gcvSURF_SBGR8 = 1400,
gcvSURF_A8_SBGR8,
gcvSURF_X8_SBGR8,
/* Integer formats. */
gcvSURF_R8I = 1500,
gcvSURF_R8UI,
gcvSURF_R16I,
gcvSURF_R16UI,
gcvSURF_R32I,
gcvSURF_R32UI,
gcvSURF_X8R8I,
gcvSURF_G8R8I,
gcvSURF_X8R8UI,
gcvSURF_G8R8UI,
gcvSURF_X16R16I,
gcvSURF_G16R16I,
gcvSURF_X16R16UI,
gcvSURF_G16R16UI,
gcvSURF_X32R32I,
gcvSURF_G32R32I,
gcvSURF_X32R32UI,
gcvSURF_G32R32UI,
gcvSURF_X8G8R8I,
gcvSURF_B8G8R8I,
gcvSURF_X8G8R8UI,
gcvSURF_B8G8R8UI,
gcvSURF_X16G16R16I,
gcvSURF_B16G16R16I,
gcvSURF_X16G16R16UI,
gcvSURF_B16G16R16UI,
gcvSURF_X32G32R32I,
gcvSURF_B32G32R32I,
gcvSURF_X32G32R32UI,
gcvSURF_B32G32R32UI,
gcvSURF_X8B8G8R8I,
gcvSURF_A8B8G8R8I,
gcvSURF_X8B8G8R8UI,
gcvSURF_A8B8G8R8UI,
gcvSURF_X16B16G16R16I,
gcvSURF_A16B16G16R16I,
gcvSURF_X16B16G16R16UI,
gcvSURF_A16B16G16R16UI,
gcvSURF_X32B32G32R32I,
gcvSURF_A32B32G32R32I,
gcvSURF_X32B32G32R32UI,
gcvSURF_A32B32G32R32UI,
gcvSURF_A2B10G10R10UI,
gcvSURF_G32R32I_2_A8R8G8B8,
gcvSURF_G32R32UI_2_A8R8G8B8,
gcvSURF_X16B16G16R16I_2_A8R8G8B8,
gcvSURF_A16B16G16R16I_2_A8R8G8B8,
gcvSURF_X16B16G16R16UI_2_A8R8G8B8,
gcvSURF_A16B16G16R16UI_2_A8R8G8B8,
gcvSURF_X32B32G32R32I_2_G32R32I,
gcvSURF_A32B32G32R32I_2_G32R32I,
gcvSURF_X32B32G32R32I_3_A8R8G8B8,
gcvSURF_A32B32G32R32I_4_A8R8G8B8,
gcvSURF_X32B32G32R32UI_2_G32R32UI,
gcvSURF_A32B32G32R32UI_2_G32R32UI,
gcvSURF_X32B32G32R32UI_3_A8R8G8B8,
gcvSURF_A32B32G32R32UI_4_A8R8G8B8,
gcvSURF_A2B10G10R10UI_1_A8R8G8B8,
gcvSURF_A8B8G8R8I_1_A8R8G8B8,
gcvSURF_A8B8G8R8UI_1_A8R8G8B8,
gcvSURF_R8I_1_A4R4G4B4,
gcvSURF_R8UI_1_A4R4G4B4,
gcvSURF_R16I_1_A4R4G4B4,
gcvSURF_R16UI_1_A4R4G4B4,
gcvSURF_R32I_1_A8R8G8B8,
gcvSURF_R32UI_1_A8R8G8B8,
gcvSURF_X8R8I_1_A4R4G4B4,
gcvSURF_X8R8UI_1_A4R4G4B4,
gcvSURF_G8R8I_1_A4R4G4B4,
gcvSURF_G8R8UI_1_A4R4G4B4,
gcvSURF_X16R16I_1_A4R4G4B4,
gcvSURF_X16R16UI_1_A4R4G4B4,
gcvSURF_G16R16I_1_A8R8G8B8,
gcvSURF_G16R16UI_1_A8R8G8B8,
gcvSURF_X32R32I_1_A8R8G8B8,
gcvSURF_X32R32UI_1_A8R8G8B8,
gcvSURF_X8G8R8I_1_A4R4G4B4,
gcvSURF_X8G8R8UI_1_A4R4G4B4,
gcvSURF_B8G8R8I_1_A8R8G8B8,
gcvSURF_B8G8R8UI_1_A8R8G8B8,
gcvSURF_B16G16R16I_2_A8R8G8B8,
gcvSURF_B16G16R16UI_2_A8R8G8B8,
gcvSURF_B32G32R32I_3_A8R8G8B8,
gcvSURF_B32G32R32UI_3_A8R8G8B8,
/* ASTC formats. */
gcvSURF_ASTC4x4 = 1600,
gcvSURF_ASTC5x4,
gcvSURF_ASTC5x5,
gcvSURF_ASTC6x5,
gcvSURF_ASTC6x6,
gcvSURF_ASTC8x5,
gcvSURF_ASTC8x6,
gcvSURF_ASTC8x8,
gcvSURF_ASTC10x5,
gcvSURF_ASTC10x6,
gcvSURF_ASTC10x8,
gcvSURF_ASTC10x10,
gcvSURF_ASTC12x10,
gcvSURF_ASTC12x12,
gcvSURF_ASTC4x4_SRGB,
gcvSURF_ASTC5x4_SRGB,
gcvSURF_ASTC5x5_SRGB,
gcvSURF_ASTC6x5_SRGB,
gcvSURF_ASTC6x6_SRGB,
gcvSURF_ASTC8x5_SRGB,
gcvSURF_ASTC8x6_SRGB,
gcvSURF_ASTC8x8_SRGB,
gcvSURF_ASTC10x5_SRGB,
gcvSURF_ASTC10x6_SRGB,
gcvSURF_ASTC10x8_SRGB,
gcvSURF_ASTC10x10_SRGB,
gcvSURF_ASTC12x10_SRGB,
gcvSURF_ASTC12x12_SRGB,
gcvSURF_FORMAT_COUNT
}
gceSURF_FORMAT;
/* Format modifiers. */
typedef enum _gceSURF_FORMAT_MODE
{
gcvSURF_FORMAT_OCL = 0x80000000
}
gceSURF_FORMAT_MODE;
/* Pixel swizzle modes. */
typedef enum _gceSURF_SWIZZLE
{
gcvSURF_NOSWIZZLE = 0,
gcvSURF_ARGB,
gcvSURF_ABGR,
gcvSURF_RGBA,
gcvSURF_BGRA
}
gceSURF_SWIZZLE;
/* Transparency modes. */
typedef enum _gceSURF_TRANSPARENCY
{
/* Valid only for PE 1.0 */
gcvSURF_OPAQUE = 0,
gcvSURF_SOURCE_MATCH,
gcvSURF_SOURCE_MASK,
gcvSURF_PATTERN_MASK,
}
gceSURF_TRANSPARENCY;
/* Surface Alignment. */
typedef enum _gceSURF_ALIGNMENT
{
gcvSURF_FOUR = 0,
gcvSURF_SIXTEEN,
gcvSURF_SUPER_TILED,
gcvSURF_SPLIT_TILED,
gcvSURF_SPLIT_SUPER_TILED
}
gceSURF_ALIGNMENT;
/* Surface Addressing. */
typedef enum _gceSURF_ADDRESSING
{
gcvSURF_NO_STRIDE_TILED = 0,
gcvSURF_NO_STRIDE_LINEAR,
gcvSURF_STRIDE_TILED,
gcvSURF_STRIDE_LINEAR
}
gceSURF_ADDRESSING;
/* Transparency modes. */
typedef enum _gce2D_TRANSPARENCY
{
/* Valid only for PE 2.0 */
gcv2D_OPAQUE = 0,
gcv2D_KEYED,
gcv2D_MASKED
}
gce2D_TRANSPARENCY;
/* Mono packing modes. */
typedef enum _gceSURF_MONOPACK
{
gcvSURF_PACKED8 = 0,
gcvSURF_PACKED16,
gcvSURF_PACKED32,
gcvSURF_UNPACKED,
}
gceSURF_MONOPACK;
/* Blending modes. */
typedef enum _gceSURF_BLEND_MODE
{
/* Porter-Duff blending modes. */
/* Fsrc Fdst */
gcvBLEND_CLEAR = 0, /* 0 0 */
gcvBLEND_SRC, /* 1 0 */
gcvBLEND_DST, /* 0 1 */
gcvBLEND_SRC_OVER_DST, /* 1 1 - Asrc */
gcvBLEND_DST_OVER_SRC, /* 1 - Adst 1 */
gcvBLEND_SRC_IN_DST, /* Adst 0 */
gcvBLEND_DST_IN_SRC, /* 0 Asrc */
gcvBLEND_SRC_OUT_DST, /* 1 - Adst 0 */
gcvBLEND_DST_OUT_SRC, /* 0 1 - Asrc */
gcvBLEND_SRC_ATOP_DST, /* Adst 1 - Asrc */
gcvBLEND_DST_ATOP_SRC, /* 1 - Adst Asrc */
gcvBLEND_SRC_XOR_DST, /* 1 - Adst 1 - Asrc */
/* Special blending modes. */
gcvBLEND_SET, /* DST = 1 */
gcvBLEND_SUB /* DST = DST * (1 - SRC) */
}
gceSURF_BLEND_MODE;
/* Per-pixel alpha modes. */
typedef enum _gceSURF_PIXEL_ALPHA_MODE
{
gcvSURF_PIXEL_ALPHA_STRAIGHT = 0,
gcvSURF_PIXEL_ALPHA_INVERSED
}
gceSURF_PIXEL_ALPHA_MODE;
/* Global alpha modes. */
typedef enum _gceSURF_GLOBAL_ALPHA_MODE
{
gcvSURF_GLOBAL_ALPHA_OFF = 0,
gcvSURF_GLOBAL_ALPHA_ON,
gcvSURF_GLOBAL_ALPHA_SCALE
}
gceSURF_GLOBAL_ALPHA_MODE;
/* Color component modes for alpha blending. */
typedef enum _gceSURF_PIXEL_COLOR_MODE
{
gcvSURF_COLOR_STRAIGHT = 0,
gcvSURF_COLOR_MULTIPLY
}
gceSURF_PIXEL_COLOR_MODE;
/* Color component modes for alpha blending. */
typedef enum _gce2D_PIXEL_COLOR_MULTIPLY_MODE
{
gcv2D_COLOR_MULTIPLY_DISABLE = 0,
gcv2D_COLOR_MULTIPLY_ENABLE
}
gce2D_PIXEL_COLOR_MULTIPLY_MODE;
/* Color component modes for alpha blending. */
typedef enum _gce2D_GLOBAL_COLOR_MULTIPLY_MODE
{
gcv2D_GLOBAL_COLOR_MULTIPLY_DISABLE = 0,
gcv2D_GLOBAL_COLOR_MULTIPLY_ALPHA,
gcv2D_GLOBAL_COLOR_MULTIPLY_COLOR
}
gce2D_GLOBAL_COLOR_MULTIPLY_MODE;
/* Alpha blending factor modes. */
typedef enum _gceSURF_BLEND_FACTOR_MODE
{
gcvSURF_BLEND_ZERO = 0,
gcvSURF_BLEND_ONE,
gcvSURF_BLEND_STRAIGHT,
gcvSURF_BLEND_INVERSED,
gcvSURF_BLEND_COLOR,
gcvSURF_BLEND_COLOR_INVERSED,
gcvSURF_BLEND_SRC_ALPHA_SATURATED,
gcvSURF_BLEND_STRAIGHT_NO_CROSS,
gcvSURF_BLEND_INVERSED_NO_CROSS,
gcvSURF_BLEND_COLOR_NO_CROSS,
gcvSURF_BLEND_COLOR_INVERSED_NO_CROSS,
gcvSURF_BLEND_SRC_ALPHA_SATURATED_CROSS
}
gceSURF_BLEND_FACTOR_MODE;
/* Alpha blending porter duff rules. */
typedef enum _gce2D_PORTER_DUFF_RULE
{
gcvPD_CLEAR = 0,
gcvPD_SRC,
gcvPD_SRC_OVER,
gcvPD_DST_OVER,
gcvPD_SRC_IN,
gcvPD_DST_IN,
gcvPD_SRC_OUT,
gcvPD_DST_OUT,
gcvPD_SRC_ATOP,
gcvPD_DST_ATOP,
gcvPD_ADD,
gcvPD_XOR,
gcvPD_DST
}
gce2D_PORTER_DUFF_RULE;
/* Alpha blending factor modes. */
typedef enum _gce2D_YUV_COLOR_MODE
{
gcv2D_YUV_601= 0,
gcv2D_YUV_709,
gcv2D_YUV_USER_DEFINED,
gcv2D_YUV_USER_DEFINED_CLAMP,
/* Default setting is for src. gcv2D_YUV_DST
can be ORed to set dst.
*/
gcv2D_YUV_DST = 0x80000000,
}
gce2D_YUV_COLOR_MODE;
typedef enum _gce2D_COMMAND
{
gcv2D_CLEAR = 0,
gcv2D_LINE,
gcv2D_BLT,
gcv2D_STRETCH,
gcv2D_HOR_FILTER,
gcv2D_VER_FILTER,
gcv2D_MULTI_SOURCE_BLT,
gcv2D_FILTER_BLT,
}
gce2D_COMMAND;
typedef enum _gce2D_TILE_STATUS_CONFIG
{
gcv2D_TSC_DISABLE = 0,
gcv2D_TSC_ENABLE = 0x00000001,
gcv2D_TSC_COMPRESSED = 0x00000002,
gcv2D_TSC_DOWN_SAMPLER = 0x00000004,
gcv2D_TSC_2D_COMPRESSED = 0x00000008,
gcv2D_TSC_TPC_COMPRESSED = 0x00000010,
}
gce2D_TILE_STATUS_CONFIG;
typedef enum _gce2D_QUERY
{
gcv2D_QUERY_RGB_ADDRESS_MIN_ALIGN = 0,
gcv2D_QUERY_RGB_STRIDE_MIN_ALIGN,
gcv2D_QUERY_YUV_ADDRESS_MIN_ALIGN,
gcv2D_QUERY_YUV_STRIDE_MIN_ALIGN,
}
gce2D_QUERY;
typedef enum _gce2D_SUPER_TILE_VERSION
{
gcv2D_SUPER_TILE_VERSION_V1 = 1,
gcv2D_SUPER_TILE_VERSION_V2 = 2,
gcv2D_SUPER_TILE_VERSION_V3 = 3,
}
gce2D_SUPER_TILE_VERSION;
typedef enum _gce2D_STATE
{
gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE = 1,
gcv2D_STATE_SUPER_TILE_VERSION,
gcv2D_STATE_EN_GAMMA,
gcv2D_STATE_DE_GAMMA,
gcv2D_STATE_MULTI_SRC_BLIT_UNIFIED_DST_RECT,
gcv2D_STATE_PROFILE_ENABLE,
gcv2D_STATE_XRGB_ENABLE,
gcv2D_STATE_ARRAY_EN_GAMMA = 0x10001,
gcv2D_STATE_ARRAY_DE_GAMMA,
gcv2D_STATE_ARRAY_CSC_YUV_TO_RGB,
gcv2D_STATE_ARRAY_CSC_RGB_TO_YUV,
}
gce2D_STATE;
typedef enum _gce2D_STATE_PROFILE
{
gcv2D_STATE_PROFILE_NONE = 0x0,
gcv2D_STATE_PROFILE_COMMAND = 0x1,
gcv2D_STATE_PROFILE_SURFACE = 0x2,
gcv2D_STATE_PROFILE_ALL = 0xFFFF,
}
gce2D_STATE_PROFILE;
/* Texture object types */
typedef enum _gceTEXTURE_TYPE
{
gcvTEXTURE_UNKNOWN = 0,
gcvTEXTURE_1D,
gcvTEXTURE_2D,
gcvTEXTURE_3D,
gcvTEXTURE_CUBEMAP,
gcvTEXTURE_1D_ARRAY,
gcvTEXTURE_2D_ARRAY,
gcvTEXTURE_EXTERNAL
}
gceTEXTURE_TYPE;
#if gcdENABLE_3D
/* Texture functions. */
typedef enum _gceTEXTURE_FUNCTION
{
gcvTEXTURE_DUMMY = 0,
gcvTEXTURE_REPLACE = 0,
gcvTEXTURE_MODULATE,
gcvTEXTURE_ADD,
gcvTEXTURE_ADD_SIGNED,
gcvTEXTURE_INTERPOLATE,
gcvTEXTURE_SUBTRACT,
gcvTEXTURE_DOT3
}
gceTEXTURE_FUNCTION;
/* Texture sources. */
typedef enum _gceTEXTURE_SOURCE
{
gcvCOLOR_FROM_TEXTURE = 0,
gcvCOLOR_FROM_CONSTANT_COLOR,
gcvCOLOR_FROM_PRIMARY_COLOR,
gcvCOLOR_FROM_PREVIOUS_COLOR
}
gceTEXTURE_SOURCE;
/* Texture source channels. */
typedef enum _gceTEXTURE_CHANNEL
{
gcvFROM_COLOR = 0,
gcvFROM_ONE_MINUS_COLOR,
gcvFROM_ALPHA,
gcvFROM_ONE_MINUS_ALPHA
}
gceTEXTURE_CHANNEL;
#endif /* gcdENABLE_3D */
/* Filter types. */
typedef enum _gceFILTER_TYPE
{
gcvFILTER_SYNC = 0,
gcvFILTER_BLUR,
gcvFILTER_USER
}
gceFILTER_TYPE;
/* Filter pass types. */
typedef enum _gceFILTER_PASS_TYPE
{
gcvFILTER_HOR_PASS = 0,
gcvFILTER_VER_PASS
}
gceFILTER_PASS_TYPE;
/* Endian hints. */
typedef enum _gceENDIAN_HINT
{
gcvENDIAN_NO_SWAP = 0,
gcvENDIAN_SWAP_WORD,
gcvENDIAN_SWAP_DWORD
}
gceENDIAN_HINT;
/* Tiling modes. */
typedef enum _gceTILING
{
gcvINVALIDTILED = 0x0, /* Invalid tiling */
/* Tiling basic modes enum'ed in power of 2. */
gcvLINEAR = 0x1, /* No tiling. */
gcvTILED = 0x2, /* 4x4 tiling. */
gcvSUPERTILED = 0x4, /* 64x64 tiling. */
gcvMINORTILED = 0x8, /* 2x2 tiling. */
/* Tiling special layouts. */
gcvTILING_SPLIT_BUFFER = 0x100,
/* Tiling combination layouts. */
gcvMULTI_TILED = gcvTILED
| gcvTILING_SPLIT_BUFFER,
gcvMULTI_SUPERTILED = gcvSUPERTILED
| gcvTILING_SPLIT_BUFFER,
}
gceTILING;
/* 2D pattern type. */
typedef enum _gce2D_PATTERN
{
gcv2D_PATTERN_SOLID = 0,
gcv2D_PATTERN_MONO,
gcv2D_PATTERN_COLOR,
gcv2D_PATTERN_INVALID
}
gce2D_PATTERN;
/* 2D source type. */
typedef enum _gce2D_SOURCE
{
gcv2D_SOURCE_MASKED = 0,
gcv2D_SOURCE_MONO,
gcv2D_SOURCE_COLOR,
gcv2D_SOURCE_INVALID
}
gce2D_SOURCE;
/* Pipes. */
typedef enum _gcePIPE_SELECT
{
gcvPIPE_INVALID = ~0,
gcvPIPE_3D = 0,
gcvPIPE_2D
}
gcePIPE_SELECT;
/* Hardware type. */
typedef enum _gceHARDWARE_TYPE
{
gcvHARDWARE_INVALID = 0x00,
gcvHARDWARE_3D = 0x01,
gcvHARDWARE_2D = 0x02,
gcvHARDWARE_VG = 0x04,
#if gcdMULTI_GPU_AFFINITY
gcvHARDWARE_OCL = 0x05,
#endif
gcvHARDWARE_3D2D = gcvHARDWARE_3D | gcvHARDWARE_2D
}
gceHARDWARE_TYPE;
#define gcdCHIP_COUNT 3
typedef enum _gceMMU_MODE
{
gcvMMU_MODE_1K,
gcvMMU_MODE_4K,
} gceMMU_MODE;
/* User signal command codes. */
typedef enum _gceUSER_SIGNAL_COMMAND_CODES
{
gcvUSER_SIGNAL_CREATE,
gcvUSER_SIGNAL_DESTROY,
gcvUSER_SIGNAL_SIGNAL,
gcvUSER_SIGNAL_WAIT,
gcvUSER_SIGNAL_MAP,
gcvUSER_SIGNAL_UNMAP,
}
gceUSER_SIGNAL_COMMAND_CODES;
/* Sync point command codes. */
typedef enum _gceSYNC_POINT_COMMAND_CODES
{
gcvSYNC_POINT_CREATE,
gcvSYNC_POINT_DESTROY,
gcvSYNC_POINT_SIGNAL,
}
gceSYNC_POINT_COMMAND_CODES;
/* Shared buffer command codes. */
typedef enum _gceSHBUF_COMMAND_CODES
{
gcvSHBUF_CREATE,
gcvSHBUF_DESTROY,
gcvSHBUF_MAP,
gcvSHBUF_WRITE,
gcvSHBUF_READ,
}
gceSHBUF_COMMAND_CODES;
/* Event locations. */
typedef enum _gceKERNEL_WHERE
{
gcvKERNEL_COMMAND,
gcvKERNEL_VERTEX,
gcvKERNEL_TRIANGLE,
gcvKERNEL_TEXTURE,
gcvKERNEL_PIXEL,
}
gceKERNEL_WHERE;
#if gcdENABLE_VG
/* Hardware blocks. */
typedef enum _gceBLOCK
{
gcvBLOCK_COMMAND,
gcvBLOCK_TESSELLATOR,
gcvBLOCK_TESSELLATOR2,
gcvBLOCK_TESSELLATOR3,
gcvBLOCK_RASTER,
gcvBLOCK_VG,
gcvBLOCK_VG2,
gcvBLOCK_VG3,
gcvBLOCK_PIXEL,
/* Number of defined blocks. */
gcvBLOCK_COUNT
}
gceBLOCK;
#endif
/* gcdDUMP message type. */
typedef enum _gceDEBUG_MESSAGE_TYPE
{
gcvMESSAGE_TEXT,
gcvMESSAGE_DUMP
}
gceDEBUG_MESSAGE_TYPE;
/* Shading format. */
typedef enum _gceSHADING
{
gcvSHADING_SMOOTH,
gcvSHADING_FLAT_D3D,
gcvSHADING_FLAT_OPENGL,
}
gceSHADING;
/* Culling modes. */
typedef enum _gceCULL
{
gcvCULL_NONE,
gcvCULL_CCW,
gcvCULL_CW,
}
gceCULL;
/* Fill modes. */
typedef enum _gceFILL
{
gcvFILL_POINT,
gcvFILL_WIRE_FRAME,
gcvFILL_SOLID,
}
gceFILL;
/* Compare modes. */
typedef enum _gceCOMPARE
{
gcvCOMPARE_INVALID = 0,
gcvCOMPARE_NEVER,
gcvCOMPARE_NOT_EQUAL,
gcvCOMPARE_LESS,
gcvCOMPARE_LESS_OR_EQUAL,
gcvCOMPARE_EQUAL,
gcvCOMPARE_GREATER,
gcvCOMPARE_GREATER_OR_EQUAL,
gcvCOMPARE_ALWAYS,
}
gceCOMPARE;
/* Stencil modes. */
typedef enum _gceSTENCIL_MODE
{
gcvSTENCIL_NONE,
gcvSTENCIL_SINGLE_SIDED,
gcvSTENCIL_DOUBLE_SIDED,
}
gceSTENCIL_MODE;
/* Stencil operations. */
typedef enum _gceSTENCIL_OPERATION
{
gcvSTENCIL_KEEP,
gcvSTENCIL_REPLACE,
gcvSTENCIL_ZERO,
gcvSTENCIL_INVERT,
gcvSTENCIL_INCREMENT,
gcvSTENCIL_DECREMENT,
gcvSTENCIL_INCREMENT_SATURATE,
gcvSTENCIL_DECREMENT_SATURATE,
gcvSTENCIL_OPERATION_INVALID = -1
}
gceSTENCIL_OPERATION;
/* Stencil selection. */
typedef enum _gceSTENCIL_WHERE
{
gcvSTENCIL_FRONT,
gcvSTENCIL_BACK,
}
gceSTENCIL_WHERE;
/* Texture addressing selection. */
typedef enum _gceTEXTURE_WHICH
{
gcvTEXTURE_S,
gcvTEXTURE_T,
gcvTEXTURE_R,
}
gceTEXTURE_WHICH;
/* Texture addressing modes. */
typedef enum _gceTEXTURE_ADDRESSING
{
gcvTEXTURE_INVALID = 0,
gcvTEXTURE_CLAMP,
gcvTEXTURE_WRAP,
gcvTEXTURE_MIRROR,
gcvTEXTURE_BORDER,
gcvTEXTURE_MIRROR_ONCE,
}
gceTEXTURE_ADDRESSING;
/* Texture filters. */
typedef enum _gceTEXTURE_FILTER
{
gcvTEXTURE_NONE,
gcvTEXTURE_POINT,
gcvTEXTURE_LINEAR,
gcvTEXTURE_ANISOTROPIC,
}
gceTEXTURE_FILTER;
typedef enum _gceTEXTURE_COMPONENT
{
gcvTEXTURE_COMPONENT_R,
gcvTEXTURE_COMPONENT_G,
gcvTEXTURE_COMPONENT_B,
gcvTEXTURE_COMPONENT_A,
gcvTEXTURE_COMPONENT_NUM,
} gceTEXTURE_COMPONENT;
/* Texture swizzle modes. */
typedef enum _gceTEXTURE_SWIZZLE
{
gcvTEXTURE_SWIZZLE_R = 0,
gcvTEXTURE_SWIZZLE_G,
gcvTEXTURE_SWIZZLE_B,
gcvTEXTURE_SWIZZLE_A,
gcvTEXTURE_SWIZZLE_0,
gcvTEXTURE_SWIZZLE_1,
gcvTEXTURE_SWIZZLE_INVALID,
} gceTEXTURE_SWIZZLE;
typedef enum _gceTEXTURE_COMPARE_MODE
{
gcvTEXTURE_COMPARE_MODE_INVALID = 0,
gcvTEXTURE_COMPARE_MODE_NONE,
gcvTEXTURE_COMPARE_MODE_REF,
} gceTEXTURE_COMPARE_MODE;
/* Pixel output swizzle modes. */
typedef enum _gcePIXEL_SWIZZLE
{
gcvPIXEL_SWIZZLE_R = gcvTEXTURE_SWIZZLE_R,
gcvPIXEL_SWIZZLE_G = gcvTEXTURE_SWIZZLE_G,
gcvPIXEL_SWIZZLE_B = gcvTEXTURE_SWIZZLE_B,
gcvPIXEL_SWIZZLE_A = gcvTEXTURE_SWIZZLE_A,
gcvPIXEL_SWIZZLE_INVALID,
} gcePIXEL_SWIZZLE;
/* Primitive types. */
typedef enum _gcePRIMITIVE
{
gcvPRIMITIVE_POINT_LIST,
gcvPRIMITIVE_LINE_LIST,
gcvPRIMITIVE_LINE_STRIP,
gcvPRIMITIVE_LINE_LOOP,
gcvPRIMITIVE_TRIANGLE_LIST,
gcvPRIMITIVE_TRIANGLE_STRIP,
gcvPRIMITIVE_TRIANGLE_FAN,
gcvPRIMITIVE_RECTANGLE,
}
gcePRIMITIVE;
/* Index types. */
typedef enum _gceINDEX_TYPE
{
gcvINDEX_8,
gcvINDEX_16,
gcvINDEX_32,
}
gceINDEX_TYPE;
/* Multi GPU rendering modes. */
typedef enum _gceMULTI_GPU_RENDERING_MODE
{
gcvMULTI_GPU_RENDERING_MODE_OFF,
gcvMULTI_GPU_RENDERING_MODE_SPLIT_WIDTH,
gcvMULTI_GPU_RENDERING_MODE_SPLIT_HEIGHT,
gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED_64x64,
gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED_128x64,
gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED_128x128
}
gceMULTI_GPU_RENDERING_MODE;
typedef enum _gceCORE_3D_MASK
{
gcvCORE_3D_0_MASK = (1 << 0),
gcvCORE_3D_1_MASK = (1 << 1),
gcvCORE_3D_ALL_MASK = (0xFFFF)
}
gceCORE_3D_MASK;
typedef enum _gceCORE_3D_ID
{
gcvCORE_3D_0_ID = 0,
gcvCORE_3D_1_ID = 1,
gcvCORE_3D_ID_INVALID = ~0UL
}
gceCORE_3D_ID;
typedef enum _gceMULTI_GPU_MODE
{
gcvMULTI_GPU_MODE_COMBINED = 0,
gcvMULTI_GPU_MODE_INDEPENDENT = 1
}
gceMULTI_GPU_MODE;
typedef enum _gceMACHINECODE
{
gcvMACHINECODE_ANTUTU0 = 0x0,
gcvMACHINECODE_GLB27_RELEASE_0,
gcvMACHINECODE_GLB25_RELEASE_0,
gcvMACHINECODE_GLB25_RELEASE_1,
gcvMACHINECODE_GLB25_RELEASE_2,
/* keep it as the last enum */
gcvMACHINECODE_COUNT
}
gceMACHINECODE;
typedef enum _gceUNIFORMCVT
{
gcvUNIFORMCVT_NONE = 0,
gcvUNIFORMCVT_TO_BOOL,
gcvUNIFORMCVT_TO_FLOAT,
} gceUNIFORMCVT;
typedef enum _gceHAL_ARG_VERSION
{
gcvHAL_ARG_VERSION_V1 = 0x0,
}
gceHAL_ARG_VERSION;
/*
* Bit of a requirment is 1 means requirement is a must, 0 means requirement can
* be ignored.
*/
#define gcvALLOC_FLAG_CONTIGUOUS_BIT 0
#define gcvALLOC_FLAG_CACHEABLE_BIT 1
#define gcvALLOC_FLAG_SECURITY_BIT 2
#define gcvALLOC_FLAG_NON_CONTIGUOUS_BIT 3
#define gcvALLOC_FLAG_MEMLIMIT_BIT 4
/* No special needs. */
#define gcvALLOC_FLAG_NONE (0)
/* Physical contiguous. */
#define gcvALLOC_FLAG_CONTIGUOUS (1 << gcvALLOC_FLAG_CONTIGUOUS_BIT)
/* Can be remapped as cacheable. */
#define gcvALLOC_FLAG_CACHEABLE (1 << gcvALLOC_FLAG_CACHEABLE_BIT)
/* Secure buffer. */
#define gcvALLOC_FLAG_SECURITY (1 << gcvALLOC_FLAG_SECURITY_BIT)
/* Physical non contiguous. */
#define gcvALLOC_FLAG_NON_CONTIGUOUS (1 << gcvALLOC_FLAG_NON_CONTIGUOUS_BIT)
#define gcvALLOC_FLAG_MEMLIMIT (1 << gcvALLOC_FLAG_MEMLIMIT_BIT)
/* GL_VIV internal usage */
#ifndef GL_MAP_BUFFER_OBJ_VIV
#define GL_MAP_BUFFER_OBJ_VIV 0x10000
#endif
/* Command buffer usage. */
#define gcvCOMMAND_2D (1 << 0)
#define gcvCOMMAND_3D (1 << 1)
/******************************************************************************\
****************************** Object Declarations *****************************
\******************************************************************************/
typedef struct _gckCONTEXT * gckCONTEXT;
typedef struct _gcoCMDBUF * gcoCMDBUF;
typedef struct _gcsSTATE_DELTA * gcsSTATE_DELTA_PTR;
typedef struct _gcsQUEUE * gcsQUEUE_PTR;
typedef struct _gcoQUEUE * gcoQUEUE;
typedef struct _gcsHAL_INTERFACE * gcsHAL_INTERFACE_PTR;
typedef struct _gcs2D_PROFILE * gcs2D_PROFILE_PTR;
#if gcdENABLE_VG
typedef struct _gcoVGHARDWARE * gcoVGHARDWARE;
typedef struct _gcoVGBUFFER * gcoVGBUFFER;
typedef struct _gckVGHARDWARE * gckVGHARDWARE;
typedef struct _gcsVGCONTEXT * gcsVGCONTEXT_PTR;
typedef struct _gcsVGCONTEXT_MAP * gcsVGCONTEXT_MAP_PTR;
typedef struct _gcsVGCMDQUEUE * gcsVGCMDQUEUE_PTR;
typedef struct _gcsTASK_MASTER_TABLE * gcsTASK_MASTER_TABLE_PTR;
typedef struct _gckVGKERNEL * gckVGKERNEL;
typedef void * gctTHREAD;
#endif
#ifdef __cplusplus
}
#endif
#endif /* __gc_hal_enum_h_ */