TIM-VX/unified-tina/inc/HAL/gc_hal_enum.h

2065 lines
57 KiB
C
Raw Normal View History

/****************************************************************************
*
* Copyright (c) 2005 - 2023 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_
#include "gc_hal_options.h"
#include "shared/gc_hal_enum_shared.h"
#ifdef __cplusplus
extern "C" {
#endif
/* dummy draw type.*/
typedef enum _gceDUMMY_DRAW_TYPE {
gcvDUMMY_DRAW_INVALID = 0,
gcvDUMMY_DRAW_GC400,
gcvDUMMY_DRAW_V60,
} gceDUMMY_DRAW_TYPE;
/* Option Set*/
typedef enum _gceOPTION {
/* HW setting. */
gcvOPTION_PREFER_ZCONVERT_BYPASS = 0,
gcvOPTION_PREFER_TILED_DISPLAY_BUFFER = 1,
gcvOPTION_PREFER_GUARDBAND = 2,
gcvOPTION_PREFER_TPG_TRIVIALMODEL = 3,
gcvOPTION_PREFER_RA_DEPTH_WRITE = 4,
gcvOPTION_PREFER_USC_RECONFIG = 5,
gcvOPTION_PREFER_DISALBE_HZ = 6,
/* SW options */
gcvOPTION_HW_NULL = 50,
gcvOPTION_PRINT_OPTION = 51,
gcvOPTION_KERNEL_FENCE = 52,
gcvOPTION_ASYNC_PIPE = 53,
gcvOPTION_FBO_PREFER_MEM = 54,
gcvOPTION_GPU_TEX_UPLOAD = 55,
gcvOPTION_GPU_BUFOBJ_UPLOAD = 56,
gcvOPTION_NO_Y_INVERT = 60,
/* OCL option */
gcvOPTION_OCL_ASYNC_BLT = 200,
gcvOPTION_OCL_IN_THREAD,
gcvOPTION_COMPRESSION_DEC400,
gcvOPTION_OCL_VIR_SHADER,
gcvOPTION_OCL_USE_MULTI_DEVICES,
#if gcdUSE_VX
/* OVX options that HAL could access */
gcvOPTION_OVX_ENABLE_NN_ZDP3 = 500,
gcvOPTION_OVX_ENABLE_NN_ZDP6,
gcvOPTION_OVX_ENABLE_NN_STRIDE,
gcvOPTION_OVX_USE_MULTI_DEVICES,
gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_DDR_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_DDR_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_DDR_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_DDR_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_DDR_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_DDR_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_DDR_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_DDR_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_DDR_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_DDR_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_DDR_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_DDR_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_DDR_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_DDR_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_DDR_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_32B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID0_MIN_AXI_BURST_SIZE_16B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_32B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID1_MIN_AXI_BURST_SIZE_16B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_32B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID2_MIN_AXI_BURST_SIZE_16B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_1024B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_512B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_256B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_128B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_64B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_32B,
gcvOPTION_OVX_ENABLE_VIP_AXI_ID3_MIN_AXI_BURST_SIZE_16B,
#endif
/* Insert option above this comment only */
gcvOPTION_COUNT /* Not a OPTION*/
} gceOPTION;
typedef enum _gceFRAMEINFO {
/* Total frame count in one run */
gcvFRAMEINFO_FRAME_NUM = 0,
/* Total draw count in current frame, including draw/compute */
gcvFRAMEINFO_DRAW_NUM = 1,
/* Total compute count in current frame, subset of drawNum */
gcvFRAMEINFO_COMPUTE_NUM = 2,
/* Total dual16 draw/compute count in current frame, subset of drawNum */
gcvFRAMEINFO_DUAL16_NUM = 3,
/* Current programID is being set. only valid for ES20 driver right now */
gcvFRAMEINFO_PROGRAM_ID = 4,
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_SET = 4,
gcvFRAMEINFO_OP_COUNT,
} gceFRAMEINFO_OP;
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,
/* surface has multiple nodes */
gcvSURF_FLAG_MULTI_NODE = 0x8,
/* surface no need do dither when resovle*/
gcvSURF_FLAG_DITHER_DISABLED = 0x10,
/* surface used a fake hal format */
gcvSURF_FLAG_FAKE_FORMAT = 0x20,
} gceSURF_FLAG;
typedef enum _gceMIPMAP_IMAGE_FORMAT {
gcvUNKNOWN_MIPMAP_IMAGE_FORMAT = -2
} gceMIPMAP_IMAGE_FORMAT;
typedef enum _gceIMAGE_MEM_TYPE {
gcvIMAGE_MEM_DEFAULT,
gcvIMAGE_MEM_HOST_PTR,
gcvIMAGE_MEM_HOST_PTR_UNCACHED,
gcvIMAGE_MEM_HOST_PHY_PTR,
gcvIMAGE_MEM_HOST_PHY_PTR_UNCACHED,
} gceIMAGE_MEM_TYPE;
typedef enum _gceSURF_YUV_COLOR_SPACE {
gcvSURF_ITU_REC601,
gcvSURF_ITU_REC709,
gcvSURF_ITU_REC2020,
} gceSURF_YUV_COLOR_SPACE;
typedef enum _gceSURF_YUV_SAMPLE_RANGE {
gcvSURF_YUV_UNKNOWN_RANGE,
gcvSURF_YUV_FULL_RANGE,
gcvSURF_YUV_NARROW_RANGE,
} gceSURF_YUV_SAMPLE_RANGE;
typedef enum _gceSURF_YUV_CHROMA_SITING {
gcvSURF_YUV_CHROMA_SITING_0,
gcvSURF_YUV_CHROMA_SITING_0_5,
} gceSURF_YUV_CHROMA_SITING;
typedef enum _gceSURF_INFO_TYPE {
gcvSURF_INFO_UNKNOWN = 0,
gcvSURF_INFO_LAYERSIZE = 1,
gcvSURF_INFO_SLICESIZE = 2,
} gceSURF_INFO_TYPE;
/* Format modifiers. */
typedef enum _gceSURF_FORMAT_MODE {
gcvSURF_FORMAT_OCL = 0x80000000,
gcvSURF_FORMAT_PATCH_BORDER = 0x40000000,
} 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_2020,
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;
/* Nature rotation rules. */
typedef enum _gce2D_NATURE_ROTATION {
gcvNR_0_DEGREE = 0,
gcvNR_LEFT_90_DEGREE,
gcvNR_RIGHT_90_DEGREE,
gcvNR_180_DEGREE,
gcvNR_FLIP_X,
gcvNR_FLIP_Y,
gcvNR_TOTAL_RULE,
} gce2D_NATURE_ROTATION;
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_DEC_COMPRESSED = 0x00000020,
gcv2D_TSC_DEC_TPC = 0x00000040,
gcv2D_TSC_DEC_TPC_COMPRESSED = 0x00000080,
gcv2D_TSC_V4_COMPRESSED = 0x00000100,
gcv2D_TSC_V4_COMPRESSED_256B = 0x00000200 | gcv2D_TSC_V4_COMPRESSED,
gcv2D_TSC_DEC_TPC_TILED = gcv2D_TSC_DEC_COMPRESSED | gcv2D_TSC_DEC_TPC,
gcv2D_TSC_DEC_TPC_TILED_COMPRESSED = gcv2D_TSC_DEC_TPC_TILED | gcv2D_TSC_DEC_TPC_COMPRESSED,
gcv2D_TSC_TPC_COMPRESSED = 0x00001000,
gcv2D_TSC_TPC_COMPRESSED_V10 = gcv2D_TSC_TPC_COMPRESSED | 0x00000400,
gcv2D_TSC_TPC_COMPRESSED_V11 = gcv2D_TSC_TPC_COMPRESSED | 0x00000800,
} gce2D_TILE_STATUS_CONFIG;
typedef enum _gce2D_DEC400_MINOR_VERSION {
gcv2D_DEC400_MINOR_V1 = 1,
gcv2D_DEC400_MINOR_V2 = 2,
gcv2D_DEC400_MINOR_V3 = 3,
gcv2D_DEC400_MINOR_V4 = 4,
} gce2D_DEC400_MINOR_VERSION;
/*Tiling version when disable compression*/
typedef enum _gce2D_TILING_MINOR_VERSION {
gcv2D_TILING_MINOR_V1 = 0,
gcv2D_TILING_MINOR_V2 = 1,
} gce2D_TILING_MINOR_VERSION;
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,
gcv2D_QUERY_DEC400_MINOR_VERSION,
gcv2D_QUERY_TILING_MINOR_VERSION,
} 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_MULTI_SRC_BLIT_BILINEAR_FILTER,
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,
gcv2D_STATE_DEC_TPC_NV12_10BIT = 0x20001,
gcv2D_STATE_ARRAY_YUV_SRC_TILE_STATUS_ADDR,
gcv2D_STATE_ARRAY_YUV_DST_TILE_STATUS_ADDR,
} 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_2D_MS,
gcvTEXTURE_2D_MS_ARRAY,
gcvTEXTURE_CUBEMAP_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 = 1,
gcvENDIAN_SWAP_DWORD = 2,
gcvENDIAN_SWAP_QWORD = 3,
} 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 = 0x10,
gcvTILING_X_MAJOR = 0x20,
gcvTILING_Y_MAJOR = 0x40,
gcvTILING_SWAP = 0x80,
/* Tiling combination layouts. */
gcvMULTI_TILED = gcvTILED | gcvTILING_SPLIT_BUFFER,
gcvMULTI_SUPERTILED = gcvSUPERTILED | gcvTILING_SPLIT_BUFFER,
gcvYMAJOR_SUPERTILED = gcvSUPERTILED | gcvTILING_Y_MAJOR,
gcvTILED_8X4 = 0x0100,
gcvTILED_4X8 = 0x0100 | gcvTILING_SWAP,
gcvTILED_8X8 = 0x0200,
gcvTILED_16X4 = 0x0400,
gcvTILED_32X4 = 0x0800,
gcvTILED_64X4 = 0x1000,
gcvTILED_8X8_XMAJOR = gcvTILED_8X8 | gcvTILING_X_MAJOR,
gcvTILED_8X8_YMAJOR = gcvTILED_8X8 | gcvTILING_Y_MAJOR,
gcvSUPERTILED_128B = 0x10000 | gcvSUPERTILED,
gcvSUPERTILED_256B = 0x20000 | gcvSUPERTILED,
} gceTILING;
typedef enum _gceCACHE_MODE {
gcvCACHE_NONE,
gcvCACHE_128,
gcvCACHE_256,
} gceCACHE_MODE;
#define DEFAULT_CACHE_MODE gcvCACHE_256
/* 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;
typedef enum _gceMMU_MODE {
gcvMMU_MODE_1K,
gcvMMU_MODE_4K,
} gceMMU_MODE;
/* 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_SRGBDECODE {
gcvTEXTURE_SRGB_INVALID = 0,
gcvTEXTURE_DECODE,
gcvTEXTURE_SKIP_DECODE,
} gceTEXTURE_SRGBDECODE;
typedef enum _gceTEXTURE_COMPARE_MODE {
gcvTEXTURE_COMPARE_MODE_INVALID = 0,
gcvTEXTURE_COMPARE_MODE_NONE,
gcvTEXTURE_COMPARE_MODE_REF,
} gceTEXTURE_COMPARE_MODE;
typedef enum _gceTEXTURE_DS_MODE {
gcvTEXTURE_DS_MODE_INVALID = 0,
gcvTEXTURE_DS_MODE_DEPTH = 1,
gcvTEXTURE_DS_MODE_STENCIL = 2,
} gceTEXTURE_DS_MODE;
typedef enum _gceTEXTURE_DS_TEX_MODE {
gcvTEXTURE_DS_TEXTURE_MODE_LUMINANCE = 0,
gcvTEXTURE_DS_TEXTURE_MODE_INTENSITY,
gcvTEXTURE_DS_TEXTURE_MODE_ALPHA,
gcvTEXTURE_DS_TEXTURE_MODE_RED,
gcvTEXTURE_DS_TEXTURE_MODE_INVALID,
} gceTEXTURE_DS_TEX_MODE;
/* Texture stage */
typedef enum _gceTEXTURE_STAGE {
gcvTEXTURE_STAGE_INVALID = -1,
gcvTEXTURE_STAGE_VS = 0,
gcvTEXTURE_STAGE_TCS,
gcvTEXTURE_STAGE_TES,
gcvTEXTURE_STAGE_GS,
gcvTEXTURE_STAGE_FS,
gcvTEXTURE_STAGE_CS,
gcvTEXTURE_STAGE_LAST
} gceTEXTURE_STAGE;
/* 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,
gcvPRIMITIVE_LINES_ADJACENCY,
gcvPRIMITIVE_LINE_STRIP_ADJACENCY,
gcvPRIMITIVE_TRIANGLES_ADJACENCY,
gcvPRIMITIVE_TRIANGLE_STRIP_ADJACENCY,
gcvPRIMITIVE_PATCH_LIST,
} 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,
gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED,
gcvMULTI_GPU_RENDERING_MODE_INVALID
} gceMULTI_GPU_RENDERING_MODE;
typedef enum _gceMACHINECODE {
gcvMACHINECODE_ANTUTU0 = 0x0,
gcvMACHINECODE_GLB27_RELEASE_0,
gcvMACHINECODE_GLB25_RELEASE_0,
gcvMACHINECODE_GLB25_RELEASE_1,
gcvMACHINECODE_COUNT,
/* flag as dynamic allocation for shader partial replace */
gcvSHADER_SRC_PARTIAL_REPLACE,
} gceMACHINECODE;
typedef enum _gceUNIFORMCVT {
gcvUNIFORMCVT_NONE = 0,
gcvUNIFORMCVT_TO_BOOL,
gcvUNIFORMCVT_TO_FLOAT,
} gceUNIFORMCVT;
typedef enum _gceHAL_ARG_VERSION {
gcvHAL_ARG_VERSION_V1 = 0x0,
gcvHAL_ARG_VERSION_V2,
} gceHAL_ARG_VERSION;
/** endian mode for each 2Bytes
* endian mode endian
* mode0: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
* mode1: 1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14
* mode2: 2 3 0 1 6 7 4 5 10 11 8 9 14 15 12 13
* mode3: 3 2 1 0 7 6 5 4 11 10 9 8 15 14 13 12
* mode4: 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3
* mode5: 13 12 15 14 9 8 11 10 5 4 7 6 1 0 3 2
* mode6: 14 15 12 13 10 11 8 9 6 7 4 5 2 3 0 1
* mode7: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
**/
typedef enum _gceENDIAN_MODE {
gcvENDIAN_MODE0 = 0x0, /* endian mode0 */
gcvENDIAN_MODE1 = 0x1, /* endian mode1 */
gcvENDIAN_MODE2 = 0x2, /* endian mode2 */
gcvENDIAN_MODE3 = 0x3, /* endian mode3 */
gcvENDIAN_MODE4 = 0x4, /* endian mode4 */
gcvENDIAN_MODE5 = 0x5, /* endian mode5 */
gcvENDIAN_MODE6 = 0x6, /* endian mode6 */
gcvENDIAN_MODE7 = 0x7, /* endian mode7 */
} gceENDIAN_MODE;
typedef enum _gceHW_FE_TYPE {
gcvHW_FE_WAIT_LINK,
gcvHW_FE_ASYNC,
gcvHW_FE_MULTI_CHANNEL,
gcvHW_FE_END,
} gceHW_FE_TYPE;
typedef enum _gceMCFE_CHANNEL_TYPE {
gcvMCFE_CHANNEL_NONE = 0,
gcvMCFE_CHANNEL_SYSTEM,
gcvMCFE_CHANNEL_SHADER,
gcvMCFE_CHANNEL_NN,
gcvMCFE_CHANNEL_TP,
gcvMCFE_CHANNEL_3DBLIT = 128,
} gceMCFE_CHANNEL_TYPE;
typedef enum _gcePAGE_TYPE {
gcvPAGE_TYPE_4K,
gcvPAGE_TYPE_64K,
gcvPAGE_TYPE_1M,
gcvPAGE_TYPE_16M,
} gcePAGE_TYPE;
typedef enum _gceAREA_TYPE {
gcvAREA_TYPE_UNKNOWN = 0,
gcvAREA_TYPE_FLATMAP,
gcvAREA_TYPE_1M,
gcvAREA_TYPE_4K,
} gceAREA_TYPE;
typedef enum _gce2D_U8ToU10_CONVERSION_MODE
{
gcvADD_LOWER_BITS,
gcvNOT_ADD_LOWER_BITS,
gcvNOT_ADD_HIGHER_BITS
} gce2D_U8ToU10_CONVERSION_MODE;
typedef enum _gce2D_NORMALIZATION_MODE
{
gcvNORMALIZATION_STD_Z_SCORE,
gcvNORMALIZATION_Z_SCORE,
gcvNORMALIZATION_MIN_MAX,
} gce2D_NORMALIZATION_MODE;
typedef enum _gce2D_MULTICORE_MODE
{
gcvMULTICORE_COMBINED_MODE = 0,
gcvMULTICORE_INDEPENDENT_MODE
}gce2D_MULTICORE_MODE;
typedef enum _gce2D_MULTICORE_INDEX
{
gcv2D_CORE_0 = 0,
gcv2D_CORE_1,
gcv2D_CORE_2,
gcv2D_CORE_3,
}gce2D_MULTICORE_INDEX;
/* Available enumeration values that can be used to set 2D state */
typedef enum _gce2D_STATE_KEY
{
gcvNORMALIZATION_ENABLE = 0,
gcvNORMALIZATION_MODE,
gcvNORMALIZATION_MAXMINRECIPROCAL,
gcvNORMALIZATION_MINVALUE,
gcvNORMALIZATION_MEANVALUE,
gcvNORMALIZATION_STDRECIPROCAL,
gcvQUANTIZATION_STEPRECIPROCAL,
gcvQUANTIZATION_BYPASSSTEPQUANTIZATION,
gcvUINT8_2_UINT10_CONVERSION_MODE,
gcvMulticoreMode,
gcvSTATE_TAIL,
} gce2D_STATE_KEY;
/*******************************************************************************
** Broadcast interface.
*/
typedef enum _gceBROADCAST {
/* GPU might be idle. */
gcvBROADCAST_GPU_IDLE,
/* A commit is going to happen. */
gcvBROADCAST_GPU_COMMIT,
/* GPU seems to be stuck. */
gcvBROADCAST_GPU_STUCK,
/* First process gets attached. */
gcvBROADCAST_FIRST_PROCESS,
/* Last process gets detached. */
gcvBROADCAST_LAST_PROCESS,
/* AXI bus error. */
gcvBROADCAST_AXI_BUS_ERROR,
/* Out of memory. */
gcvBROADCAST_OUT_OF_MEMORY,
} gceBROADCAST;
/* Notifications. */
typedef enum _gceNOTIFY {
gcvNOTIFY_INTERRUPT,
gcvNOTIFY_COMMAND_QUEUE,
} gceNOTIFY;
/* Flush flags. */
typedef enum _gceKERNEL_FLUSH {
gcvFLUSH_COLOR = 0x01,
gcvFLUSH_DEPTH = 0x02,
gcvFLUSH_TEXTURE = 0x04,
gcvFLUSH_2D = 0x08,
gcvFLUSH_L2 = 0x10,
gcvFLUSH_TILE_STATUS = 0x20,
gcvFLUSH_ICACHE = 0x40,
gcvFLUSH_TXDESC = 0x80,
gcvFLUSH_FENCE = 0x100,
gcvFLUSH_VERTEX = 0x200,
gcvFLUSH_TFBHEADER = 0x400,
gcvFLUSH_ALL = gcvFLUSH_COLOR
| gcvFLUSH_DEPTH
| gcvFLUSH_TEXTURE
| gcvFLUSH_2D
| gcvFLUSH_L2
| gcvFLUSH_TILE_STATUS
| gcvFLUSH_ICACHE
| gcvFLUSH_TXDESC
| gcvFLUSH_FENCE
| gcvFLUSH_VERTEX
| gcvFLUSH_TFBHEADER
} gceKERNEL_FLUSH;
typedef enum _gceCOUNTER {
gcvCOUNTER_FRONT_END,
gcvCOUNTER_VERTEX_SHADER,
gcvCOUNTER_PRIMITIVE_ASSEMBLY,
gcvCOUNTER_SETUP,
gcvCOUNTER_RASTERIZER,
gcvCOUNTER_PIXEL_SHADER,
gcvCOUNTER_TEXTURE,
gcvCOUNTER_PIXEL_ENGINE,
gcvCOUNTER_MEMORY_CONTROLLER_COLOR,
gcvCOUNTER_MEMORY_CONTROLLER_DEPTH,
gcvCOUNTER_HOST_INTERFACE0,
gcvCOUNTER_HOST_INTERFACE1,
gcvCOUNTER_GPUL2_CACHE,
gcvCOUNTER_COUNT
} gceCOUNTER;
typedef enum _gceProfilerClient {
gcvCLIENT_OPENGLES11 = 1,
gcvCLIENT_OPENGLES,
gcvCLIENT_OPENGL,
gcvCLIENT_OPENVG,
gcvCLIENT_OPENCL,
gcvCLIENT_OPENVX,
gcvCLIENT_OPENVK,
} gceProfilerClient;
typedef enum _gceCOUNTER_OPTYPE {
gcvCOUNTER_OP_DRAW = 0,
gcvCOUNTER_OP_BLT = 1,
gcvCOUNTER_OP_COMPUTE = 2,
gcvCOUNTER_OP_RS = 3,
gcvCOUNTER_OP_FINISH = 4,
gcvCOUNTER_OP_FRAME = 5,
gcvCOUNTER_OP_OPERATION = 6,
gcvCOUNTER_OP_NONE = 7
}
gceCOUNTER_OPTYPE;
typedef enum _gceProbeStatus {
gcvPROBE_Disabled = 0,
gcvPROBE_Paused = 1,
gcvPROBE_Enabled = 2,
} gceProbeStatus;
typedef enum _gceProbeCmd {
gcvPROBECMD_BEGIN = 0,
gcvPROBECMD_PAUSE = 1,
gcvPROBECMD_RESUME = 2,
gcvPROBECMD_END = 3,
} gceProbeCmd;
/*******************************************************************************
* Events. *********************************************************************
*/
typedef enum _halEventType {
/* Keyboard event. */
HAL_KEYBOARD,
/* Mouse move event. */
HAL_POINTER,
/* Mouse button event. */
HAL_BUTTON,
/* Application close event. */
HAL_CLOSE,
/* Application window has been updated. */
HAL_WINDOW_UPDATE
} halEventType;
/* Scancodes for keyboard. */
typedef enum _halKeys {
HAL_UNKNOWN = -1,
HAL_BACKSPACE = 0x08,
HAL_TAB,
HAL_ENTER = 0x0D,
HAL_ESCAPE = 0x1B,
HAL_SPACE = 0x20,
HAL_SINGLEQUOTE = 0x27,
HAL_PAD_ASTERISK = 0x2A,
HAL_COMMA = 0x2C,
HAL_HYPHEN,
HAL_PERIOD,
HAL_SLASH,
HAL_0,
HAL_1,
HAL_2,
HAL_3,
HAL_4,
HAL_5,
HAL_6,
HAL_7,
HAL_8,
HAL_9,
HAL_SEMICOLON = 0x3B,
HAL_EQUAL = 0x3D,
HAL_A = 0x41,
HAL_B,
HAL_C,
HAL_D,
HAL_E,
HAL_F,
HAL_G,
HAL_H,
HAL_I,
HAL_J,
HAL_K,
HAL_L,
HAL_M,
HAL_N,
HAL_O,
HAL_P,
HAL_Q,
HAL_R,
HAL_S,
HAL_T,
HAL_U,
HAL_V,
HAL_W,
HAL_X,
HAL_Y,
HAL_Z,
HAL_LBRACKET,
HAL_BACKSLASH,
HAL_RBRACKET,
HAL_BACKQUOTE = 0x60,
HAL_F1 = 0x80,
HAL_F2,
HAL_F3,
HAL_F4,
HAL_F5,
HAL_F6,
HAL_F7,
HAL_F8,
HAL_F9,
HAL_F10,
HAL_F11,
HAL_F12,
HAL_LCTRL,
HAL_RCTRL,
HAL_LSHIFT,
HAL_RSHIFT,
HAL_LALT,
HAL_RALT,
HAL_CAPSLOCK,
HAL_NUMLOCK,
HAL_SCROLLLOCK,
HAL_PAD_0,
HAL_PAD_1,
HAL_PAD_2,
HAL_PAD_3,
HAL_PAD_4,
HAL_PAD_5,
HAL_PAD_6,
HAL_PAD_7,
HAL_PAD_8,
HAL_PAD_9,
HAL_PAD_HYPHEN,
HAL_PAD_PLUS,
HAL_PAD_SLASH,
HAL_PAD_PERIOD,
HAL_PAD_ENTER,
HAL_SYSRQ,
HAL_PRNTSCRN,
HAL_BREAK,
HAL_UP,
HAL_LEFT,
HAL_RIGHT,
HAL_DOWN,
HAL_HOME,
HAL_END,
HAL_PGUP,
HAL_PGDN,
HAL_INSERT,
HAL_DELETE,
HAL_LWINDOW,
HAL_RWINDOW,
HAL_MENU,
HAL_POWER,
HAL_SLEEP,
HAL_WAKE
} halKeys;
/*!
* @brief Command codes between kernel module and TrustZone
* @discussion
* Critical services must be done in TrustZone to avoid sensitive content leak.
* Most of kernel module is kept in non-Secure os to minimize code in TrustZone.
*/
typedef enum kernel_packet_command {
KERNEL_START_COMMAND,
KERNEL_SUBMIT,
KERNEL_MAP_MEMORY, /* */
KERNEL_UNMAP_MEMORY,
KERNEL_ALLOCATE_SECRUE_MEMORY, /*! Security memory management. */
KERNEL_FREE_SECURE_MEMORY,
KERNEL_EXECUTE, /* Execute a command buffer. */
KERNEL_DUMP_MMU_EXCEPTION,
KERNEL_HANDLE_MMU_EXCEPTION,
KERNEL_READ_MMU_EXCEPTION,
} kernel_packet_command_t;
enum {
gcvTA_COMMAND_INIT,
gcvTA_COMMAND_DISPATCH,
gcvTA_CALLBACK_ALLOC_SECURE_MEM,
gcvTA_CALLBACK_FREE_SECURE_MEM,
};
typedef enum {
gcvFENCE_TYPE_READ = 0x1,
gcvFENCE_TYPE_WRITE = 0x2,
gcvFENCE_TYPE_ALL = gcvFENCE_TYPE_READ | gcvFENCE_TYPE_WRITE,
gcvFNECE_TYPE_INVALID = 0x10000,
} gceFENCE_TYPE;
typedef enum _gceTLS_KEY {
gcvTLS_KEY_EGL,
gcvTLS_KEY_OPENGL_ES,
gcvTLS_KEY_OPENVG,
gcvTLS_KEY_OPENGL,
gcvTLS_KEY_OPENCL,
gcvTLS_KEY_OPENVX,
gcvTLS_KEY_COUNT
} gceTLS_KEY;
typedef enum _gcePLS_VALUE {
gcePLS_VALUE_EGL_DISPLAY_INFO,
gcePLS_VALUE_EGL_CONFIG_FORMAT_INFO,
gcePLS_VALUE_EGL_DESTRUCTOR_INFO,
} gcePLS_VALUE;
#if gcdENABLE_3D
/* Blending functions. */
typedef enum _gceBLEND_FUNCTION {
gcvBLEND_ZERO,
gcvBLEND_ONE,
gcvBLEND_SOURCE_COLOR,
gcvBLEND_INV_SOURCE_COLOR,
gcvBLEND_SOURCE_ALPHA,
gcvBLEND_INV_SOURCE_ALPHA,
gcvBLEND_TARGET_COLOR,
gcvBLEND_INV_TARGET_COLOR,
gcvBLEND_TARGET_ALPHA,
gcvBLEND_INV_TARGET_ALPHA,
gcvBLEND_SOURCE_ALPHA_SATURATE,
gcvBLEND_CONST_COLOR,
gcvBLEND_INV_CONST_COLOR,
gcvBLEND_CONST_ALPHA,
gcvBLEND_INV_CONST_ALPHA,
} gceBLEND_FUNCTION;
/* Blending modes. */
typedef enum _gceBLEND_MODE {
gcvBLEND_ADD = 0,
gcvBLEND_SUBTRACT,
gcvBLEND_REVERSE_SUBTRACT,
gcvBLEND_MIN,
gcvBLEND_MAX,
gcvBLEND_MULTIPLY,
gcvBLEND_SCREEN,
gcvBLEND_OVERLAY,
gcvBLEND_DARKEN,
gcvBLEND_LIGHTEN,
gcvBLEND_COLORDODGE,
gcvBLEND_COLORBURN,
gcvBLEND_HARDLIGHT,
gcvBLEND_SOFTLIGHT,
gcvBLEND_DIFFERENCE,
gcvBLEND_EXCLUSION,
gcvBLEND_HSL_HUE,
gcvBLEND_HSL_SATURATION,
gcvBLEND_HSL_COLOR,
gcvBLEND_HSL_LUMINOSITY,
gcvBLEND_TOTAL
} gceBLEND_MODE;
/* Depth modes. */
typedef enum _gceDEPTH_MODE {
gcvDEPTH_NONE,
gcvDEPTH_Z,
gcvDEPTH_W,
} gceDEPTH_MODE;
#endif /* gcdENABLE_3D */
/* API flags. */
typedef enum _gceAPI {
gcvAPI_D3D = 1,
gcvAPI_OPENGL_ES11,
gcvAPI_OPENGL_ES20,
gcvAPI_OPENGL_ES30,
gcvAPI_OPENGL_ES31,
gcvAPI_OPENGL_ES32,
gcvAPI_OPENGL,
gcvAPI_OPENVG,
gcvAPI_OPENCL,
gcvAPI_OPENVK,
} gceAPI;
typedef enum _gceWHERE {
gcvWHERE_COMMAND_PREFETCH = 0,
gcvWHERE_COMMAND,
gcvWHERE_RASTER,
gcvWHERE_PIXEL,
gcvWHERE_BLT,
} gceWHERE;
typedef enum _gceHOW {
gcvHOW_SEMAPHORE = 0x1,
gcvHOW_STALL = 0x2,
gcvHOW_SEMAPHORE_STALL = 0x3,
} gceHOW;
typedef enum _gceSignalHandlerType {
gcvHANDLE_SIGFPE_WHEN_SIGNAL_CODE_IS_0 = 0x1,
} gceSignalHandlerType;
typedef enum _gceFILE_MODE {
gcvFILE_CREATE = 0,
gcvFILE_APPEND,
gcvFILE_READ,
gcvFILE_CREATETEXT,
gcvFILE_APPENDTEXT,
gcvFILE_READTEXT,
gcvFILE_READWRITE,
} gceFILE_MODE;
typedef enum _gceFILE_WHENCE {
gcvFILE_SEEK_SET,
gcvFILE_SEEK_CUR,
gcvFILE_SEEK_END
} gceFILE_WHENCE;
/* Color format classes. */
typedef enum _gceFORMAT_CLASS {
gcvFORMAT_CLASS_RGBA = 4500,
gcvFORMAT_CLASS_YUV,
gcvFORMAT_CLASS_INDEX,
gcvFORMAT_CLASS_LUMINANCE,
gcvFORMAT_CLASS_BUMP,
gcvFORMAT_CLASS_DEPTH,
gcvFORMAT_CLASS_ASTC,
gcvFORMAT_CLASS_COMPRESSED,
gcvFORMAT_CLASS_OTHER,
gcvFORMAT_CLASS_INTENSITY
} gceFORMAT_CLASS;
/* Color format data type */
typedef enum _gceFORMAT_DATATYPE {
gcvFORMAT_DATATYPE_UNSIGNED_NORMALIZED,
gcvFORMAT_DATATYPE_SIGNED_NORMALIZED,
gcvFORMAT_DATATYPE_UNSIGNED_INTEGER,
gcvFORMAT_DATATYPE_SIGNED_INTEGER,
gcvFORMAT_DATATYPE_FLOAT16,
gcvFORMAT_DATATYPE_FLOAT32,
gcvFORMAT_DATATYPE_FLOAT_E5B9G9R9,
gcvFORMAT_DATATYPE_FLOAT_B10G11R11F,
gcvFORMAT_DATATYPE_INDEX,
gcvFORMAT_DATATYPE_SRGB,
gcvFORMAT_DATATYPE_FLOAT32_UINT,
} gceFORMAT_DATATYPE;
typedef enum _gceORIENTATION {
gcvORIENTATION_TOP_BOTTOM,
gcvORIENTATION_BOTTOM_TOP,
} gceORIENTATION;
/* Special enums for width field in gcsFORMAT_COMPONENT. */
typedef enum _gceCOMPONENT_CONTROL {
gcvCOMPONENT_NOTPRESENT = 0x00,
gcvCOMPONENT_DONTCARE = 0x80,
gcvCOMPONENT_WIDTHMASK = 0x7F,
gcvCOMPONENT_ODD = 0x80
} gceCOMPONENT_CONTROL;
/* User option. */
typedef enum _gceDEBUG_MSG {
gcvDEBUG_MSG_NONE,
gcvDEBUG_MSG_ERROR,
gcvDEBUG_MSG_WARNING
} gceDEBUG_MSG;
/* Compressed format now was defined same as dec400d, should be general. */
typedef enum _VIV_COMPRESS_FMT {
_VIV_CFMT_ARGB8 = 0,
_VIV_CFMT_XRGB8,
_VIV_CFMT_AYUV,
_VIV_CFMT_UYVY,
_VIV_CFMT_YUY2,
_VIV_CFMT_YUV_ONLY,
_VIV_CFMT_UV_MIX,
_VIV_CFMT_ARGB4,
_VIV_CFMT_XRGB4,
_VIV_CFMT_A1R5G5B5,
_VIV_CFMT_X1R5G5B5,
_VIV_CFMT_R5G6B5,
_VIV_CFMT_Z24S8,
_VIV_CFMT_Z24,
_VIV_CFMT_Z16,
_VIV_CFMT_A2R10G10B10,
_VIV_CFMT_BAYER,
_VIV_CFMT_SIGNED_BAYER,
_VIV_CFMT_VAA16,
_VIV_CFMT_S8,
_VIV_CFMT_MAX,
} _VIV_COMPRESS_FMT;
typedef enum _gcePROGRAM_STAGE {
gcvPROGRAM_STAGE_VERTEX = 0x0,
gcvPROGRAM_STAGE_TCS = 0x1,
gcvPROGRAM_STAGE_TES = 0x2,
gcvPROGRAM_STAGE_GEOMETRY = 0x3,
gcvPROGRAM_STAGE_GPIPE_COUNT = 0x4,
gcvPROGRAM_STAGE_FRAGMENT = 0x4,
gcvPROGRAM_STAGE_GRAPHICS_COUNT = 0x5,
gcvPROGRAM_STAGE_COMPUTE = 0x5,
gcvPROGRAM_STAGE_OPENCL = 0x6,
gcvPROGRAM_STAGE_LAST
} gcePROGRAM_STAGE;
typedef enum _gcePROGRAM_STAGE_BIT {
gcvPROGRAM_STAGE_VERTEX_BIT = 1 << gcvPROGRAM_STAGE_VERTEX,
gcvPROGRAM_STAGE_TCS_BIT = 1 << gcvPROGRAM_STAGE_TCS,
gcvPROGRAM_STAGE_TES_BIT = 1 << gcvPROGRAM_STAGE_TES,
gcvPROGRAM_STAGE_GEOMETRY_BIT = 1 << gcvPROGRAM_STAGE_GEOMETRY,
gcvPROGRAM_STAGE_FRAGMENT_BIT = 1 << gcvPROGRAM_STAGE_FRAGMENT,
gcvPROGRAM_STAGE_COMPUTE_BIT = 1 << gcvPROGRAM_STAGE_COMPUTE,
gcvPROGRAM_STAGE_OPENCL_BIT = 1 << gcvPROGRAM_STAGE_OPENCL,
} gcePROGRAM_STAGE_BIT;
typedef enum _gceBLIT_FLAG {
gcvBLIT_FLAG_SKIP_DEPTH_WRITE = 1 << 0,
gcvBLIT_FLAG_SKIP_STENCIL_WRITE = 1 << 1,
} gceBLIT_FLAG;
/* Clear flags. */
typedef enum _gceCLEAR {
gcvCLEAR_COLOR = 0x1,
gcvCLEAR_DEPTH = 0x2,
gcvCLEAR_STENCIL = 0x4,
gcvCLEAR_HZ = 0x8,
gcvCLEAR_WITH_GPU_ONLY = 0x100,
gcvCLEAR_WITH_CPU_ONLY = 0x200,
gcvCLEAR_MULTI_SLICES = 0x400,
} gceCLEAR;
typedef enum _gceBLIT_TYPE {
gcvBLIT_DRAW_CLEAR = 0,
gcvBLIT_DRAW_BLIT = 1,
gcvBLIT_DRAW_BLIT_DEPTH = 2,
gcvBLIT_COMPUTE_BLIT = 3,
/* last number, not a real type */
gcvBLIT_NUM_TYPE
} gceBLIT_TYPE;
typedef enum _gceSPLIT_DRAW_TYPE {
gcvSPLIT_DRAW_UNKNOWN = 0x0,
gcvSPLIT_DRAW_1,
gcvSPLIT_DRAW_2,
gcvSPLIT_DRAW_3,
gcvSPLIT_DRAW_4,
gcvSPLIT_DRAW_XFB,
gcvSPLIT_DRAW_INDEX_FETCH,
gcvSPLIT_DRAW_TCS,
gcvSPLIT_DRAW_STIPPLE,
gcvSPLIT_DRAW_WIDE_LINE,
gcvSPLIT_DRAW_LINES_HW_ZERO_AREA_LINE_PATCH,
gcvSPLIT_DRAW_LAST
} gceSPLIT_DRAW_TYPE;
/* Blending targets. */
typedef enum _gceBLEND_UNIT {
gcvBLEND_SOURCE,
gcvBLEND_TARGET,
} gceBLEND_UNIT;
typedef enum _gceXfbCmd {
gcvXFBCMD_BEGIN = 0,
gcvXFBCMD_PAUSE = 1,
gcvXFBCMD_RESUME = 2,
gcvXFBCMD_END = 3,
gcvXFBCMD_PAUSE_INCOMMIT = 4,
gcvXFBCMD_RESUME_INCOMMIT = 5,
gcvXFBCMD_INVALID = 6,
} gceXfbCmd;
typedef enum _gceXfbStatus {
gcvXFB_Disabled = 0,
gcvXFB_Paused,
gcvXFB_Enabled,
} gceXfbStatus;
typedef enum _gceQueryStatus {
gcvQUERY_Disabled = 0,
gcvQUERY_Paused = 1,
gcvQUERY_Enabled = 2,
} gceQueryStatus;
typedef enum _gceQueryCmd {
gcvQUERYCMD_BEGIN = 0,
gcvQUERYCMD_PAUSE = 1,
gcvQUERYCMD_RESUME = 2,
gcvQUERYCMD_END = 3,
gcvQUERYCMD_INVALID = 4,
} gceQueryCmd;
typedef enum _gceQueryType {
gcvQUERY_OCCLUSION = 0,
gcvQUERY_XFB_WRITTEN = 1,
gcvQUERY_PRIM_GENERATED = 2,
gcvQUERY_TIME_ELAPSED = 3,
gcvQUERY_MAX_NUM = 4,
} gceQueryType;
/* Cube faces. */
typedef enum _gceTEXTURE_FACE {
gcvFACE_NONE = 0,
gcvFACE_POSITIVE_X,
gcvFACE_NEGATIVE_X,
gcvFACE_POSITIVE_Y,
gcvFACE_NEGATIVE_Y,
gcvFACE_POSITIVE_Z,
gcvFACE_NEGATIVE_Z,
} gceTEXTURE_FACE;
typedef enum _gceVERTEX_FORMAT {
gcvVERTEX_BYTE,
gcvVERTEX_UNSIGNED_BYTE,
gcvVERTEX_SHORT,
gcvVERTEX_UNSIGNED_SHORT,
gcvVERTEX_INT,
gcvVERTEX_UNSIGNED_INT,
gcvVERTEX_FIXED,
gcvVERTEX_HALF,
gcvVERTEX_FLOAT,
gcvVERTEX_DOUBLE,
gcvVERTEX_UNSIGNED_INT_10_10_10_2,
gcvVERTEX_INT_10_10_10_2,
gcvVERTEX_UNSIGNED_INT_2_10_10_10_REV,
gcvVERTEX_INT_2_10_10_10_REV,
/* integer format */
gcvVERTEX_INT8,
gcvVERTEX_INT16,
gcvVERTEX_INT32,
} gceVERTEX_FORMAT;
/* What the SW converting scheme to create temp attrib */
typedef enum _gceATTRIB_SCHEME {
gcvATTRIB_SCHEME_KEEP = 0,
gcvATTRIB_SCHEME_2_10_10_10_REV_TO_FLOAT,
gcvATTRIB_SCHEME_BYTE_TO_IVEC4,
gcvATTRIB_SCHEME_SHORT_TO_IVEC4,
gcvATTRIB_SCHEME_INT_TO_IVEC4,
gcvATTRIB_SCHEME_UBYTE_TO_UVEC4,
gcvATTRIB_SCHEME_USHORT_TO_UVEC4,
gcvATTRIB_SCHEME_UINT_TO_UVEC4,
gcvATTRIB_SCHEME_DOUBLE_TO_FLOAT,
gcvATTRIB_SCHEME_UBYTE_BGRA_TO_UBYTE_RGBA,
gcvATTRIB_SCHEME_2_10_10_10_REV_BGRA_TO_FLOAT_RGBA,
} gceATTRIB_SCHEME;
typedef enum _gceBUFOBJ_TYPE {
gcvBUFOBJ_TYPE_ARRAY_BUFFER = 1,
gcvBUFOBJ_TYPE_ELEMENT_ARRAY_BUFFER = 2,
gcvBUFOBJ_TYPE_UNIFORM_BUFFER = 3,
gcvBUFOBJ_TYPE_DRAW_INDIRECT_BUFFER = 4,
gcvBUFOBJ_TYPE_XFB_BUFFER = 5,
gcvBUFOBJ_TYPE_GENERIC_BUFFER = 100
} gceBUFOBJ_TYPE;
typedef enum _gceBUFOBJ_USAGE {
gcvBUFOBJ_USAGE_NONE = 0x0,
gcvBUFOBJ_USAGE_STREAM_DRAW = 0x1,
gcvBUFOBJ_USAGE_STREAM_READ = 0x2,
gcvBUFOBJ_USAGE_STREAM_COPY = 0x3,
gcvBUFOBJ_USAGE_STATIC_DRAW = 0x4,
gcvBUFOBJ_USAGE_STATIC_READ = 0x5,
gcvBUFOBJ_USAGE_STATIC_COPY = 0x6,
gcvBUFOBJ_USAGE_DYNAMIC_DRAW = 0x7,
gcvBUFOBJ_USAGE_DYNAMIC_READ = 0x8,
gcvBUFOBJ_USAGE_DYNAMIC_COPY = 0x9,
gcvBUFOBJ_USAGE_PROBE_COUTNER = 0x10,
/* Use 8bits to save the usage. */
gcvBUFOBJ_USAGE_MASK = 0xFF,
/* Some special flags. */
/* special patch for optimaize performance,
* no fence and duplicate stream to ensure data correct
*/
gcvBUFOBJ_USAGE_FLAG_DISABLE_FENCE_DYNAMIC_STREAM = 0x100,
/* This buffer object is used by driver,
* so we need to copy the data to the logical memory.
*/
gcvBUFOBJ_USAGE_FLAG_DATA_USED_BY_DRIVER = 0x200,
/* Allocate video memory under 4GB. */
gcvBUFOBJ_USAGE_FLAG_32BIT_VA = 0x400,
} gceBUFOBJ_USAGE;
/**
** @ingroup gcoVG
**
** @brief Channel mask values.
**
** This enumeration defines the values for channel mask used in image
** filtering.
*/
/******************************************************************************
******************************** VG Enumerations *****************************
******************************************************************************/
/**
** @ingroup gcoVG
**
** @brief Tiling mode for painting and imagig.
**
** This enumeration defines the tiling modes supported by the HAL. This is
** in fact a one-to-one mapping of the OpenVG 1.1 tile modes.
*/
typedef enum _gceTILE_MODE {
gcvTILE_FILL,
gcvTILE_PAD,
gcvTILE_REPEAT,
gcvTILE_REFLECT
} gceTILE_MODE;
/******************************************************************************/
/** @ingroup gcoVG
**
** @brief The different paint modes.
**
** This enumeration lists the available paint modes.
*/
typedef enum _gcePAINT_TYPE {
/** Solid color. */
gcvPAINT_MODE_SOLID,
/** Linear gradient. */
gcvPAINT_MODE_LINEAR,
/** Radial gradient. */
gcvPAINT_MODE_RADIAL,
/** Pattern. */
gcvPAINT_MODE_PATTERN,
/** Mode count. */
gcvPAINT_MODE_COUNT
} gcePAINT_TYPE;
/**
** @ingroup gcoVG
**
** @brief Types of path data supported by HAL.
**
** This enumeration defines the types of path data supported by the HAL.
** This is in fact a one-to-one mapping of the OpenVG 1.1 path types.
*/
typedef enum _gcePATHTYPE {
gcePATHTYPE_UNKNOWN = -1,
gcePATHTYPE_INT8,
gcePATHTYPE_INT16,
gcePATHTYPE_INT32,
gcePATHTYPE_FLOAT
} gcePATHTYPE;
/**
** @ingroup gcoVG
**
** @brief Supported path segment commands.
**
** This enumeration defines the path segment commands supported by the HAL.
*/
typedef enum _gceVGCMD {
gcvVGCMD_END, /* 0: 0x00 */
gcvVGCMD_CLOSE, /* 1: 0x01 */
gcvVGCMD_MOVE, /* 2: 0x02 */
gcvVGCMD_MOVE_REL, /* 3: 0x03 */
gcvVGCMD_LINE, /* 4: 0x04 */
gcvVGCMD_LINE_REL, /* 5: 0x05 */
gcvVGCMD_QUAD, /* 6: 0x06 */
gcvVGCMD_QUAD_REL, /* 7: 0x07 */
gcvVGCMD_CUBIC, /* 8: 0x08 */
gcvVGCMD_CUBIC_REL, /* 9: 0x09 */
gcvVGCMD_BREAK, /* 10: 0x0A */
gcvVGCMD_HLINE, /* 11: ******* R E S E R V E D *******/
gcvVGCMD_HLINE_REL, /* 12: ******* R E S E R V E D *******/
gcvVGCMD_VLINE, /* 13: ******* R E S E R V E D *******/
gcvVGCMD_VLINE_REL, /* 14: ******* R E S E R V E D *******/
gcvVGCMD_SQUAD, /* 15: ******* R E S E R V E D *******/
gcvVGCMD_SQUAD_REL, /* 16: ******* R E S E R V E D *******/
gcvVGCMD_SCUBIC, /* 17: ******* R E S E R V E D *******/
gcvVGCMD_SCUBIC_REL, /* 18: ******* R E S E R V E D *******/
gcvVGCMD_SCCWARC, /* 19: ******* R E S E R V E D *******/
gcvVGCMD_SCCWARC_REL, /* 20: ******* R E S E R V E D *******/
gcvVGCMD_SCWARC, /* 21: ******* R E S E R V E D *******/
gcvVGCMD_SCWARC_REL, /* 22: ******* R E S E R V E D *******/
gcvVGCMD_LCCWARC, /* 23: ******* R E S E R V E D *******/
gcvVGCMD_LCCWARC_REL, /* 24: ******* R E S E R V E D *******/
gcvVGCMD_LCWARC, /* 25: ******* R E S E R V E D *******/
gcvVGCMD_LCWARC_REL, /* 26: ******* R E S E R V E D *******/
/* The width of the command recognized by the hardware on bits. */
gcvVGCMD_WIDTH = 5,
/* Hardware command mask. */
gcvVGCMD_MASK = (1 << gcvVGCMD_WIDTH) - 1,
/* Command modifiers. */
gcvVGCMD_H_MOD = 1 << gcvVGCMD_WIDTH, /* = 32 */
gcvVGCMD_V_MOD = 2 << gcvVGCMD_WIDTH, /* = 64 */
gcvVGCMD_S_MOD = 3 << gcvVGCMD_WIDTH, /* = 96 */
gcvVGCMD_ARC_MOD = 4 << gcvVGCMD_WIDTH, /* = 128 */
/* Emulated LINE commands. */
gcvVGCMD_HLINE_EMUL = gcvVGCMD_H_MOD | gcvVGCMD_LINE, /* = 36 */
gcvVGCMD_HLINE_EMUL_REL = gcvVGCMD_H_MOD | gcvVGCMD_LINE_REL, /* = 37 */
gcvVGCMD_VLINE_EMUL = gcvVGCMD_V_MOD | gcvVGCMD_LINE, /* = 68 */
gcvVGCMD_VLINE_EMUL_REL = gcvVGCMD_V_MOD | gcvVGCMD_LINE_REL, /* = 69 */
/* Emulated SMOOTH commands. */
gcvVGCMD_SQUAD_EMUL = gcvVGCMD_S_MOD | gcvVGCMD_QUAD, /* = 102 */
gcvVGCMD_SQUAD_EMUL_REL = gcvVGCMD_S_MOD | gcvVGCMD_QUAD_REL, /* = 103 */
gcvVGCMD_SCUBIC_EMUL = gcvVGCMD_S_MOD | gcvVGCMD_CUBIC, /* = 104 */
gcvVGCMD_SCUBIC_EMUL_REL = gcvVGCMD_S_MOD | gcvVGCMD_CUBIC_REL, /* = 105 */
/* Emulation ARC commands. */
gcvVGCMD_ARC_LINE = gcvVGCMD_ARC_MOD | gcvVGCMD_LINE, /* = 132 */
gcvVGCMD_ARC_LINE_REL = gcvVGCMD_ARC_MOD | gcvVGCMD_LINE_REL, /* = 133 */
gcvVGCMD_ARC_QUAD = gcvVGCMD_ARC_MOD | gcvVGCMD_QUAD, /* = 134 */
gcvVGCMD_ARC_QUAD_REL = gcvVGCMD_ARC_MOD | gcvVGCMD_QUAD_REL /* = 135 */
} gceVGCMD;
typedef enum _gceVGCMD *gceVGCMD_PTR;
/**
** @ingroup gcoVG
**
** @brief Blending modes supported by the HAL.
**
** This enumeration defines the blending modes supported by the HAL. This is
** in fact a one-to-one mapping of the OpenVG 1.1 blending modes.
*/
typedef enum _gceVG_BLEND {
gcvVG_BLEND_SRC,
gcvVG_BLEND_SRC_OVER,
gcvVG_BLEND_DST_OVER,
gcvVG_BLEND_SRC_IN,
gcvVG_BLEND_DST_IN,
gcvVG_BLEND_MULTIPLY,
gcvVG_BLEND_SCREEN,
gcvVG_BLEND_DARKEN,
gcvVG_BLEND_LIGHTEN,
gcvVG_BLEND_ADDITIVE,
gcvVG_BLEND_SUBTRACT,
gcvVG_BLEND_FILTER
} gceVG_BLEND;
/**
** @ingroup gcoVG
**
** @brief Image modes supported by the HAL.
**
** This enumeration defines the image modes supported by the HAL. This is
** in fact a one-to-one mapping of the OpenVG 1.1 image modes with the addition
** of NO IMAGE.
*/
typedef enum _gceVG_IMAGE {
gcvVG_IMAGE_NONE,
gcvVG_IMAGE_NORMAL,
gcvVG_IMAGE_MULTIPLY,
gcvVG_IMAGE_STENCIL,
gcvVG_IMAGE_FILTER
} gceVG_IMAGE;
/**
** @ingroup gcoVG
**
** @brief Filter mode patterns and imaging.
**
** This enumeration defines the filter modes supported by the HAL.
*/
typedef enum _gceIMAGE_FILTER {
gcvFILTER_POINT,
gcvFILTER_LINEAR,
gcvFILTER_BI_LINEAR
} gceIMAGE_FILTER;
/**
** @ingroup gcoVG
**
** @brief Primitive modes supported by the HAL.
**
** This enumeration defines the primitive modes supported by the HAL.
*/
typedef enum _gceVG_PRIMITIVE {
gcvVG_SCANLINE,
gcvVG_RECTANGLE,
gcvVG_TESSELLATED,
gcvVG_TESSELLATED_TILED
} gceVG_PRIMITIVE;
/**
** @ingroup gcoVG
**
** @brief Rendering quality modes supported by the HAL.
**
** This enumeration defines the rendering quality modes supported by the HAL.
*/
typedef enum _gceRENDER_QUALITY {
gcvVG_NONANTIALIASED,
gcvVG_2X2_MSAA,
gcvVG_2X4_MSAA,
gcvVG_4X4_MSAA
} gceRENDER_QUALITY;
/**
** @ingroup gcoVG
**
** @brief Fill rules supported by the HAL.
**
** This enumeration defines the fill rules supported by the HAL.
*/
typedef enum _gceFILL_RULE { gcvVG_EVEN_ODD, gcvVG_NON_ZERO } gceFILL_RULE;
/**
** @ingroup gcoVG
**
** @brief Cap styles supported by the HAL.
**
** This enumeration defines the cap styles supported by the HAL.
*/
typedef enum _gceCAP_STYLE { gcvCAP_BUTT, gcvCAP_ROUND, gcvCAP_SQUARE } gceCAP_STYLE;
/**
** @ingroup gcoVG
**
** @brief Join styles supported by the HAL.
**
** This enumeration defines the join styles supported by the HAL.
*/
typedef enum _gceJOIN_STYLE {
gcvJOIN_MITER,
gcvJOIN_ROUND,
gcvJOIN_BEVEL
} gceJOIN_STYLE;
/* Base values for channel mask definitions. */
#define gcvCHANNEL_X (0)
#define gcvCHANNEL_R (1 << 0)
#define gcvCHANNEL_G (1 << 1)
#define gcvCHANNEL_B (1 << 2)
#define gcvCHANNEL_A (1 << 3)
typedef enum _gceCHANNEL {
gcvCHANNEL_XXXX = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X),
gcvCHANNEL_XXXA = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_A),
gcvCHANNEL_XXBX = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_X),
gcvCHANNEL_XXBA = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_A),
gcvCHANNEL_XGXX = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_X),
gcvCHANNEL_XGXA = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_A),
gcvCHANNEL_XGBX = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_X),
gcvCHANNEL_XGBA = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_A),
gcvCHANNEL_RXXX = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X),
gcvCHANNEL_RXXA = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_A),
gcvCHANNEL_RXBX = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_X),
gcvCHANNEL_RXBA = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_A),
gcvCHANNEL_RGXX = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_X),
gcvCHANNEL_RGXA = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_A),
gcvCHANNEL_RGBX = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_X),
gcvCHANNEL_RGBA = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_A),
} gceCHANNEL;
/* Defines the statistical data keys monitored by the statistics module */
typedef enum _gceSTATISTICS {
gcvFRAME_FPS = 1,
} gceSTATISTICS;
/* Value types. */
typedef enum _gceVALUE_TYPE {
gcvVALUE_UINT = 0x0,
gcvVALUE_FIXED,
gcvVALUE_FLOAT,
gcvVALUE_INT,
/*
** The value need be unsigned denormalized. clamp (0.0-1.0) should be done first.
*/
gcvVALUE_FLAG_UNSIGNED_DENORM = 0x00010000,
/*
** The value need be signed denormalized. clamp (-1.0-1.0) should be done first.
*/
gcvVALUE_FLAG_SIGNED_DENORM = 0x00020000,
/*
** The value need to gammar
*/
gcvVALUE_FLAG_GAMMAR = 0x00040000,
/*
** The value need to convert from float to float16
*/
gcvVALUE_FLAG_FLOAT_TO_FLOAT16 = 0x0080000,
/*
** Mask for flag field.
*/
gcvVALUE_FLAG_MASK = 0xFFFF0000,
} gceVALUE_TYPE;
typedef enum _gceTRACEMODE {
gcvTRACEMODE_NONE = 0,
gcvTRACEMODE_FULL = 1,
gcvTRACEMODE_LOGGER = 2,
gcvTRACEMODE_ALLZONE = 3,
gcvTRACEMODE_PRE = 4,
gcvTRACEMODE_POST = 5,
} gceTRACEMODE;
enum {
/* GPU can't issue more that 32bit physical address */
gcvPLATFORM_FLAG_LIMIT_4G_ADDRESS = 1 << 0,
gcvPLATFORM_FLAG_IMX_MM = 1 << 1,
};
#if gcdUSE_CAPBUF
typedef enum _gceCAPBUF_META_TYPE {
gcvCAPBUF_META_TYPE_BASE = 0,
gcvCAPBUF_META_TYPE_STATE_BUFFER = 0,
gcvCAPBUF_META_TYPE_DRAW_ID,
gcvCAPBUF_META_TYPE_SH_UNIFORM,
gcvCAPBUF_META_TYPE_VIP_SRAM,
gcvCAPBUF_META_TYPE_AXI_SRAM,
gcvCAPBUF_META_TYPE_PPU_PARAMETERS,
gcvCAPBUF_META_TYPE_VIP_SRAM_REMAP,
gcvCAPBUF_META_TYPE_AXI_SRAM_REMAP,
gcvCAPBUF_META_TYPE_IMAGE_PHYSICAL_ADDRESS,
gcvCAPBUF_META_TYPE_IMAGE_PHYSICAL_ADDRESS_40BIT,
gcvCAPBUF_META_TYPE_SH_INST_ADDRESS,
gcvCAPBUF_META_TYPE_SH_UNIFORM_ARGS_LOCAL_ADDRESS_SPACE,
gcvCAPBUF_META_TYPE_SH_UNIFORM_ARGS_CONSTANT_ADDRESS_SPACE,
gcvCAPBUF_META_TYPE_NN_TP_INST_ADDRESS,
gcvCAPBUF_META_TYPE_LOW32_OF_40BIT_PHY_ADDR,
gcvCAPBUF_META_TYPE_GPU_SYNC_CMD,
gcvCAPBUF_META_TYPE_SH_UNIFORM_ARGS_PRINTFADDRESS,
gcvCAPBUF_META_TYPE_SH_UNIFORM_ARGS_MAXPRINTFADDRESS,
/* Keep it at the end of the list. */
gcvCAPBUF_META_TYPE_COUNT
} gceCAPBUF_META_TYPE;
typedef enum _gceCAPBUF_SH_UNIFROM_ARGS {
gcvCAPBUF_SH_UNIFORM_ARGS_INVALID = 0,
gcvCAPBUF_SH_UNIFORM_ARGS_IMAGE_PHYSICAL_ADDRESS,
gcvCAPBUF_SH_UNIFORM_ARGS_IMAGE_PHYSICAL_ADDRESS_40BIT,
gcvCAPBUF_SH_UNIFORM_ARGS_LOCAL_ADDRESS_SPACE,
gcvCAPBUF_SH_UNIFORM_ARGS_LOCAL_ADDRESS_SPACE_COMBINE,
gcvCAPBUF_SH_UNIFORM_ARGS_CONSTANT_ADDRESS_SPACE,
gcvCAPBUF_SH_UNIFORM_ARGS_LOW32_OF_40BIT_PHY_ADDR,
gcvCAPBUF_SH_UNIFORM_ARGS_LOW_HIGH_40BIT_PHY_ADDR,
gcvCAPBUF_SH_UNIFORM_ARGS_PRINTFADDRESS,
gcvCAPBUF_SH_UNIFORM_ARGS_MAXPRINTFADDRESS,
gcvCAPBUF_SH_UNIFORM_ARGS_40BIT_IMAGE_ADDR,
/* Keep it at the end of the list. */
gcvCAPBUF_SH_UNIFORM_ARGS_COUNT
} gceCAPBUF_SH_UNIFORM_ARGS;
typedef enum _gceCAPBUF_SH_UNIFORM_STATE_DATA_TYPE
{
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_INVALID = 0,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_IMAGE_PHYSICAL_ADDRESS,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_IMAGE_PHYSICAL_ADDRESS_40BIT_LOW,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_IMAGE_PHYSICAL_ADDRESS_40BIT_HIGH,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_IMAGE_PHYSICAL_ADDRESS_40BIT_HIGH1,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_LOCAL_ADDRESS_SPACE,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_CONSTANT_ADDRESS_SPACE,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_LOW32_OF_40BIT_PHY_ADDR,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_LOW_HIGH_40BIT_PHY_ADDR_LOW,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_LOW_HIGH_40BIT_PHY_ADDR_HIGH,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_PRINTFADDRESS,
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_MAXPRINTFADDRESS,
/* Keep it at the end of the list. */
gcvCAPBUF_SH_UNIFORM_STATE_DATA_TYPE_COUNT
} gceCAPBUF_SH_UNIFORM_STATE_DATA_TYPE;
typedef enum _gceCAPBUF_PPU_PARAMETERS_INDEX {
gcvCAPBUF_PPU_GLOBAL_OFFSET_X = 0,
gcvCAPBUF_PPU_GLOBAL_OFFSET_Y,
gcvCAPBUF_PPU_GLOBAL_OFFSET_Z,
gcvCAPBUF_PPU_GLOBAL_SCALE_X,
gcvCAPBUF_PPU_GLOBAL_SCALE_Y,
gcvCAPBUF_PPU_GLOBAL_SCALE_Z,
gcvCAPBUF_PPU_GROUP_SIZE_X,
gcvCAPBUF_PPU_GROUP_SIZE_Y,
gcvCAPBUF_PPU_GROUP_SIZE_Z,
gcvCAPBUF_PPU_GROUP_COUNT_X,
gcvCAPBUF_PPU_GROUP_COUNT_Y,
gcvCAPBUF_PPU_GROUP_COUNT_Z,
gcvCAPBUF_PPU_PARAMETERS_COUNT
} gceCAPBUF_PPU_GLOBALE_OFFSET_INDEX;
#endif
/* 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)
/* Default chip ID means chip ID same as core index. */
#define gcvCHIP_ID_DEFAULT (~0U)
/* Tile status header size */
#ifndef gcvTS_FC_HEADER_SIZE
#define gcvTS_FC_HEADER_SIZE 128
#endif
/******************************************************************************
***************************** 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;
#if VIVANTE_PROFILER
typedef struct _gcsHAL_PROFILER_INTERFACE *gcsHAL_PROFILER_INTERFACE_PTR;
#endif
typedef struct _gcs2D_PROFILE *gcs2D_PROFILE_PTR;
#ifdef __cplusplus
}
#endif
#endif /* __gc_hal_enum_h_ */