blob: e24750bb1dc9bf285bdf99aac4df473bd6ff27e2 [file] [log] [blame]
/****************************************************************************
*
* The MIT License (MIT)
*
* Copyright (c) 2014 - 2020 Vivante Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*****************************************************************************
*
* The GPL License (GPL)
*
* Copyright (C) 2014 - 2020 Vivante Corporation
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*****************************************************************************
*
* Note: This software is released under dual MIT and GPL licenses. A
* recipient may use this file under the terms of either the MIT license or
* GPL License. If you wish to use only one license not the other, you can
* indicate your decision by deleting one of the above license notices in your
* version of this file.
*
*****************************************************************************/
#ifndef __gc_hal_enum_h_
#define __gc_hal_enum_h_
#include "gc_hal_options.h"
#include "shared/gc_hal_enum.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_256B,
gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_64B,
#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,
}
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_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_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_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_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;
/* 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 _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,
/* 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,
gcvHAL_ARG_VERSION_V2,
}
gceHAL_ARG_VERSION;
/** endian mode for each 2Bytes
* endian mode endian
*endian mode0: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
*endian mode1: 1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14
*endian mode2: 2 3 0 1 6 7 4 5 10 11 8 9 14 15 12 13
*endain mode3: 3 2 1 0 7 6 5 4 11 10 9 8 15 14 13 12
*endain mode4: 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3
*endain mode5: 13 12 15 14 9 8 11 10 5 4 7 6 1 0 3 2
*endain mode6: 14 15 12 13 10 11 8 9 6 7 4 5 2 3 0 1
*endain 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,
}
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_1M,
gcvPAGE_TYPE_4K,
}
gcePAGE_TYPE;
typedef enum _gceAREA_TYPE
{
gcvAREA_TYPE_UNKNOWN = 0,
gcvAREA_TYPE_FLATMAP,
gcvAREA_TYPE_1M,
gcvAREA_TYPE_4K,
}
gceAREA_TYPE;
/*******************************************************************************
** 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_NONE = 6
}
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,
}
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
}
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_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 _gceBLITDRAW_TYPE
{
gcvBLITDRAW_CLEAR = 0,
gcvBLITDRAW_BLIT = 1,
/* last number, not a real type */
gcvBLITDRAW_NUM_TYPE
}
gceBLITDRAW_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_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_MAX_NUM = 3,
}
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,
} gceATTRIB_SCHEME;
typedef enum _gceBUFOBJ_TYPE
{
gcvBUFOBJ_TYPE_ARRAY_BUFFER = 1,
gcvBUFOBJ_TYPE_ELEMENT_ARRAY_BUFFER = 2,
gcvBUFOBJ_TYPE_GENERIC_BUFFER = 100
} gceBUFOBJ_TYPE;
typedef enum _gceBUFOBJ_USAGE
{
gcvBUFOBJ_USAGE_STREAM_DRAW = 1,
gcvBUFOBJ_USAGE_STREAM_READ,
gcvBUFOBJ_USAGE_STREAM_COPY,
gcvBUFOBJ_USAGE_STATIC_DRAW,
gcvBUFOBJ_USAGE_STATIC_READ,
gcvBUFOBJ_USAGE_STATIC_COPY,
gcvBUFOBJ_USAGE_DYNAMIC_DRAW,
gcvBUFOBJ_USAGE_DYNAMIC_READ,
gcvBUFOBJ_USAGE_DYNAMIC_COPY,
/* special patch for optimaize performance,
** no fence and duplicate stream to ensure data correct
*/
gcvBUFOBJ_USAGE_DISABLE_FENCE_DYNAMIC_STREAM = 256
} 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,
};
/* No special needs. */
#define gcvALLOC_FLAG_NONE 0x00000000
/* Physical contiguous. */
#define gcvALLOC_FLAG_CONTIGUOUS 0x00000001
/* Physical non contiguous. */
#define gcvALLOC_FLAG_NON_CONTIGUOUS 0x00000002
/* Should not swap out. */
#define gcvALLOC_FLAG_NON_PAGED 0x00000004
/* CPU access explicitly needed. */
#define gcvALLOC_FLAG_CPU_ACCESS 0x00000008
/* Can be remapped as cacheable. */
#define gcvALLOC_FLAG_CACHEABLE 0x00000010
/* Need 32bit address. */
#define gcvALLOC_FLAG_4GB_ADDR 0x00000020
/* Secure buffer. */
#define gcvALLOC_FLAG_SECURITY 0x00000040
/* Can be exported as dmabuf-fd */
#define gcvALLOC_FLAG_DMABUF_EXPORTABLE 0x00000080
/* Do not try slow pools (gcvPOOL_VIRTUAL) */
#define gcvALLOC_FLAG_FAST_POOLS 0x00000100
/* Import DMABUF. */
#define gcvALLOC_FLAG_DMABUF 0x00001000
/* Import USERMEMORY. */
#define gcvALLOC_FLAG_USERMEMORY 0x00002000
/* Import an External Buffer. */
#define gcvALLOC_FLAG_EXTERNAL_MEMORY 0x00004000
/* Import linux reserved memory. */
#define gcvALLOC_FLAG_LINUX_RESERVED_MEM 0x00008000
/* 1M pages unit allocation. */
#define gcvALLOC_FLAG_1M_PAGES 0x00010000
/* Non 1M pages unit allocation. */
#define gcvALLOC_FLAG_4K_PAGES 0x00020000
/* Real allocation happens when GPU page fault. */
#define gcvALLOC_FLAG_ALLOC_ON_FAULT 0x01000000
/* Alloc with memory limit. */
#define gcvALLOC_FLAG_MEMLIMIT 0x02000000
/* 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)
/******************************************************************************\
****************************** 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;
#ifdef __cplusplus
}
#endif
#endif /* __gc_hal_enum_h_ */