TIM-VX/unified-tina/inc/HAL/shared/gc_hal_enum_shared.h

2216 lines
70 KiB
C

/****************************************************************************
*
* 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_shared_enum_h_
#define __gc_hal_shared_enum_h_
#ifdef __cplusplus
extern "C" {
#endif
/* Chip models. */
typedef enum _gceCHIPMODEL {
gcv200 = 0x0200,
gcv300 = 0x0300,
gcv320 = 0x0320,
gcv328 = 0x0328,
gcv350 = 0x0350,
gcv355 = 0x0355,
gcv400 = 0x0400,
gcv410 = 0x0410,
gcv420 = 0x0420,
gcv428 = 0x0428,
gcv450 = 0x0450,
gcv500 = 0x0500,
gcv520 = 0x0520,
gcv530 = 0x0530,
gcv600 = 0x0600,
gcv620 = 0x0620,
gcv700 = 0x0700,
gcv800 = 0x0800,
gcv820 = 0x0820,
gcv860 = 0x0860,
gcv880 = 0x0880,
gcv900 = 0x0900,
gcv1000 = 0x1000,
gcv1500 = 0x1500,
gcv2000 = 0x2000,
gcv2100 = 0x2100,
gcv2200 = 0x2200,
gcv2500 = 0x2500,
gcv3000 = 0x3000,
gcv4000 = 0x4000,
gcv5000 = 0x5000,
gcv5200 = 0x5200,
gcv6400 = 0x6400,
gcv7000 = 0x7000,
gcv7400 = 0x7400,
gcv8000 = 0x8000,
gcv8400 = 0x8400,
gcv8800 = 0x8800,
gcv9100 = 0x9100,
gcv9200 = 0x9200,
} gceCHIPMODEL;
/* Chip features. */
typedef enum _gceFEATURE {
gcvFEATURE_PIPE_2D = 0,
gcvFEATURE_PIPE_3D,
gcvFEATURE_PIPE_VG,
gcvFEATURE_DC,
gcvFEATURE_HIGH_DYNAMIC_RANGE,
gcvFEATURE_MODULE_CG,
gcvFEATURE_MIN_AREA,
gcvFEATURE_BUFFER_INTERLEAVING,
gcvFEATURE_BYTE_WRITE_2D,
gcvFEATURE_ENDIANNESS_CONFIG,
gcvFEATURE_DUAL_RETURN_BUS,
gcvFEATURE_DEBUG_MODE,
gcvFEATURE_YUY2_RENDER_TARGET,
gcvFEATURE_FRAGMENT_PROCESSOR,
gcvFEATURE_2DPE20,
gcvFEATURE_FAST_CLEAR,
gcvFEATURE_YUV420_TILER,
gcvFEATURE_YUY2_AVERAGING,
gcvFEATURE_FLIP_Y,
gcvFEATURE_EARLY_Z,
gcvFEATURE_COMPRESSION,
gcvFEATURE_MSAA,
gcvFEATURE_SPECIAL_ANTI_ALIASING,
gcvFEATURE_SPECIAL_MSAA_LOD,
gcvFEATURE_422_TEXTURE_COMPRESSION,
gcvFEATURE_DXT_TEXTURE_COMPRESSION,
gcvFEATURE_ETC1_TEXTURE_COMPRESSION,
gcvFEATURE_TX_ETC2_COMPRESSION,
gcvFEATURE_CORRECT_TEXTURE_CONVERTER,
gcvFEATURE_TEXTURE_8K,
gcvFEATURE_SCALER,
gcvFEATURE_YUV420_SCALER,
gcvFEATURE_SHADER_HAS_W,
gcvFEATURE_SHADER_HAS_SIGN,
gcvFEATURE_SHADER_HAS_FLOOR,
gcvFEATURE_SHADER_HAS_CEIL,
gcvFEATURE_SHADER_HAS_SQRT,
gcvFEATURE_SHADER_HAS_TRIG,
gcvFEATURE_SH_SUPERSCALAR_ARCH,
gcvFEATURE_HZ,
gcvFEATURE_CORRECT_STENCIL,
gcvFEATURE_VG20,
gcvFEATURE_VG_FILTER,
gcvFEATURE_VG21,
gcvFEATURE_VG_DOUBLE_BUFFER,
gcvFEATURE_VG_RESOLUTION_8K,
gcvFEATURE_MC20,
gcvFEATURE_SUPER_TILED,
gcvFEATURE_FAST_CLEAR_FLUSH,
gcvFEATURE_2D_FILTERBLIT_PLUS_ALPHABLEND,
gcvFEATURE_2D_DITHER,
gcvFEATURE_2D_A8_TARGET,
gcvFEATURE_2D_A8_NO_ALPHA,
gcvFEATURE_2D_FILTERBLIT_FULLROTATION,
gcvFEATURE_2D_BITBLIT_FULLROTATION,
gcvFEATURE_WIDE_LINE,
gcvFEATURE_FC_FLUSH_STALL,
gcvFEATURE_FULL_DIRECTFB,
gcvFEATURE_HALF_FLOAT_PIPE,
gcvFEATURE_LINE_LOOP,
gcvFEATURE_2D_YUV_BLIT,
gcvFEATURE_2D_TILING,
gcvFEATURE_NON_POWER_OF_TWO,
gcvFEATURE_3D_TEXTURE,
gcvFEATURE_TEXTURE_ARRAY,
gcvFEATURE_TILE_FILLER,
gcvFEATURE_LOGIC_OP,
gcvFEATURE_MIXED_STREAMS,
gcvFEATURE_2D_MULTI_SOURCE_BLT,
gcvFEATURE_END_EVENT,
gcvFEATURE_VERTEX_10_10_10_2,
gcvFEATURE_TEXTURE_10_10_10_2,
gcvFEATURE_TEXTURE_ANISOTROPIC_FILTERING,
gcvFEATURE_TEXTURE_FLOAT_HALF_FLOAT,
gcvFEATURE_2D_ROTATION_STALL_FIX,
gcvFEATURE_2D_MULTI_SOURCE_BLT_EX,
gcvFEATURE_BUG_FIXES10,
gcvFEATURE_2D_MINOR_TILING,
gcvFEATURE_TEX_COMPRRESSION_SUPERTILED, /* Supertiled compressed textures are supported. */
gcvFEATURE_FAST_MSAA,
gcvFEATURE_BUG_FIXED_INDEXED_TRIANGLE_STRIP,
gcvFEATURE_TEXTURE_TILE_STATUS_READ,
gcvFEATURE_DEPTH_BIAS_FIX,
gcvFEATURE_RECT_PRIMITIVE,
gcvFEATURE_BUG_FIXES11,
gcvFEATURE_SUPERTILED_TEXTURE,
gcvFEATURE_2D_NO_COLORBRUSH_INDEX8,
gcvFEATURE_RS_YUV_TARGET,
gcvFEATURE_2D_FC_SOURCE, /* For tilestatus compression feature*/
gcvFEATURE_2D_CC_NOAA_SOURCE,
gcvFEATURE_PE_DITHER_FIX,
gcvFEATURE_2D_YUV_SEPARATE_STRIDE,
gcvFEATURE_FRUSTUM_CLIP_FIX,
gcvFEATURE_TEXTURE_SWIZZLE,
gcvFEATURE_PRIMITIVE_RESTART,
gcvFEATURE_TEXTURE_LINEAR,
gcvFEATURE_TEXTURE_YUV_ASSEMBLER,
gcvFEATURE_LINEAR_RENDER_TARGET,
gcvFEATURE_SHADER_HAS_ATOMIC,
gcvFEATURE_SHADER_HAS_INSTRUCTION_CACHE,
gcvFEATURE_SHADER_ENHANCEMENTS2,
gcvFEATURE_BUG_FIXES7,
gcvFEATURE_SHADER_HAS_RTNE,
gcvFEATURE_SHADER_HAS_EXTRA_INSTRUCTIONS2,
gcvFEATURE_SHADER_ENHANCEMENTS3,
gcvFEATURE_DYNAMIC_FREQUENCY_SCALING,
gcvFEATURE_SINGLE_BUFFER,
gcvFEATURE_OCCLUSION_QUERY,
gcvFEATURE_2D_GAMMA,
gcvFEATURE_2D_COLOR_SPACE_CONVERSION,
gcvFEATURE_2D_SUPER_TILE_VERSION,
gcvFEATURE_HALTI0,
gcvFEATURE_HALTI1,
gcvFEATURE_HALTI2,
gcvFEATURE_SUPPORT_GCREGTX,
gcvFEATURE_2D_MIRROR_EXTENSION,
gcvFEATURE_TEXTURE_ASTC,
gcvFEATURE_TEXTURE_ASTC_DECODE_FIX,
gcvFEATURE_TEXTURE_ASTC_BASE_LOD_FIX,
gcvFEATURE_2D_SUPER_TILE_V1,
gcvFEATURE_2D_SUPER_TILE_V2,
gcvFEATURE_2D_SUPER_TILE_V3,
gcvFEATURE_2D_MULTI_SOURCE_BLT_EX2,
gcvFEATURE_NEW_RA,
gcvFEATURE_BUG_FIXED_IMPLICIT_PRIMITIVE_RESTART,
gcvFEATURE_PE_MULTI_RT_BLEND_ENABLE_CONTROL,
gcvFEATURE_SMALL_MSAA, /* An upgraded version of Fast MSAA */
gcvFEATURE_VERTEX_INST_ID_AS_ATTRIBUTE,
gcvFEATURE_DUAL_16,
gcvFEATURE_BRANCH_ON_IMMEDIATE_REG,
gcvFEATURE_2D_COMPRESSION,
gcvFEATURE_TPC_COMPRESSION,
gcvFEATURE_TPCV11_COMPRESSION,
gcvFEATURE_DEC_COMPRESSION,
gcvFEATURE_DEC300_COMPRESSION,
gcvFEATURE_DEC400_COMPRESSION,
/*Its a new core for DEC400 compression*/
gcvFEATURE_DEC400EX_COMPRESSION,
gcvFEATURE_DEC_TPC_COMPRESSION,
gcvFEATURE_DEC_COMPRESSION_TILE_NV12_8BIT,
gcvFEATURE_DEC_COMPRESSION_TILE_NV12_10BIT,
gcvFEATURE_2D_OPF_YUV_OUTPUT,
gcvFEATURE_2D_FILTERBLIT_A8_ALPHA,
gcvFEATURE_2D_MULTI_SRC_BLT_TO_UNIFIED_DST_RECT,
gcvFEATURE_2D_MULTI_SRC_BLT_BILINEAR_FILTER,
gcvFEATURE_2D_MULTI_SRC_BLT_1_5_ENHANCEMENT,
gcvFEATURE_V2_COMPRESSION_Z16_FIX,
gcvFEATURE_VERTEX_INST_ID_AS_INTEGER,
gcvFEATURE_2D_YUV_MODE,
gcvFEATURE_2D_CACHE_128B256BPERLINE,
gcvFEATURE_2D_SEPARATE_CACHE,
gcvFEATURE_2D_MAJOR_SUPER_TILE,
gcvFEATURE_2D_V4COMPRESSION,
gcvFEATURE_2D_VMSAA,
gcvFEATURE_2D_10BIT_OUTPUT_LINEAR,
gcvFEATURE_2D_YUV420_OUTPUT_LINEAR,
gcvFEATURE_ACE,
gcvFEATURE_NO_YUV420_SOURCE,/* unsupported source with three planes */
gcvFEATURE_COLOR_COMPRESSION,
gcvFEATURE_32BPP_COMPONENT_TEXTURE_CHANNEL_SWIZZLE,
gcvFEATURE_64BPP_HW_CLEAR_SUPPORT,
gcvFEATURE_TX_LERP_PRECISION_FIX,
gcvFEATURE_COMPRESSION_V2,
gcvFEATURE_MMU,
gcvFEATURE_COMPRESSION_V3,
gcvFEATURE_TX_DECOMPRESSOR,
gcvFEATURE_MRT_TILE_STATUS_BUFFER,
gcvFEATURE_COMPRESSION_V1,
gcvFEATURE_V1_COMPRESSION_Z16_DECOMPRESS_FIX,
gcvFEATURE_RTT,
gcvFEATURE_GENERIC_ATTRIB,
gcvFEATURE_2D_ONE_PASS_FILTER,
gcvFEATURE_2D_ONE_PASS_FILTER_TAP,
gcvFEATURE_2D_POST_FLIP,
gcvFEATURE_2D_PIXEL_ALIGNMENT,
gcvFEATURE_CORRECT_AUTO_DISABLE_COUNT,
gcvFEATURE_CORRECT_AUTO_DISABLE_COUNT_WIDTH,
gcvFEATURE_8K_RT,
gcvFEATURE_HALTI3,
gcvFEATURE_EEZ,
gcvFEATURE_INTEGER_SIGNEXT_FIX,
gcvFEATURE_PSOUTPUT_MAPPING,
gcvFEATURE_8K_RT_FIX,
gcvFEATURE_TX_TILE_STATUS_MAPPING,
gcvFEATURE_SRGB_RT_SUPPORT,
gcvFEATURE_TEXTURE_16K,
gcvFEATURE_PA_FARZCLIPPING_FIX,
gcvFEATURE_PE_DITHER_COLORMASK_FIX,
gcvFEATURE_ZSCALE_FIX,
gcvFEATURE_MULTI_PIXELPIPES,
gcvFEATURE_PIPE_CL,
gcvFEATURE_BUG_FIXES18,
gcvFEATURE_UNIFIED_SAMPLERS,
gcvFEATURE_CL_PS_WALKER,
gcvFEATURE_NEW_HZ,
gcvFEATURE_TX_FRAC_PRECISION_6BIT,
gcvFEATURE_SH_INSTRUCTION_PREFETCH,
gcvFEATURE_PROBE,
gcvFEATURE_SINGLE_PIPE_HALTI1,
gcvFEATURE_BUG_FIXES8, /* This HW feature is wrong, we can't use this to check integer branch!!!*/
gcvFEATURE_2D_ALL_QUAD,
gcvFEATURE_SEPARATE_SRC_DST,
gcvFEATURE_TX_HOR_ALIGN_SEL,
gcvFEATURE_HALTI4,
gcvFEATURE_MRT_FC_FIX,
gcvFEATURE_TESSELLATION,
gcvFEATURE_DRAW_INDIRECT,
gcvFEATURE_COMPUTE_INDIRECT,
gcvFEATURE_MSAA_TEXTURE,
gcvFEATURE_STENCIL_TEXTURE,
gcvFEATURE_S8_ONLY_RENDERING,
gcvFEATURE_D24S8_SAMPLE_STENCIL,
gcvFEATURE_ADVANCED_BLEND_MODE_PART0,
gcvFEATURE_RA_DEPTH_WRITE,
gcvFEATURE_RS_DS_DOWNSAMPLE_NATIVE_SUPPORT,
gcvFEATURE_S8_MSAA_COMPRESSION,
gcvFEATURE_MSAA_FRAGMENT_OPERATION,
gcvFEATURE_FE_START_VERTEX_SUPPORT,
gcvFEATURE_DIVISOR_STREAM_ADDR_FIX,
gcvFEATURE_ZERO_ATTRIB_SUPPORT,
gcvFEATURE_DANGLING_VERTEX_FIX,
gcvFEATURE_PE_DISABLE_COLOR_PIPE,
gcvFEATURE_FE_12bit_stride,
gcvFEATURE_TX_LOD_GUARDBAND,
gcvFEATURE_HAS_PRODUCTID,
gcvFEATURE_INTEGER32_FIX,
gcvFEATURE_TEXTURE_GATHER,
gcvFEATURE_IMG_INSTRUCTION,
gcvFEATURE_HELPER_INVOCATION,
gcvFEATURE_NO_USER_CSC,
/* ANDROID_ONLY_REMOVED,remove some non-android features from gc520c:
* (1)Monochrome expansion.
* (2)Remove 3D compression and keep read tile status and tile input.
* (3)ROP2, ROP3, ROP4. Android only needs one solid color as source. Transparency by monochrome mask, pattern mask, src/dst color key, chroma key.
* (4)2x2 minor tile.
* (5)7 & 9 tap OPF.
* (6)User-defined CSC.
* (7)MultiSrc walker v1.5.
* (8)SuperTile V1.
* (9)Big endian.
*/
gcvFEATURE_ANDROID_ONLY_REMOVED,
gcvFEATURE_V2_MSAA_COHERENCY_FIX,
gcvFEATURE_BLOCK_SIZE_16x16,
gcvFEATURE_TX_SUPPORT_DEC,
gcvFEATURE_RSBLT_MSAA_DECOMPRESSION,
gcvFEATURE_TILEFILLER_32TILE_ALIGNED,
gcvFEATURE_GEOMETRY_SHADER,
gcvFEATURE_HALTI5,
gcvFEATURE_PIPELINE_32_ATTRIBUTES,
gcvFEATURE_USC,
gcvFEATURE_CUBEMAP_ARRAY,
gcvFEATURE_TX_DESCRIPTOR,
gcvFEATURE_SEPARATE_RT_CTRL,
gcvFEATURE_RENDER_ARRAY,
gcvFEATURE_BLT_ENGINE,
gcvFEATURE_TEXTURE_BUFFER,
gcvFEATURE_GS_SUPPORT_EMIT,
gcvFEATURE_SAMPLER_BASE_OFFSET,
gcvFEATURE_IMAGE_OUT_BOUNDARY_FIX,
gcvFEATURE_TX_BORDER_CLAMP,
gcvFEATURE_MSAA_SHADING,
gcvFEATURE_ADVANCED_SH_INST,
gcvFEATURE_LOD_FIX_FOR_BASELEVEL,
gcvFEATURE_MULTIDRAW_INDIRECT,
gcvFEATURE_DRAW_ELEMENTS_BASE_VERTEX,
gcvFEATURE_NEW_STEERING_AND_ICACHE_FLUSH, /* Steering base on register base. Trigger-style Icache flush state. */
gcvFEATURE_PE_DITHER_FIX2,
gcvFEATURE_INDEX_FETCH_FIX,
gcvFEATURE_TEX_BASELOD,
gcvFEATURE_TEX_SEAMLESS_CUBE,
gcvFEATURE_TEX_ETC2,
gcvFEATURE_TEX_CUBE_BORDER_LOD,
gcvFEATURE_FE_ALLOW_STALL_PREFETCH_ENG,
gcvFEATURE_TX_8BPP_TS_FIX,
gcvFEATURE_HW_TFB,
gcvFEATURE_HW_TFB_PERF_FIX,
gcvFEATURE_COMPRESSION_V4,
gcvFEATURE_FENCE_32BIT,
gcvFEATURE_FENCE_64BIT,
gcvFEATURE_R8_UNORM,
gcvFEATURE_TX_DEFAULT_VALUE_FIX,
gcvFEATURE_TX_8bit_UVFrac,
gcvFEATURE_TX_MIPFILTER_NONE_FIX,
gcvFEATURE_MC_STENCIL_CTRL,
gcvFEATURE_DEPTH_MATH_FIX,
gcvFEATURE_PE_B2B_PIXEL_FIX,
gcvFEATURE_TEXTURE_GATHER_OFFSETS,
gcvFEATURE_TEX_CACHE_FLUSH_FIX,
gcvFEATURE_WIDELINE_HELPER_FIX,
gcvFEATURE_LINE_DIAMOND_RULE_FIX,
gcvFEATURE_MULTIGPU_SYNC_V2,
gcvFEATURE_DRAW_ID,
gcvFEATURE_SNAPPAGE_CMD,
gcvFEATURE_COMMAND_PREFETCH,
gcvFEATURE_SAMPLEPOS_SWIZZLE_FIX,
gcvFEATURE_SELECTMAP_SRC0_SWIZZLE_FIX,
gcvFEATURE_LOADATTR_OOB_FIX,
gcvFEATURE_RA_DEPTH_WRITE_MSAA1X_FIX,
gcvFEATURE_MRT_8BIT_DUAL_PIPE_FIX,
gcvFEATURE_BUG_FIXES1,
gcvFEATURE_MULTI_SOURCE_BLT,
gcvFEATURE_ZCOMPRESSION,
gcvFEATURE_DITHER_AND_FILTER_PLUS_ALPHA_2D,
gcvFEATURE_ONE_PASS_2D_FILTER,
gcvFEATURE_TX_FILTER,
gcvFEATURE_CHIPENABLE_LINK,
gcvFEATURE_TEXTURE_BIAS_LOD_FIX,
gcvFEATURE_USE_GL_Z,
gcvFEATURE_SUPPORT_INTEGER,
/* PARTLY_SUPPORT_INTEGER_BRANCH:
* chips can support all integer types for compare instructions, e.g, CMP, SELECT.
* FULLLY_SUPPORT_INTEGER_BRANCH:
* chips can support all integer types for JMP instruction.
* If PARTLY_SUPPORT_INTEGER_BRANCH is TRUE but FULLLY_SUPPORT_INTEGER_BRANCH is FALSE,
* then this chip can only support INT32/UINT32 JMP instruction.
*/
gcvFEATURE_PARTLY_SUPPORT_INTEGER_BRANCH,
gcvFEATURE_FULLLY_SUPPORT_INTEGER_BRANCH,
gcvFEATURE_SUPPORT_INTEGER_ATTRIBUTE,
gcvFEATURE_SUPPORT_MOVAI,
gcvFEATURE_NEED_FIX_FOR_CL_X,
gcvFEATURE_NEED_FIX_FOR_CL_XE,
gcvFEATURE_HAS_OUTPUT_COUNT_FIX,
gcvFEATURE_VARYING_PACKING_LIMITATION,
gcvFEATURE_HIGHP_VARYING_SHIFT,
gcvFEATURE_BUG_FIXES2,
gcvFEATURE_64K_L2_CACHE,
gcvFEATURE_128BTILE,
gcvFEATURE_ADVANCED_BLEND_OPT,
gcvFEATURE_SNAPPAGE_CMD_FIX,
gcvFEATURE_L2_CACHE_FOR_2D_420,
gcvFEATURE_TILE_STATUS_2BITS,
gcvFEATURE_EXTRA_SHADER_INSTRUCTIONS0,
gcvFEATURE_EXTRA_SHADER_INSTRUCTIONS1,
gcvFEATURE_EXTRA_SHADER_INSTRUCTIONS2,
gcvFEATURE_MEDIUM_PRECISION,
gcvFEATURE_FE20_BIT_INDEX,
gcvFEATURE_BUG_FIXES4,
gcvFEATURE_BUG_FIXES12,
gcvFEATURE_VMSAA,
gcvFEATURE_ROBUST_ATOMIC,
gcvFEATURE_32F_COLORMASK_FIX,
gcvFEATURE_NEW_GPIPE,
gcvFEATURE_RS_NEW_BASEADDR,
gcvFEATURE_TX_DXT,
gcvFEATURE_SH_FLAT_INTERPOLATION_DUAL16_FIX,
gcvFEATURE_EVIS,
gcvFEATURE_SH_SUPPORT_V4,
gcvFEATURE_SH_SUPPORT_ALPHA_KILL,
gcvFEATURE_PE_NO_ALPHA_TEST,
gcvFEATURE_SH_SNAP2PAGE_MAXPAGES_FIX,
gcvFEATURE_USC_FULLCACHE_FIX,
gcvFEATURE_PE_64bit_FENCE_FIX,
gcvFEATURE_BLT_8bit_256TILE_FC_FIX,
gcvFEATURE_PE_RGBA16I_FIX,
gcvFEATURE_BLT_64bpp_MASKED_CLEAR_FIX,
gcvFEATURE_SH_PSO_MSAA1x_FIX,
gcvFEATURE_USC_ATOMIC_FIX,
gcvFEATURE_INDEX_CONST_ON_B0,
gcvFEATURE_SH_NO_ONECONST_LIMIT,
gcvFEATURE_EVIS_NO_ABSDIFF,
gcvFEATURE_EVIS_NO_BITREPLACE,
gcvFEATURE_EVIS_NO_BOXFILTER,
gcvFEATURE_EVIS_NO_CORDIAC,
gcvFEATURE_EVIS_NO_DP32,
gcvFEATURE_EVIS_NO_FILTER,
gcvFEATURE_EVIS_NO_IADD,
gcvFEATURE_EVIS_NO_SELECTADD,
gcvFEATURE_EVIS_LERP_7OUTPUT,
gcvFEATURE_EVIS_ACCSQ_8OUTPUT,
gcvFEATURE_ROBUSTNESS,
gcvFEATURE_SECURITY,
gcvFEATURE_TX_YUV_ASSEMBLER_10BIT,
gcvFEATURE_USC_GOS_ADDR_FIX,
gcvFEATURE_SUPPORT_MSAA2X,
gcvFEATURE_TX_DESC_CACHE_CLOCKGATE_FIX,
gcvFEATURE_TX_INTEGER_COORDINATE,
gcvFEATURE_PSIO_SAMPLEMASK_IN_R0ZW_FIX,
gcvFEATURE_MULTI_CORE_BLOCK_SET_CONFIG,
gcvFEATURE_SH_IMG_LDST_ON_TEMP,
gcvFEATURE_TX_INTEGER_COORDINATE_V2,
gcvFEATURE_COMPUTE_ONLY,
gcvFEATURE_SH_IMG_LDST_CLAMP,
gcvFEATURE_SH_ICACHE_ALLOC_COUNT_FIX,
gcvFEATURE_MSAA_OQ_FIX,
gcvFEATURE_PE_ENHANCEMENTS2,
gcvFEATURE_PSIO_MSAA_CL_FIX,
gcvFEATURE_FE_NEED_DUMMYDRAW,
gcvFEATURE_MULTI_CLUSTER,
gcvFEATURE_PSIO_INTERLOCK,
gcvFEATURE_BLIT_COMPRESS_DEST,
gcvFEATURE_SH_MULTI_WG_PACK,
gcvFEATURE_FE_ROBUST_FIX,
gcvFEATURE_TX_ASTC_MULTISLICE_FIX,
gcvFEATURE_PSIO_DUAL16_32bpc_FIX,
gcvFEATURE_LS_SUPPORT_PER_COMP_DEPENDENCY,
gcvFEATURE_COMPRESSION_DEC400,
gcvFEATURE_SH_TEXLD_U_FIX,
gcvFEATURE_TX_FLUSH_L1CACHE,
gcvFEATURE_USC_DEFER_FILL_FIX,
gcvFEATURE_MC_FCCACHE_BYTEMASK,
gcvFEATURE_SH_MULTI_WG_PACK_FIX,
gcvFEATURE_FE_PATCHLIST_FETCH_FIX,
gcvFEATURE_RA_CG_FIX,
gcvFEATURE_EVIS_VX2,
gcvFEATURE_SH_HALF_DEPENDENCY_FIX,
gcvFEATURE_FE_BASEINSTANCE,
gcvFEATURE_FE_COMPUREINDIRECT_SKIP_UNIFORM,
gcvFEATURE_SH_CLOCK_GATE_FIX,
gcvFEATURE_GPIPE_CLOCK_GATE_FIX,
gcvFEATURE_TP_ENGINE,
gcvFEATURE_TX_BORDER_CLAMP_FIX,
gcvFEATURE_SH_IMAGE_LD_LAST_PIXEL_FIX,
gcvFEATURE_MULTI_CORE_BLOCK_SET_CONFIG2,
gcvFEATURE_MULTIGPU_SYNC_V3,
gcvFEATURE_PE_VMSAA_COVERAGE_CACHE_FIX,
gcvFEATURE_SECURITY_AHB,
gcvFEATURE_TX_LERP_LESS_BIT,
gcvFEATURE_SMALL_BATCH,
gcvFEATURE_SH_IDIV0_SWZL_EHS,
gcvFEATURE_SH_CMPLX,
gcvFEATURE_VIP_V7,
gcvFEATURE_SH_GM_ENDIAN,
gcvFEATURE_SH_GM_USC_UNALLOC,
gcvFEATURE_SH_END_OF_BB,
gcvFEATURE_ASYNC_BLIT,
gcvFEATURE_ASYNC_FE_FENCE_FIX,
gcvFEATURE_PSCS_THROTTLE,
gcvFEATURE_SEPARATE_LS,
gcvFEATURE_PA_VARYING_COMPONENT_TOGGLE_FIX,
gcvFEATURE_TX_MULTISAMPLER_FC_FIX,
gcvFEATURE_WIDELINE_TRIANGLE_EMU,
gcvFEATURE_FENCE,
gcvFEATURE_MCFE,
gcvFEATURE_NN_INTERLEAVE8,
gcvFEATURE_TP_REORDER,
gcvFEATURE_TP_RTNE,
gcvFEATURE_TP_LRN,
gcvFEATURE_TP_ROI_POOLING,
gcvFEATURE_TP_MAX_POOLING_STRIDE1,
gcvFEATURE_NN_BRICK_MODE,
gcvFEATURE_NN_BORDER_MODE,
gcvFEATURE_NN_FP16_ALU,
gcvFEATURE_NN_BF16_ALU,
gcvFEATURE_NN_INT16_ALU,
gcvFEATURE_NN_ZDP3,
gcvFEATURE_NN_ZDP6,
gcvFEATURE_PE_DEPTH_ONLY_OQFIX,
gcvFEATURE_TX_SNORM_SUPPORT,
gcvFEATURE_HWMANAGED_LS,
gcvFEATURE_SH_SCATTER_GATHER,
gcvFEATURE_NN_POWER_ISOLATION,
gcvFEATURE_SWTILING_PHASE1,
gcvFEATURE_SWTILING_PHASE2,
gcvFEATURE_SWTILING_PHASE3,
gcvFEATURE_TF_QUANTIZATION,
gcvFEATURE_NN_XYDP9,
gcvFEATURE_TP_SIMPLE_INT16,
gcvFEATURE_TP_REAL_INT16,
gcvFEATURE_NN_FIRST_PIXEL_POOLING,
gcvFEATURE_NN_STRIDE_SUPPORT,
gcvFEATURE_NN_XYDP6,
gcvFEATURE_NN_XYDP0,
gcvFEATURE_TP_REORDER_FIX,
gcvFEATURE_NN_CONV1x1_PERF_FIX,
gcvFEATURE_NN_CACHELINE_MODE_PERF_FIX,
gcvFEATURE_NN_PER3DTILE_BUBBLE_FIX,
gcvFEATURE_SH_IO_CG_FIX,
gcvFEATURE_USC_STAY_LRU,
gcvFEATURE_NN_NONZERO_MIRROR_BORDER,
gcvFEATURE_NN_COEF_DECOMPRESS_PERF2X,
gcvFEATURE_4BIT_INPUT,
gcvFEATURE_COEF_COMPRESSION_ENHANCEMENT,
gcvFEATURE_NN_ZDP3_NO_COMPRESS_FIX,
gcvFEATURE_NN_ASYNC_COPY_PERF_FIX,
gcvFEATURE_OCB_COUNTER,
gcvFEATURE_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX,
gcvFEATURE_NN_FULLCACHE_KERNEL_INTERLEAVE_FIX,
gcvFEATURE_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX,
gcvFEATURE_USC_BOTTLENECK_FIX,
gcvFEATURE_OCB_REMAP_PHYSICAL_ADDRESS,
gcvFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1,
gcvFEATURE_NN_SLICE_PADDING_TO_64BYTE_ALIGN,
gcvFEATURE_NN_DW_1x1_CONV_MERGE,
gcvFEATURE_TP_REORDER_LAYER_SUSPEND_FIX,
gcvFEATURE_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX,
gcvFEATURE_IMG_POP_PIPELINE_PAUSE_FIX,
gcvFEATURE_NN_SLOW_OUTPUT,
gcvFEATURE_NO_NARROW_POST_PROCESS_PIPE,
gcvFEATURE_TP_NN_PROBE,
gcvFEATURE_TP_23BITS_POST_MULTIPLIER,
gcvFEATURE_NN_TRANSPOSE,
gcvFEATURE_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX,
gcvFEATURE_TP_BFLOAT16,
gcvFEATURE_EVIS2_FLOP_RESET_FIX,
gcvFEATURE_USC_ASYNC_CP_RTN_FLOP_RESET_FIX,
gcvFEATURE_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX,
gcvFEATURE_NEGATIVE_POST_SHIFT_FIX,
gcvFEATURE_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX,
gcvFEATURE_NN_LEAKY_RELU,
gcvFEATURE_NN_PRELU,
gcvFEATURE_NN_NATIVE_STRIDE_TWO,
gcvFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2,
gcvFEATURE_NN_TENSOR_ADD,
gcvFEATURE_IMAGE_LS_NO_FULLMASK_FIX,
gcvFEATURE_BLT_YUV_OUTPUT,
gcvFEATURE_PE_TILE_CACHE_FLUSH_FIX,
gcvFEATURE_SH_ROBUSTNESS_FIX,
gcvFEATURE_USC_ATOMIC_FIX2,
gcvFEATURE_MULTIVIEW_RENDER,
gcvFEATURE_FE_DRAW_DIRECT,
gcvFEATURE_TX_VKBORDER_MODE,
gcvFEATURE_TX_UNNORMALIZED_COORD,
gcvFEATURE_VG_IMAGE_16K,
gcvFEATURE_MULTICORE_CONFIG,
gcvFEATURE_PA_LINECLIP_FIX,
gcvFEATURE_NN_ENGINE,
gcvFEATURE_NN_ASYNC_COPY_MERGE_FIX,
gcvFEATURE_NN_CONVOUT_FIFO_DEPTH_FIX,
gcvFEATURE_NN_SMALLBATCH_PHASE1,
gcvFEATURE_TP_SMALLBATCH_PHASE1,
gcvFEATURE_VIP_SCALER,
gcvFEATURE_VIP_SCALER_4K,
gcvFEATURE_TX_8bit_UVFrac_ROUNDING_FIX,
gcvFEATURE_NN_REQ_SLOWARBITRATION_FIX,
gcvFEATUER_IMAGE_PARTIAL_CACHE,
gcvFEATURE_FULLCACHE_KERNELHEAD_FIX,
gcvFEATURE_NN_SINGLEPORT_ACCUMBUFFER,
gcvFEATURE_NN_SMALLBATCH,
gcvFEATURE_TP_SMALLBATCH,
gcvFEATURE_NN_ZDP_INIMAGE_SIZE_FIX,
gcvFEATURE_HI_REORDER_FIX,
gcvFEATURE_TP_COEF_COMPRESSION_ENHANCEMENT,
gcvFEATURE_NN_DEPTHWISE_SUPPORT,
gcvFEATURE_IMAGE_NOT_PACKED_IN_SRAM_FIX,
gcvFEATURE_IDLE_BEFORE_FLUSH_COMPLETE_FIX,
gcvFEATURE_NO_FLUSH_USC_FIX,
gcvFEATURE_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX,
gcvFEATURE_XY_OFFSET_LIMITATION_FIX,
gcvFEATURE_USC_INVALIDATE_CACHE_LINE_FIX,
gcvFEATURE_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX,
gcvFEATURE_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX,
gcvFEATURE_NN_PER_CHANNEL_QUANT,
gcvFEATURE_NN_NO_Z_LOCATION_OFFSET,
gcvFEATURE_NN_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX,
gcvFEATURE_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX,
gcvFEATURE_VIP_DEC400,
gcvFEATURE_MAX_POINTSIZE_CLAMP,
gcvFEATURE_2D_FAST_CLEAR, /* For tilestatus Fast Clear feature*/
gcvFEATURE_NN_PER_CHANNEL_QUANT_ASYM,
gcvFEATURE_SMALL_BATCH_FLOPS_RESET_FIX,
gcvFEATURE_SMALL_BATCH_DISBLE_FIX,
gcvFEATURE_FORMAT_10BIT_CROSS_4K,
gcvFEATURE_ENDIAN_CONTROL,
gcvFEATURE_SH_VX2_FLOATING_MAD_FIX,
gcvFEATURE_PE_A8B8G8R8, /* For PE support A8B8G8R8 format feature*/
gcvFEATURE_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX,
/* FP16 enhancement-related features. */
gcvFEATURE_DST_TEX_I2F_F2I_INST_DEPRECATE,
gcvFEATURE_ALU_FP16_INST_SUPPORT,
gcvFEATURE_DUAL16_14BIT_PC_SUPPORT,
gcvFEATURE_LDST_CONV_4ROUNDING_MODES,
gcvFEATURE_FULL_PACK_MODE_SUPPORT,
gcvFEATURE_FP32_TO_FP16_CONV_FIX,
gcvFEATURE_SH_HAS_IMGLD_COMP_COUNT_FIX,
gcvFEATURE_SH_SUPPORT_FP32_FMA,
gcvFEATURE_SH_SUPPORT_VEC2_INT_MULMAD,
gcvFEATURE_SH_SUPPORT_VEC4_INT_MULMAD,
gcvFEATURE_SH_SUPPORT_HIGHPVEC_FORMAT,
gcvFEATURE_SH_HAS_32BIT_NEG_OFFSET_FIX_FOR_40BIT_VA,
gcvFEATURE_SH_SUPPORT_AIGM,
gcvFEATURE_SH_CS_PAGE_SIZE_ISSUE,
gcvFEATURE_SH_INTEGER_FRONT_FACE,
gcvFEATURE_SH_SUPPORT_MULTIVIEWPORT,
gcvFEATURE_SH_PER_STAGE_LOCAL_STORAGE,
gcvFEATURE_SH_SUPPORT_SEPARATED_TEX,
gcvFEATURE_SH_SUPPORT_CLIP_CULL_DISTANCE,
gcvFEATURE_SH_D3D11_SUPPORT,
gcvFEATURE_SH_DYNAMIC_TEXTURE_INDEXING,
/* AIGPU feature. */
gcvFEATURE_AI_GPU,
gcvFEATURE_NN_FAST_FIRST_PIXEL_POOLING,
gcvFEATURE_NN_FLOAT_POST_MULT,
gcvFEATURE_NN_ASYMMETRIC_INT8,
gcvFEATURE_FORMAT_YUV_I010, /*support YUVI010 & P010_LSB format*/
gcvFEATURE_FORMAT_YUV420_101010, /*support YUV420_101010 format*/
gcvFEATURE_FORMAT_FLOATPOINT, /*support FloatPoint format,also include packed-RGB888*/
gcvFEATURE_BIT_NN_COMPRESSION_BYPASSS,
gcvFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE,
gcvFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN,
gcvFEATURE_PREPROCESS_IMG_BUF_640BYTE_LIMIT,
gcvFEATURE_BIT_TPLITE_BFLOAT16,
gcvFEATURE_VIP_HW_FINAL_RELEASE,
gcvFEATURE_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX,
gcvFEATURE_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX, /* 2089 */
gcvFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX, /* 2043 */
gcvFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX, /* 2111 */
gcvFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX, /* 2050 */
gcvFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM,
gcvFEATURE_VALUE_DDR_KERNEL_BURST_SIZE,
gcvFEATURE_BIT_TILE_ACCESS_CAPABILITY,
gcvFEATURE_BIT_FAST_DP3_PREPROCESSOR,
gcvFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX, /* 2112 */
gcvFEATURE_BIT_DEPTHWISE_16BIT_FORMAT,
gcvFEATURE_2D_TILESTATUS_ROTATION, /*Fix fastclear feature with rotation*/
gcvFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX,
gcvFEATURE_TS_FC_VULKAN_SUPPORT,
gcvFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX, /* 2044 */
gcvFEATURE_BIT_MAX_TILE_SIZE,
gcvFEATURE_2D_TARGET_MAJOR_SUPER_TILE, /*target support supertile Y major*/
gcvFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX,
gcvFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX, /* 2131 */
gcvFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX, /* 2280 */
/* TP reorder the int tile x should be less than 512 */
gcvFEATURE_TP_REORDER_INTILE_X_SIZE_512_FIX,
gcvFEATURE_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX,
gcvFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE,
gcvFEATURE_NN_FLOAT32_IO,
gcvFEATURE_TP_FLOAT32_IO,
/* add for support INT16x(U)INT8 */
gcvFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7,
gcvFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7,
gcvFEATURE_CONV_INT16X8BIT_VIP_V7,
/* Q channel support. */
gcvFEATURE_Q_CHANNEL_SUPPORT,
/* MMU descriptor new refinement. */
gcvFEATURE_MMU_PAGE_DESCRIPTOR,
gcvFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX,
gcvFEATURE_BIT_HI1_L2_CACHE,
gcvFEATURE_BIT_NN_SUPPORT_CONV_1D,
gcvFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX,
/* only support gcvSURF_B8G8R8_PLANAR & gcvSURF_AYUV format as target */
gcvFEATURE_BIT_BGR_PLANAR,
gcvFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX,
gcvFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX,
gcvFEATURE_BIT_TP_SOFTMAX,
gcvFEATURE_TP_TENSOR_ADD_MUL,
gcvFEATURE_NN_REMOVE_POOLING,
gcvFEATURE_BIT_NN_DEPTHWISE_INT16XINT8,
gcvFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7,
gcvFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY,
gcvFEATURE_BIT_NN_SUPPORT_DUMMY_TILE,
gcvFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING,
gcvFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN,
gcvFEATURE_BIT_NN_SMALL_BATCH_PHASE2,
gcvFEATURE_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX,
gcvFEATURE_BIT_NN_ENHANCED_MAX_POOLING,
gcvFEATURE_NN_1x1_NON_POOLING_PACKING,
gcvFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING,
gcvFEATURE_BIT_NN_SUPPORT_ALU,
gcvFEATURE_BIT_NN_TRANSPOSE_PHASE2,
gcvFEATURE_BIT_NN_FC_ENHANCEMENT,
gcvFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX,
gcvFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD,
gcvFEATURE_IMGLD_WIDTH_LT16_FIX,
gcvFEATURE_BIT_GPU_INSPECTOR_COUNTERS,
gcvFEATURE_VIP_REMOVE_MMU,
gcvFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE,
gcvFEATURE_BIT_NN_JD_DIRECT_MODE_FIX,
gcvFEATURE_BIT_NN_CONV_CORE_BYPASS,
gcvFEATURE_BIT_TP_REMOVE_FC,
gcvFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX,
gcvFEATURE_BIT_NN_TENSOR_ADD_RELU,
gcvFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX,
gcvFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16,
gcvFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16,
gcvFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32,
gcvFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32,
gcvFEATURE_BIT_DEPTHWISE_FLOAT_FIX,
/*
* Using event 28 as frame done interrupt, set by End command with bit 28
* interrupt enabled by AHB 0x14 register and clear by 0x10 register.
*/
gcvFEATURE_2D_FRAME_DONE_INTR,
gcvFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX,
gcvFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV,
/*
* support AXI Front-End hardware moudle for IP (subsystem) directly interfacing
* to SOC through AXI port.
*/
gcvFEATURE_BIT_AXI_FE,
gcvFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX,
gcvFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX,
gcvFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE,
gcvFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX,
gcvFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX,
gcvFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX,
gcvFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX,
gcvFEATURE_BIT_NN_CMD_SUPPORT_SLICE,
gcvFEATURE_BIT_NN_HW_V83,
/* ANDROID_ONLY_RESERVED,reserve some non-android features:
* (1)Line drawing,
* (2)8x8 pattern,
* (3)Index8 format,
* (4)Demultiply,
* (5)Alpha blending:(ONE,ONE_MINUS_SRC_ALPHA),(SRC_ALPHA,ONE_MINUS_SRC_ALPHA),global alpha and pre-multiply,
* (6)Rectangle clear and fill,
* (7)Rotation.Android uses'90 deg','H flip','V flip'three bits to describe 8 transformations.
*/
gcvFEATURE_ANDROID_ONLY_RESERVED,
gcvFEATURE_2D_MULTISOURCE_PIPE, /* move bitblit/stretchblit pipe line to multisource blit */
gcvFEATURE_2D_MASK_AND_COLORKEY, /* maskblit and src/dst color key */
gcvFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX,
gcvFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX,
gcvFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX,
gcvFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX,
gcvFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX,
gcvFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX, /* 2365 */
gcvFEATURE_2D_STRETCH_MULTISOURCE_PIPE, /* move stretchblit pipe line to multisource blit */
gcvFEATURE_BIT_PA_ZEROAREA_LINE_FIX, /* HW 2380 */
gcvFEATURE_BIT_RS_TILER_YUV420_FIX, /* HW 2114 */
gcvFEATURE_BIT_NN_JOB_CANCELATION,
gcvFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX,
/* only support gcvSURF_B8G8R8_PLANAR & gcvSURF_AYUV format as source */
gcvFEATURE_BIT_BGR_PLANAR_SOURCE,
gcvFEATURE_2D_FC_IN_DEC400EX,/* 2D Fast Clear support in DEC400EX */
gcvFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX,
gcvFEATURE_BIT_PE_64BPP_LINEAR_FORMAT,
gcvFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID,
gcvFEATURE_BIT_NN_STREAM_PROCESSOR,
gcvFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX,
/* Feature about normalization */
gcvFEATURE_2D_NORMALIZATION,
gcvFEATURE_2D_NORMALIZATION_QUANTIZATION,
gcvFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION,
gcvFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV,
gcvFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER,
gcvFEATURE_BIT_NN_SUPPORT_CMD_LOOP,
gcvFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX,
gcvFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX,
gcvFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX,
gcvFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX,
gcvFEATURE_BIT_NN_4BIT_PHASE1,
gcvFEATURE_BIT_NN_SUPPORT_DECONVNxN_S_LESS_THAN_16,
gcvFEATURE_BIT_NN_PICOCORE_DEPTHWISE,
gcvFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM,
gcvFEATURE_VALUE_NN_SMALL_ACCUM_BITS,
gcvFEATURE_VALUE_NN_SMALL_ACCUM,
gcvFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION,
gcvFEATURE_NN_SUPPORT_EFUSE,
gcvFEATURE_BIT_NN_WRITE_WITHOUT_USC,
gcvFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3,
gcvFEATURE_BIT_SH_SUPPORT_VEC2,
gcvFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX,
gcvFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X,
gcvFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX,
gcvFEATURE_BIT_NN_SPLIT_X_AMONG_CLUSTE,
gcvFEATURE_BIT_SRAM_PARITY,
gcvFEATURE_BIT_TRSP2_CONV_SMALLBATCH_FIX,
gcvFEATURE_BIT_NN_SUPPORT_GEMM_PHASE1,
gcvFEATURE_BIT_NN_SUPPORT_GEMM_PHASE2,
gcvFEATURE_NN_TENSOR_ADD_INT16,
gcvFEATURE_BIT_DEPTHTOSPACE_SAME_XY_FIX,
gcvFEATURE_BIT_NN_SUPPORT_ZDP_LOOP6,
gcvFEATURE_NN_ELEMENTWISE_BROADCAST,
gcvFEATURE_NN_2ND_IMAGE_DATA_TYPE,
gcvFEATURE_BIT_FP_INIMAGE_POST_SCALE,
gcvFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX,
gcvFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX,
gcvFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX,
gcvFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX,
gcvFEATURE_BIT_PERF_KERNEL_DESCRIPTOR_SOURCE_FIX,
/* Insert features above this comment only. */
gcvFEATURE_COUNT /* Not a feature. */
} gceFEATURE;
/* Chip Power Status. */
typedef enum _gceCHIPPOWERSTATE {
gcvPOWER_INVALID = -1,
/* Global/base states. */
gcvPOWER_ON = 0,
gcvPOWER_IDLE,
gcvPOWER_SUSPEND,
gcvPOWER_OFF,
/* Power on but not global or broadcast. */
gcvPOWER_ON_AUTO,
/* Broadcast states. */
gcvPOWER_FLAG_BROADCAST = 0x10,
gcvPOWER_IDLE_BROADCAST = gcvPOWER_IDLE | gcvPOWER_FLAG_BROADCAST,
gcvPOWER_SUSPEND_BROADCAST = gcvPOWER_SUSPEND | gcvPOWER_FLAG_BROADCAST,
gcvPOWER_OFF_BROADCAST = gcvPOWER_OFF | gcvPOWER_FLAG_BROADCAST,
/* Timeout states. */
gcvPOWER_FLAG_TIMEOUT = 0x20,
gcvPOWER_IDLE_TIMEOUT = gcvPOWER_IDLE | gcvPOWER_FLAG_TIMEOUT,
gcvPOWER_SUSPEND_TIMEOUT = gcvPOWER_SUSPEND | gcvPOWER_FLAG_TIMEOUT,
gcvPOWER_OFF_TIMEOUT = gcvPOWER_OFF | gcvPOWER_FLAG_TIMEOUT,
} gceCHIPPOWERSTATE;
/* CPU cache operations */
typedef enum _gceCACHEOPERATION {
gcvCACHE_CLEAN = 0x01, /* Flush CPU cache to mem */
gcvCACHE_INVALIDATE = 0x02, /* Invalidte CPU cache */
gcvCACHE_FLUSH = gcvCACHE_CLEAN | gcvCACHE_INVALIDATE, /* Both flush & invalidate */
gcvCACHE_MEMORY_BARRIER = 0x04
} gceCACHEOPERATION;
/* Surface types. */
typedef enum _gceSURF_TYPE {
gcvSURF_TYPE_UNKNOWN = 0,
gcvSURF_INDEX,
gcvSURF_VERTEX,
gcvSURF_TEXTURE,
gcvSURF_RENDER_TARGET,
gcvSURF_DEPTH,
gcvSURF_BITMAP,
gcvSURF_TILE_STATUS,
gcvSURF_IMAGE,
gcvSURF_MASK,
gcvSURF_SCISSOR,
gcvSURF_HIERARCHICAL_DEPTH,
gcvSURF_ICACHE,
gcvSURF_TXDESC,
gcvSURF_FENCE,
gcvSURF_TFBHEADER,
gcvSURF_NUM_TYPES, /* Make sure this is the last one! */
/* Combinations. */
gcvSURF_NO_TILE_STATUS = 0x100,
gcvSURF_NO_VIDMEM = 0x200, /* Used to allocate surfaces with no underlying vidmem node.
* In Android, vidmem node is allocated by another process.
*/
gcvSURF_CACHEABLE = 0x400, /* Used to allocate a cacheable surface */
gcvSURF_TILE_RLV_FENCE = 0x800, /* create texture fence as tile */
gcvSURF_TILE_STATUS_DIRTY = 0x1000, /* Init tile status to all dirty */
gcvSURF_LINEAR = 0x2000,
gcvSURF_CREATE_AS_TEXTURE = 0x4000, /* create it as a texture */
gcvSURF_PROTECTED_CONTENT = 0x8000, /* create it as content protected */
gcvSURF_CREATE_AS_DISPLAYBUFFER = 0x10000, /*create it as a display buffer surface */
gcvSURF_CONTIGUOUS = 0x20000, /*create it as contiguous */
gcvSURF_NO_COMPRESSION = 0x40000, /* Create it as no compression, valid on when it has tile status. */
gcvSURF_DEC = 0x80000, /* Surface is DEC compressed */
gcvSURF_NO_HZ = 0x100000,
gcvSURF_3D = 0x200000, /* It's 3d surface */
gcvSURF_DMABUF_EXPORTABLE = 0x400000, /* master node can be exported as dma-buf fd */
gcvSURF_CACHE_MODE_128 = 0x800000,
gcvSURF_TILED = 0x1000000, /* force create tile buffer, as we will convert it to supertile according to related hardware feature by default */
gcvSURF_FORCE_32BIT_VA = 0x2000000, /* force allocate 32bit VA */
gcvSURF_LINEAR_NO_ALIGNMENT = 0x4000000, /* only for linear render target buffer */
gcvSURF_TEXTURE_LINEAR = gcvSURF_TEXTURE
| gcvSURF_LINEAR,
gcvSURF_RENDER_TARGET_LINEAR = gcvSURF_RENDER_TARGET
| gcvSURF_LINEAR,
gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET
| gcvSURF_NO_TILE_STATUS,
gcvSURF_RENDER_TARGET_NO_COMPRESSION = gcvSURF_RENDER_TARGET
| gcvSURF_NO_COMPRESSION,
gcvSURF_RENDER_TARGET_TS_DIRTY = gcvSURF_RENDER_TARGET
| gcvSURF_TILE_STATUS_DIRTY,
gcvSURF_DEPTH_NO_TILE_STATUS = gcvSURF_DEPTH
| gcvSURF_NO_TILE_STATUS,
gcvSURF_DEPTH_TS_DIRTY = gcvSURF_DEPTH
| gcvSURF_TILE_STATUS_DIRTY,
/* Supported surface types with no vidmem node. */
gcvSURF_BITMAP_NO_VIDMEM = gcvSURF_BITMAP
| gcvSURF_NO_VIDMEM,
gcvSURF_TEXTURE_NO_VIDMEM = gcvSURF_TEXTURE
| gcvSURF_NO_VIDMEM,
/* Cacheable surface types with no vidmem node. */
gcvSURF_CACHEABLE_BITMAP_NO_VIDMEM = gcvSURF_BITMAP_NO_VIDMEM
| gcvSURF_CACHEABLE,
gcvSURF_CACHEABLE_BITMAP = gcvSURF_BITMAP
| gcvSURF_CACHEABLE,
gcvSURF_TEXTURE_3D = gcvSURF_TEXTURE
| gcvSURF_3D
} gceSURF_TYPE;
/*
* Surface formats.
* Name rules is from MSB->LSB.
*/
typedef enum _gceSURF_FORMAT {
/* Unknown format. */
gcvSURF_UNKNOWN = 0,
/* Format test */
gcvSURF_TEST = 1,
/* Palettized formats. */
gcvSURF_INDEX1 = 100,
gcvSURF_INDEX4,
gcvSURF_INDEX8,
#if gcdVG_ONLY
gcvSURF_INDEX2,
#endif
/* RGB formats. */
gcvSURF_A2R2G2B2 = 200,
gcvSURF_R3G3B2,
gcvSURF_A8R3G3B2,
gcvSURF_X4R4G4B4,
gcvSURF_A4R4G4B4,
gcvSURF_R4G4B4A4,
gcvSURF_X1R5G5B5,
gcvSURF_A1R5G5B5,
gcvSURF_R5G5B5A1,
gcvSURF_R5G6B5,
gcvSURF_R8G8B8,
gcvSURF_X8R8G8B8,
gcvSURF_A8R8G8B8,
gcvSURF_R8G8B8A8,
gcvSURF_G8R8G8B8,
gcvSURF_R8G8B8G8,
gcvSURF_X2R10G10B10,
gcvSURF_A2R10G10B10,
gcvSURF_R10G10B10A2,
gcvSURF_X12R12G12B12,
gcvSURF_A12R12G12B12,
gcvSURF_X16R16G16B16,
gcvSURF_A16R16G16B16,
gcvSURF_A32R32G32B32,
gcvSURF_R8G8B8X8,
gcvSURF_R5G5B5X1,
gcvSURF_R4G4B4X4,
gcvSURF_X16R16G16B16_2_A8R8G8B8,
gcvSURF_A16R16G16B16_2_A8R8G8B8,
gcvSURF_A32R32G32B32_2_G32R32F,
gcvSURF_A32R32G32B32_4_A8R8G8B8,
gcvSURF_R8G8B8_PLANAR,
gcvSURF_R8G8B8I,
gcvSURF_R8G8B8I_PLANAR,
gcvSURF_R16G16B16I,
gcvSURF_R16G16B16I_PLANAR,
/* BGR formats. */
gcvSURF_A4B4G4R4 = 300,
gcvSURF_A1B5G5R5,
gcvSURF_B5G6R5,
gcvSURF_B8G8R8,
gcvSURF_B16G16R16,
gcvSURF_X8B8G8R8,
gcvSURF_A8B8G8R8,
gcvSURF_A2B10G10R10,
gcvSURF_X16B16G16R16,
gcvSURF_A16B16G16R16,
gcvSURF_B32G32R32,
gcvSURF_X32B32G32R32,
gcvSURF_A32B32G32R32,
gcvSURF_B4G4R4A4,
gcvSURF_B5G5R5A1,
gcvSURF_B8G8R8X8,
gcvSURF_B8G8R8A8,
gcvSURF_B10G10R10A2,
gcvSURF_X4B4G4R4,
gcvSURF_X1B5G5R5,
gcvSURF_B4G4R4X4,
gcvSURF_B5G5R5X1,
gcvSURF_X2B10G10R10,
gcvSURF_B8G8R8_SNORM,
gcvSURF_X8B8G8R8_SNORM,
gcvSURF_A8B8G8R8_SNORM,
gcvSURF_A8B12G12R12_2_A8R8G8B8,
gcvSURF_B8G8R8_PLANAR,
/* Compressed formats. */
gcvSURF_DXT1 = 400,
gcvSURF_DXT2,
gcvSURF_DXT3,
gcvSURF_DXT4,
gcvSURF_DXT5,
gcvSURF_CXV8U8,
gcvSURF_ETC1,
gcvSURF_R11_EAC,
gcvSURF_SIGNED_R11_EAC,
gcvSURF_RG11_EAC,
gcvSURF_SIGNED_RG11_EAC,
gcvSURF_RGB8_ETC2,
gcvSURF_SRGB8_ETC2,
gcvSURF_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
gcvSURF_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
gcvSURF_RGBA8_ETC2_EAC,
gcvSURF_SRGB8_ALPHA8_ETC2_EAC,
gcvSURF_SDXT1,
gcvSURF_SDXT3,
gcvSURF_SDXT5,
/* YUV formats. */
gcvSURF_YUY2 = 500,
gcvSURF_UYVY,
gcvSURF_YV12,
gcvSURF_I420,
gcvSURF_NV12,
gcvSURF_NV21,
gcvSURF_NV16,
gcvSURF_NV61,
gcvSURF_YVYU,
gcvSURF_VYUY,
gcvSURF_AYUV,
gcvSURF_YUV420_10_ST,
gcvSURF_YUV420_TILE_ST,
gcvSURF_YUV420_TILE_10_ST,
gcvSURF_NV12_10BIT,
gcvSURF_NV21_10BIT,
gcvSURF_NV16_10BIT,
gcvSURF_NV61_10BIT,
gcvSURF_P010,
gcvSURF_P010_LSB,
gcvSURF_I010,
gcvSURF_I010_LSB,
gcvSURF_YUV420_101010,
gcvSURF_GRAY8,
#if gcdVG_ONLY
gcvSURF_AYUY2,
gcvSURF_ANV12,
gcvSURF_ANV16,
gcvSURF_AUYVY,
gcvSURF_YV16,
#endif
/* Depth formats. */
gcvSURF_D16 = 600,
gcvSURF_D24S8,
gcvSURF_D32,
gcvSURF_D24X8,
gcvSURF_D32F,
gcvSURF_S8D32F,
gcvSURF_S8D32F_1_G32R32F,
gcvSURF_S8D32F_2_A8R8G8B8,
gcvSURF_D24S8_1_A8R8G8B8,
gcvSURF_S8,
gcvSURF_X24S8,
gcvSURF_X24S8_1_A8R8G8B8,
/* Alpha formats. */
gcvSURF_A4 = 700,
gcvSURF_A8,
gcvSURF_A12,
gcvSURF_A16,
gcvSURF_A32,
gcvSURF_A1,
/* Luminance formats. */
gcvSURF_L4 = 800,
gcvSURF_L8,
gcvSURF_L12,
gcvSURF_L16,
gcvSURF_L32,
gcvSURF_L1,
gcvSURF_L8_RAW,
/* Alpha/Luminance formats. */
gcvSURF_A4L4 = 900,
gcvSURF_A2L6,
gcvSURF_A8L8,
gcvSURF_A4L12,
gcvSURF_A12L12,
gcvSURF_A16L16,
gcvSURF_A8L8_1_A8R8G8B8,
gcvSURF_A8L8_RAW,
/* Bump formats. */
gcvSURF_L6V5U5 = 1000,
gcvSURF_V8U8,
gcvSURF_X8L8V8U8,
gcvSURF_Q8W8V8U8,
gcvSURF_A2W10V10U10,
gcvSURF_V16U16,
gcvSURF_Q16W16V16U16,
/* R/RG/RA formats. */
gcvSURF_R8 = 1100,
gcvSURF_X8R8,
gcvSURF_G8R8,
gcvSURF_X8G8R8,
gcvSURF_A8R8,
gcvSURF_R16,
gcvSURF_X16R16,
gcvSURF_G16R16,
gcvSURF_X16G16R16,
gcvSURF_A16R16,
gcvSURF_R32,
gcvSURF_X32R32,
gcvSURF_G32R32,
gcvSURF_X32G32R32,
gcvSURF_A32R32,
gcvSURF_RG16,
gcvSURF_R8_SNORM,
gcvSURF_G8R8_SNORM,
gcvSURF_R8_1_X8R8G8B8,
gcvSURF_G8R8_1_X8R8G8B8,
/* Floating point formats. */
gcvSURF_R16F = 1200,
gcvSURF_X16R16F,
gcvSURF_G16R16F,
gcvSURF_X16G16R16F,
gcvSURF_B16G16R16F,
gcvSURF_X16B16G16R16F,
gcvSURF_A16B16G16R16F,
gcvSURF_R32F,
gcvSURF_X32R32F,
gcvSURF_G32R32F,
gcvSURF_X32G32R32F,
gcvSURF_B32G32R32F,
gcvSURF_X32B32G32R32F,
gcvSURF_A32B32G32R32F,
gcvSURF_A16F,
gcvSURF_L16F,
gcvSURF_A16L16F,
gcvSURF_A16R16F,
gcvSURF_A32F,
gcvSURF_L32F,
gcvSURF_A32L32F,
gcvSURF_A32R32F,
gcvSURF_E5B9G9R9,
gcvSURF_B10G11R11F,
gcvSURF_B16G16R16F_PLANAR,
gcvSURF_B32G32R32F_PLANAR,
gcvSURF_R16G16B16F,
gcvSURF_R32G32B32F,
gcvSURF_GRAY16F,
gcvSURF_GRAY32F,
gcvSURF_X16B16G16R16F_2_A8R8G8B8,
gcvSURF_A16B16G16R16F_2_A8R8G8B8,
gcvSURF_A16B16G16R16F_2_G16R16F,
gcvSURF_G32R32F_2_A8R8G8B8,
gcvSURF_X32B32G32R32F_2_G32R32F,
gcvSURF_A32B32G32R32F_2_G32R32F,
gcvSURF_X32B32G32R32F_4_A8R8G8B8,
gcvSURF_A32B32G32R32F_4_A8R8G8B8,
gcvSURF_R16F_1_A4R4G4B4,
gcvSURF_G16R16F_1_A8R8G8B8,
gcvSURF_B16G16R16F_2_A8R8G8B8,
gcvSURF_R32F_1_A8R8G8B8,
gcvSURF_B32G32R32F_3_A8R8G8B8,
gcvSURF_B10G11R11F_1_A8R8G8B8,
gcvSURF_A32F_1_R32F,
gcvSURF_L32F_1_R32F,
gcvSURF_A32L32F_1_G32R32F,
gcvSURF_R16G16B16F_PLANAR,
gcvSURF_R32G32B32F_PLANAR,
/* sRGB format. */
gcvSURF_SBGR8 = 1400,
gcvSURF_A8_SBGR8,
gcvSURF_X8_SBGR8,
gcvSURF_A8_SRGB8,
gcvSURF_X8_SRGB8,
/* Integer formats. */
gcvSURF_R8I = 1500,
gcvSURF_R8UI,
gcvSURF_R16I,
gcvSURF_R16UI,
gcvSURF_R32I,
gcvSURF_R32UI,
gcvSURF_X8R8I,
gcvSURF_G8R8I,
gcvSURF_X8R8UI,
gcvSURF_G8R8UI,
gcvSURF_X16R16I,
gcvSURF_G16R16I,
gcvSURF_X16R16UI,
gcvSURF_G16R16UI,
gcvSURF_X32R32I,
gcvSURF_G32R32I,
gcvSURF_X32R32UI,
gcvSURF_G32R32UI,
gcvSURF_X8G8R8I,
gcvSURF_B8G8R8I,
gcvSURF_X8G8R8UI,
gcvSURF_B8G8R8UI,
gcvSURF_X16G16R16I,
gcvSURF_B16G16R16I,
gcvSURF_X16G16R16UI,
gcvSURF_B16G16R16UI,
gcvSURF_X32G32R32I,
gcvSURF_B32G32R32I,
gcvSURF_X32G32R32UI,
gcvSURF_B32G32R32UI,
gcvSURF_X8B8G8R8I,
gcvSURF_A8B8G8R8I,
gcvSURF_X8B8G8R8UI,
gcvSURF_A8B8G8R8UI,
gcvSURF_X16B16G16R16I,
gcvSURF_A16B16G16R16I,
gcvSURF_X16B16G16R16UI,
gcvSURF_A16B16G16R16UI,
gcvSURF_X32B32G32R32I,
gcvSURF_A32B32G32R32I,
gcvSURF_X32B32G32R32UI,
gcvSURF_A32B32G32R32UI,
gcvSURF_A2B10G10R10UI,
gcvSURF_G32R32I_2_A8R8G8B8,
gcvSURF_G32R32I_1_G32R32F,
gcvSURF_G32R32UI_2_A8R8G8B8,
gcvSURF_G32R32UI_1_G32R32F,
gcvSURF_X16B16G16R16I_2_A8R8G8B8,
gcvSURF_X16B16G16R16I_1_G32R32F,
gcvSURF_A16B16G16R16I_2_A8R8G8B8,
gcvSURF_A16B16G16R16I_1_G32R32F,
gcvSURF_X16B16G16R16UI_2_A8R8G8B8,
gcvSURF_X16B16G16R16UI_1_G32R32F,
gcvSURF_A16B16G16R16UI_2_A8R8G8B8,
gcvSURF_A16B16G16R16UI_1_G32R32F,
gcvSURF_X32B32G32R32I_2_G32R32I,
gcvSURF_A32B32G32R32I_2_G32R32I,
gcvSURF_A32B32G32R32I_2_G32R32F,
gcvSURF_X32B32G32R32I_3_A8R8G8B8,
gcvSURF_A32B32G32R32I_4_A8R8G8B8,
gcvSURF_X32B32G32R32UI_2_G32R32UI,
gcvSURF_A32B32G32R32UI_2_G32R32UI,
gcvSURF_A32B32G32R32UI_2_G32R32F,
gcvSURF_X32B32G32R32UI_3_A8R8G8B8,
gcvSURF_A32B32G32R32UI_4_A8R8G8B8,
gcvSURF_A2B10G10R10UI_1_A8R8G8B8,
gcvSURF_A8B8G8R8I_1_A8R8G8B8,
gcvSURF_A8B8G8R8UI_1_A8R8G8B8,
gcvSURF_R8I_1_A4R4G4B4,
gcvSURF_R8UI_1_A4R4G4B4,
gcvSURF_R16I_1_A4R4G4B4,
gcvSURF_R16UI_1_A4R4G4B4,
gcvSURF_R32I_1_A8R8G8B8,
gcvSURF_R32UI_1_A8R8G8B8,
gcvSURF_X8R8I_1_A4R4G4B4,
gcvSURF_X8R8UI_1_A4R4G4B4,
gcvSURF_G8R8I_1_A4R4G4B4,
gcvSURF_G8R8UI_1_A4R4G4B4,
gcvSURF_X16R16I_1_A4R4G4B4,
gcvSURF_X16R16UI_1_A4R4G4B4,
gcvSURF_G16R16I_1_A8R8G8B8,
gcvSURF_G16R16UI_1_A8R8G8B8,
gcvSURF_X32R32I_1_A8R8G8B8,
gcvSURF_X32R32UI_1_A8R8G8B8,
gcvSURF_X8G8R8I_1_A4R4G4B4,
gcvSURF_X8G8R8UI_1_A4R4G4B4,
gcvSURF_B8G8R8I_1_A8R8G8B8,
gcvSURF_B8G8R8UI_1_A8R8G8B8,
gcvSURF_B16G16R16I_2_A8R8G8B8,
gcvSURF_B16G16R16I_1_G32R32F,
gcvSURF_B16G16R16UI_2_A8R8G8B8,
gcvSURF_B16G16R16UI_1_G32R32F,
gcvSURF_B32G32R32I_3_A8R8G8B8,
gcvSURF_B32G32R32UI_3_A8R8G8B8,
gcvSURF_A16B16G16R16_2_A8R8G8B8,
gcvSURF_R8G8B8_1_A8R8G8B8,
gcvSURF_G16R16_1_A8R8G8B8,
gcvSURF_A2B10G10R10_1_A8R8G8B8,
gcvSURF_A2R10G10B10_1_A8R8G8B8,
gcvSURF_A2W10V10U10_1_A8R8G8B8,
/* ASTC formats. */
gcvSURF_ASTC4x4 = 1600,
gcvSURF_ASTC5x4,
gcvSURF_ASTC5x5,
gcvSURF_ASTC6x5,
gcvSURF_ASTC6x6,
gcvSURF_ASTC8x5,
gcvSURF_ASTC8x6,
gcvSURF_ASTC8x8,
gcvSURF_ASTC10x5,
gcvSURF_ASTC10x6,
gcvSURF_ASTC10x8,
gcvSURF_ASTC10x10,
gcvSURF_ASTC12x10,
gcvSURF_ASTC12x12,
gcvSURF_ASTC4x4_SRGB,
gcvSURF_ASTC5x4_SRGB,
gcvSURF_ASTC5x5_SRGB,
gcvSURF_ASTC6x5_SRGB,
gcvSURF_ASTC6x6_SRGB,
gcvSURF_ASTC8x5_SRGB,
gcvSURF_ASTC8x6_SRGB,
gcvSURF_ASTC8x8_SRGB,
gcvSURF_ASTC10x5_SRGB,
gcvSURF_ASTC10x6_SRGB,
gcvSURF_ASTC10x8_SRGB,
gcvSURF_ASTC10x10_SRGB,
gcvSURF_ASTC12x10_SRGB,
gcvSURF_ASTC12x12_SRGB,
/* Recompile format*/
gcvSURF_L16_1_A4R4G4B4 = 1700,
gcvSURF_V16U16_1_A8R8G8B8,
gcvSURF_Q8W8V8U8_1_A8R8G8B8,
gcvSURF_X8L8V8U8_1_A8R8G8B8,
gcvSURF_R3G3B2_1_A8R8G8B8,
gcvSURF_A8R3G3B2_1_A8R8G8B8,
gcvSURF_W11V11U10_1_A8R8G8B8,
gcvSURF_Q16W16V16U16_2_A8R8G8B8,
gcvSURF_W11V11U10,
gcvSURF_V8U8_1_A4R4G4B4,
gcvSURF_A8B8G8R8_1_A8R8G8B8,
gcvSURF_A32R32G32B32_1_A8R8G8B8,
gcvSURF_X16B16G16R16F_1_A8R8G8B8,
gcvSURF_A16B16G16R16F_1_A8R8G8B8,
gcvSURF_G32R32F_1_A8R8G8B8,
gcvSURF_X32B32G32R32F_1_A8R8G8B8,
gcvSURF_A32B32G32R32F_1_A8R8G8B8,
gcvSURF_G32R32I_1_A8R8G8B8,
gcvSURF_G32R32UI_1_A8R8G8B8,
gcvSURF_A32B32G32R32I_1_A8R8G8B8,
gcvSURF_A32B32G32R32UI_1_A8R8G8B8,
gcvSURF_Q16W16V16U16_1_A8R8G8B8,
gcvSURF_A16B16G16R16_1_A8R8G8B8,
/* Integer formats (2)) */
gcvSURF_R10G10B10A2UI = 1800,
gcvSURF_R5G6B5UI,
gcvSURF_B5G6R5UI,
gcvSURF_R3G3B2UI,
gcvSURF_B2G3R3UI,
gcvSURF_R4G4B4A4UI,
gcvSURF_A4B4G4R4UI,
gcvSURF_R5G5B5A1UI,
gcvSURF_A1B5G5R5UI,
gcvSURF_R8G8B8A8UI,
/* GL4 formats */
gcvSURF_G8 = 1900,
gcvSURF_B8,
gcvSURF_G32F,
gcvSURF_B32F,
/* Intensity formats */
gcvSURF_I4 = 2000,
gcvSURF_I8,
gcvSURF_I12,
gcvSURF_I16,
/* D3D typeless format*/
gcvSURF_R32G32B32A32_TYPELESS = 2100,
gcvSURF_R32G32B32_TYPELESS,
gcvSURF_R16G16B16A16_TYPELESS,
gcvSURF_R32G32_TYPELESS,
gcvSURF_R32G8X24_TYPELESS,
gcvSURF_R32_FLOAT_X8X24_TYPELESS,
gcvSURF_X32_TYPELESS_G8X24_UINT,
gcvSURF_R10G10B10A2_TYPELESS,
gcvSURF_R8G8B8A8_TYPELESS,
gcvSURF_R16G16_TYPELESS,
gcvSURF_R32_TYPELESS,
gcvSURF_R24G8_TYPELESS,
gcvSURF_R24_UNORM_X8_TYPELESS,
gcvSURF_X24_TYPELESS_G8_UINT,
gcvSURF_R8G8_TYPELESS,
gcvSURF_R16_TYPELESS,
gcvSURF_R8_TYPELESS,
gcvSURF_BC1_TYPELESS,
gcvSURF_BC2_TYPELESS,
gcvSURF_BC3_TYPELESS,
gcvSURF_BC4_TYPELESS,
gcvSURF_BC5_TYPELESS,
gcvSURF_B8G8R8A8_TYPELESS,
gcvSURF_B8G8R8X8_TYPELESS,
gcvSURF_BC6H_TYPELESS,
gcvSURF_BC7_TYPELESS,
} gceSURF_FORMAT;
/* Pipes. */
typedef enum _gcePIPE_SELECT {
gcvPIPE_INVALID = ~0,
gcvPIPE_3D = 0,
gcvPIPE_2D
} gcePIPE_SELECT;
/* Hardware type. */
typedef enum _gceHARDWARE_TYPE {
gcvHARDWARE_INVALID,
gcvHARDWARE_3D2D,
gcvHARDWARE_3D,
gcvHARDWARE_2D,
gcvHARDWARE_VIP,
gcvHARDWARE_VG,
gcvHARDWARE_NUM_TYPES,
} gceHARDWARE_TYPE;
/* User signal command codes. */
typedef enum _gceUSER_SIGNAL_COMMAND_CODES {
gcvUSER_SIGNAL_CREATE,
gcvUSER_SIGNAL_DESTROY,
gcvUSER_SIGNAL_SIGNAL,
gcvUSER_SIGNAL_WAIT,
gcvUSER_SIGNAL_MAP,
gcvUSER_SIGNAL_UNMAP,
} gceUSER_SIGNAL_COMMAND_CODES;
/* Shared buffer command codes. */
typedef enum _gceSHBUF_COMMAND_CODES {
gcvSHBUF_CREATE,
gcvSHBUF_DESTROY,
gcvSHBUF_MAP,
gcvSHBUF_WRITE,
gcvSHBUF_READ,
} gceSHBUF_COMMAND_CODES;
/* Event locations. */
typedef enum _gceKERNEL_WHERE {
gcvKERNEL_COMMAND,
gcvKERNEL_VERTEX,
gcvKERNEL_TRIANGLE,
gcvKERNEL_TEXTURE,
gcvKERNEL_PIXEL,
gcvKERNEL_BLT,
} gceKERNEL_WHERE;
typedef enum _gceBLOCK {
gcvBLOCK_COMMAND,
gcvBLOCK_TESSELLATOR,
gcvBLOCK_TESSELLATOR2,
gcvBLOCK_TESSELLATOR3,
gcvBLOCK_RASTER,
gcvBLOCK_VG,
gcvBLOCK_VG2,
gcvBLOCK_VG3,
gcvBLOCK_PIXEL,
/* Number of defined blocks. */
gcvBLOCK_COUNT
} gceBLOCK;
typedef enum _gceCORE_3D_MASK {
gcvCORE_3D_0_MASK = (1 << 0),
gcvCORE_3D_1_MASK = (1 << 1),
gcvCORE_3D_ALL_MASK = (0xFFFF)
} gceCORE_3D_MASK;
typedef enum _gceCORE_3D_ID {
gcvCORE_3D_0_ID = 0,
gcvCORE_3D_1_ID = 1,
gcvCORE_3D_ID_INVALID = ~0UL
} gceCORE_3D_ID;
typedef enum _gceCORE_2D_MASK {
gcvCORE_2D_0_MASK = (1 << 0),
gcvCORE_2D_1_MASK = (1 << 1),
gcvCORE_2D_2_MASK = (1 << 2),
gcvCORE_2D_3_MASK = (1 << 3),
gcvCORE_2D_ALL_MASK = (0xFFFF)
} gceCORE_2D_MASK;
typedef enum _gceCORE_2D_ID {
gcvCORE_2D_0_ID = 0,
gcvCORE_2D_1_ID = 1,
gcvCORE_2D_ID_INVALID = ~0UL
} gceCORE_2D_ID;
typedef enum _gceCHIP_FLAG {
gcvCHIP_FLAG_MSAA_COHERENCEY_ECO_FIX = 1 << 0,
gcvCHIP_FLAG_GC2000_R2 = 1 << 1,
gcvCHIP_AXI_BUS128_BITS = 1 << 2,
} gceCHIP_FLAG;
/* If different, choose render engine */
#define PRIORITY_ENGINE(a, b) gcmMIN(a, b)
typedef enum {
gcvENGINE_RENDER = 0,
gcvENGINE_BLT = 1,
gcvENGINE_GPU_ENGINE_COUNT = 2,
gcvENGINE_CPU = gcvENGINE_GPU_ENGINE_COUNT,
gcvENGINE_ALL_COUNT = gcvENGINE_CPU + 1,
gcvENGINE_INVALID = gcvENGINE_ALL_COUNT + 0x100
} gceENGINE;
/* CORE enum. */
typedef enum _gceCORE {
gcvCORE_MAJOR,
gcvCORE_3D1,
gcvCORE_3D2,
gcvCORE_3D3,
gcvCORE_3D4,
gcvCORE_3D5,
gcvCORE_3D6,
gcvCORE_3D7,
gcvCORE_3D8,
gcvCORE_3D9,
gcvCORE_3D10,
gcvCORE_3D11,
gcvCORE_3D12,
gcvCORE_3D13,
gcvCORE_3D14,
gcvCORE_3D15,
gcvCORE_3D_MAX = gcvCORE_3D15,
gcvCORE_2D,
gcvCORE_2D1,
gcvCORE_2D2,
gcvCORE_2D3,
gcvCORE_2D_MAX = gcvCORE_2D3,
gcvCORE_VG,
#if gcdDEC_ENABLE_AHB
gcvCORE_DEC,
#endif
gcvCORE_COUNT
} gceCORE;
#define gcdCORE_3D_COUNT (gcvCORE_3D_MAX + 1)
#define gcdCORE_2D_COUNT 4
#define gcdMAX_MAJOR_CORE_COUNT (gcvCORE_2D_MAX + 1)
#ifndef gcdDEVICE_COUNT
#define gcdDEVICE_COUNT 2
#endif
#ifndef gcdPLATFORM_COUNT
#define gcdPLATFORM_COUNT gcdDEVICE_COUNT
#endif
#ifndef gcvSRAM_EXT_COUNT
#define gcvSRAM_EXT_COUNT gcdDEVICE_COUNT
#endif
#ifndef gcdSYSTEM_RESERVE_COUNT
#define gcdSYSTEM_RESERVE_COUNT gcdDEVICE_COUNT
#endif
#ifndef gcdLOCAL_MEMORY_COUNT
#define gcdLOCAL_MEMORY_COUNT gcdDEVICE_COUNT
#endif
#ifndef gcdGLOBAL_CORE_COUNT
#define gcdGLOBAL_CORE_COUNT (gcdDEVICE_COUNT * gcdCORE_3D_COUNT)
#endif
#ifndef gcdGLOBAL_2D_COUNT
#define gcdGLOBAL_2D_COUNT gcdCORE_2D_COUNT
#endif
#define gcdCHIP_COUNT gcdGLOBAL_CORE_COUNT
typedef enum _gceSECURE_MODE {
/* For cores without gcvFEATURE_SECURITY. */
gcvSECURE_NONE,
/* Use registers added in gcvFEATURE_SECURITY in normal driver,
* In this mode, GPU always works under non secure mode and
* should not touch secure buffer. It is used to test basic function.
*/
gcvSECURE_IN_NORMAL,
/* Make use of gcvFEATURE_SECURITY in trust application. */
gcvSECURE_IN_TA
} gceSECURE_MODE;
/* kernel driver compression option, as it's a system global option,
* it means kernel driver allows the options, NOT necessarily means it must be on.
*/
typedef enum _gceCOMPRESSION_OPTION {
gcvCOMPRESSION_OPTION_NONE = 0x0, /* No any compression */
gcvCOMPRESSION_OPTION_COLOR = 0x1, /* Compression for non-msaa color format */
gcvCOMPRESSION_OPTION_DEPTH = 0x2, /* Compression for non-msaa depth format */
gcvCOMPRESSION_OPTION_MSAA_COLOR = 0x4, /* Compression for msaa color */
gcvCOMPRESSION_OPTION_MSAA_DEPTH = 0x8, /* Compression for msaa depth */
/* default compressio option */
gcvCOMPRESSION_OPTION_DEFAULT = gcvCOMPRESSION_OPTION_DEPTH |
gcvCOMPRESSION_OPTION_COLOR |
gcvCOMPRESSION_OPTION_MSAA_COLOR |
gcvCOMPRESSION_OPTION_MSAA_DEPTH,
} gceCOMPRESSION_OPTION;
typedef enum _gceSRAM_INTERNAL {
gcvSRAM_INTERNAL0 = 0,
gcvSRAM_INTERNAL1,
gcvSRAM_INTER_COUNT
} gceSRAM_INTERNAL;
typedef enum _gceFLATMAP_FLAG {
gcvFLATMAP_DIRECT,
gcvFLATMAP_SHIFT,
} gceFLATMAP_FLAG;
/* Video memory alloation type. */
typedef enum _gceVIDMEM_TYPE {
gcvVIDMEM_TYPE_GENERIC = gcvSURF_TYPE_UNKNOWN,
gcvVIDMEM_TYPE_INDEX_BUFFER = gcvSURF_INDEX,
gcvVIDMEM_TYPE_VERTEX_BUFFER = gcvSURF_VERTEX,
gcvVIDMEM_TYPE_TEXTURE = gcvSURF_TEXTURE,
gcvVIDMEM_TYPE_COLOR_BUFFER = gcvSURF_RENDER_TARGET,
gcvVIDMEM_TYPE_DEPTH_BUFFER = gcvSURF_DEPTH,
gcvVIDMEM_TYPE_BITMAP = gcvSURF_BITMAP,
gcvVIDMEM_TYPE_TILE_STATUS = gcvSURF_TILE_STATUS,
gcvVIDMEM_TYPE_IMAGE = gcvSURF_IMAGE,
gcvVIDMEM_TYPE_MASK = gcvSURF_MASK,
gcvVIDMEM_TYPE_SCISSOR = gcvSURF_SCISSOR,
gcvVIDMEM_TYPE_HZ_BUFFER = gcvSURF_HIERARCHICAL_DEPTH,
gcvVIDMEM_TYPE_ICACHE = gcvSURF_ICACHE,
gcvVIDMEM_TYPE_TXDESC = gcvSURF_TXDESC,
gcvVIDMEM_TYPE_FENCE = gcvSURF_FENCE,
gcvVIDMEM_TYPE_TFBHEADER = gcvSURF_TFBHEADER,
gcvVIDMEM_TYPE_COMMAND,
gcvVIDMEM_TYPE_COUNT
} gceVIDMEM_TYPE;
typedef enum _gceTASK {
gcvTASK_LINK,
gcvTASK_CLUSTER,
gcvTASK_INCREMENT,
gcvTASK_DECREMENT,
gcvTASK_SIGNAL,
gcvTASK_LOCKDOWN,
gcvTASK_UNLOCK_VIDEO_MEMORY,
gcvTASK_FREE_VIDEO_MEMORY,
gcvTASK_FREE_CONTIGUOUS_MEMORY,
} gceTASK;
/******************************************************************************
******************************** Status Codes ********************************
******************************************************************************/
typedef enum _gceSTATUS {
gcvSTATUS_OK = 0,
gcvSTATUS_FALSE = 0,
gcvSTATUS_TRUE = 1,
gcvSTATUS_NO_MORE_DATA = 2,
gcvSTATUS_CACHED = 3,
gcvSTATUS_MIPMAP_TOO_LARGE = 4,
gcvSTATUS_NAME_NOT_FOUND = 5,
gcvSTATUS_NOT_OUR_INTERRUPT = 6,
gcvSTATUS_MISMATCH = 7,
gcvSTATUS_MIPMAP_TOO_SMALL = 8,
gcvSTATUS_LARGER = 9,
gcvSTATUS_SMALLER = 10,
gcvSTATUS_CHIP_NOT_READY = 11,
gcvSTATUS_NEED_CONVERSION = 12,
gcvSTATUS_SKIP = 13,
gcvSTATUS_DATA_TOO_LARGE = 14,
gcvSTATUS_INVALID_CONFIG = 15,
gcvSTATUS_CHANGED = 16,
gcvSTATUS_NOT_SUPPORT_DITHER = 17,
gcvSTATUS_EXECUTED = 18,
gcvSTATUS_TERMINATE = 19,
gcvSTATUS_INVALID_ARGUMENT = -1,
gcvSTATUS_INVALID_OBJECT = -2,
gcvSTATUS_OUT_OF_MEMORY = -3,
gcvSTATUS_MEMORY_LOCKED = -4,
gcvSTATUS_MEMORY_UNLOCKED = -5,
gcvSTATUS_HEAP_CORRUPTED = -6,
gcvSTATUS_GENERIC_IO = -7,
gcvSTATUS_INVALID_ADDRESS = -8,
gcvSTATUS_CONTEXT_LOSSED = -9,
gcvSTATUS_TOO_COMPLEX = -10,
gcvSTATUS_BUFFER_TOO_SMALL = -11,
gcvSTATUS_INTERFACE_ERROR = -12,
gcvSTATUS_NOT_SUPPORTED = -13,
gcvSTATUS_MORE_DATA = -14,
gcvSTATUS_TIMEOUT = -15,
gcvSTATUS_OUT_OF_RESOURCES = -16,
gcvSTATUS_INVALID_DATA = -17,
gcvSTATUS_INVALID_MIPMAP = -18,
gcvSTATUS_NOT_FOUND = -19,
gcvSTATUS_NOT_ALIGNED = -20,
gcvSTATUS_INVALID_REQUEST = -21,
gcvSTATUS_GPU_NOT_RESPONDING = -22,
gcvSTATUS_TIMER_OVERFLOW = -23,
gcvSTATUS_VERSION_MISMATCH = -24,
gcvSTATUS_LOCKED = -25,
gcvSTATUS_INTERRUPTED = -26,
gcvSTATUS_DEVICE = -27,
gcvSTATUS_NOT_MULTI_PIPE_ALIGNED = -28,
gcvSTATUS_OUT_OF_SAMPLER = -29,
gcvSTATUS_PROBE_LATER = -30,
gcvSTATUS_RESLUT_OVERFLOW = -31,
gcvSTATUS_RECOVERY = -32,
gcvSTATUS_CANCEL_JOB = -33,
/* register allocation errors. */
gcvSTATUS_OUT_OF_REG_FAIL = -100,
/* Linker errors. */
gcvSTATUS_GLOBAL_TYPE_MISMATCH = -1000,
gcvSTATUS_TOO_MANY_ATTRIBUTES = -1001,
gcvSTATUS_TOO_MANY_UNIFORMS = -1002,
gcvSTATUS_TOO_MANY_VARYINGS = -1003,
gcvSTATUS_UNDECLARED_VARYING = -1004,
gcvSTATUS_VARYING_TYPE_MISMATCH = -1005,
gcvSTATUS_MISSING_MAIN = -1006,
gcvSTATUS_NAME_MISMATCH = -1007,
gcvSTATUS_INVALID_INDEX = -1008,
gcvSTATUS_UNIFORM_MISMATCH = -1009,
gcvSTATUS_UNSAT_LIB_SYMBOL = -1010,
gcvSTATUS_TOO_MANY_SHADERS = -1011,
gcvSTATUS_LINK_INVALID_SHADERS = -1012,
gcvSTATUS_CS_NO_WORKGROUP_SIZE = -1013,
gcvSTATUS_LINK_LIB_ERROR = -1014,
gcvSTATUS_SHADER_VERSION_MISMATCH = -1015,
gcvSTATUS_TOO_MANY_INSTRUCTION = -1016,
gcvSTATUS_SSBO_MISMATCH = -1017,
gcvSTATUS_TOO_MANY_OUTPUT = -1018,
gcvSTATUS_TOO_MANY_INPUT = -1019,
gcvSTATUS_NOT_SUPPORT_CL = -1020,
gcvSTATUS_NOT_SUPPORT_INTEGER = -1021,
gcvSTATUS_UNIFORM_TYPE_MISMATCH = -1022,
gcvSTATUS_MISSING_PRIMITIVE_TYPE = -1023,
gcvSTATUS_MISSING_OUTPUT_VERTEX_COUNT = -1024,
gcvSTATUS_NON_INVOCATION_ID_AS_INDEX = -1025,
gcvSTATUS_INPUT_ARRAY_SIZE_MISMATCH = -1026,
gcvSTATUS_OUTPUT_ARRAY_SIZE_MISMATCH = -1027,
gcvSTATUS_LOCATION_ALIASED = -1028,
gcvSTATUS_LOCATION_OVERLAP = -1029,
gcvSTATUS_LOCATION_NOTCONSISTENT = -1030,
/* Compiler errors. */
gcvSTATUS_COMPILER_FE_PREPROCESSOR_ERROR = -2000,
gcvSTATUS_COMPILER_FE_PARSER_ERROR = -2001,
/* Recompilation Errors */
gcvSTATUS_RECOMPILER_CONVERT_UNIMPLEMENTED = -3000,
} gceSTATUS;
/* The patch types. */
enum _gceHAL_PATCH_TYPE {
gcvHAL_PATCH_VIDMEM_ADDRESS = 1,
gcvHAL_PATCH_MCFE_SEMAPHORE,
gcvHAL_PATCH_VIDMEM_TIMESTAMP,
/* Must be the last one for counting. */
gcvHAL_PATCH_TYPE_COUNT,
};
/******************************************************************************
******************************** Command Codes *******************************
******************************************************************************/
typedef enum _gceHAL_COMMAND_CODES {
/*************** Common ***************/
/* Chip info: count, type and so on. */
gcvHAL_CHIP_INFO,
/* HAL driver version. */
gcvHAL_VERSION,
/* Query chip id and options. */
gcvHAL_QUERY_CHIP_IDENTITY,
gcvHAL_QUERY_CHIP_OPTION,
/* Query chip frequency, used by CL. */
gcvHAL_QUERY_CHIP_FREQUENCY,
/* Query system pool video memory, used by CL. */
gcvHAL_QUERY_VIDEO_MEMORY,
/* Memory management. */
gcvHAL_ALLOCATE_LINEAR_VIDEO_MEMORY,
gcvHAL_WRAP_USER_MEMORY,
gcvHAL_RELEASE_VIDEO_MEMORY,
gcvHAL_LOCK_VIDEO_MEMORY,
gcvHAL_UNLOCK_VIDEO_MEMORY,
gcvHAL_BOTTOM_HALF_UNLOCK_VIDEO_MEMORY,
gcvHAL_MAP_MEMORY,
gcvHAL_UNMAP_MEMORY,
/* Cache operations. */
gcvHAL_CACHE,
/* HAL user attach and detach. */
gcvHAL_ATTACH,
gcvHAL_DETACH,
/* Event commit. */
gcvHAL_EVENT_COMMIT,
/* User command commit. */
gcvHAL_COMMIT,
/* Set hardware timeout, used by CL. */
gcvHAL_SET_TIMEOUT,
/* User signal operations. */
gcvHAL_USER_SIGNAL,
/* Event signal, commit stall. */
gcvHAL_SIGNAL,
/* Profile related. */
gcvHAL_SET_PROFILE_SETTING,
gcvHAL_READ_PROFILER_REGISTER_SETTING,
gcvHAL_READ_ALL_PROFILE_REGISTERS_PART1,
gcvHAL_READ_ALL_PROFILE_REGISTERS_PART2,
/* Query process database info when debug trace and proflie. */
gcvHAL_DATABASE,
/* Power management enable/disable. */
gcvHAL_CONFIG_POWER_MANAGEMENT,
/* Debug/dump feature. */
gcvHAL_DEBUG_DUMP,
/*************** Common end ***************/
/*************** GPU only ***************/
/* Register operations, 2D only. */
gcvHAL_READ_REGISTER,
gcvHAL_WRITE_REGISTER,
gcvHAL_PROFILE_REGISTERS_2D,
/* Get base address for old mmu. */
gcvHAL_GET_BASE_ADDRESS,
/* Read frame database, 3D only. */
gcvHAL_GET_FRAME_INFO,
/* Set video memory meta data. */
gcvHAL_SET_VIDEO_MEMORY_METADATA,
/* Query command buffer, VG only. */
gcvHAL_QUERY_COMMAND_BUFFER,
/* Reset time stamp. */
gcvHAL_QUERY_RESET_TIME_STAMP,
/* Create native fence. */
gcvHAL_CREATE_NATIVE_FENCE,
/* Wait native fence. */
gcvHAL_WAIT_NATIVE_FENCE,
/* Wait until GPU finishes access to a resource. */
gcvHAL_WAIT_FENCE,
/* Video memory node operations. */
gcvHAL_EXPORT_VIDEO_MEMORY,
gcvHAL_NAME_VIDEO_MEMORY,
gcvHAL_IMPORT_VIDEO_MEMORY,
/* Mutex Operation. */
gcvHAL_DEVICE_MUTEX,
/*************** GPU only end ***************/
/*************** DEC only ***************/
/* DEC200 test. */
gcvHAL_DEC200_TEST,
/* DEC300 related operations. */
gcvHAL_DEC300_READ,
gcvHAL_DEC300_WRITE,
gcvHAL_DEC300_FLUSH,
gcvHAL_DEC300_FLUSH_WAIT,
/*************** DEC only end ***************/
/*************** OS specific ***************/
/* Android gralloc: shared buffer operations. */
gcvHAL_SHBUF,
/* Android gralloc: get graphic buffer fd. */
gcvHAL_GET_GRAPHIC_BUFFER_FD,
/* Vsimulator only. */
gcvHAL_UPDATE_DEBUG_CALLBACK,
gcvHAL_CONFIG_CTX_FRAMEWORK,
/* Non paged memory management backup compatibility, windows, qnx. */
gcvHAL_ALLOCATE_NON_PAGED_MEMORY,
gcvHAL_FREE_NON_PAGED_MEMORY,
/* Write user data, windows only. */
gcvHAL_WRITE_DATA,
/*************** OS specific end ***************/
/*************** Reserved ***************/
/* Access APB register. */
gcvHAL_APB_AXIFE_ACCESS,
/* Trigger a software reset. */
gcvHAL_RESET,
/* Command commit done, preemption only. */
gcvHAL_COMMIT_DONE,
/* Get video memory file description. */
gcvHAL_GET_VIDEO_MEMORY_FD,
/* Get profile setting. */
gcvHAL_GET_PROFILE_SETTING,
/* Read/Write register ex. */
gcvHAL_READ_REGISTER_EX,
gcvHAL_WRITE_REGISTER_EX,
/* Power management state. */
gcvHAL_SET_POWER_MANAGEMENT_STATE,
gcvHAL_QUERY_POWER_MANAGEMENT_STATE,
/* Query CPU frequency. */
gcvHAL_QUERY_CPU_FREQUENCY,
/* Dump HW register state. */
gcvHAL_DUMP_GPU_STATE,
/* Sync video memory for special memory pool */
gcvHAL_SYNC_VIDEO_MEMORY,
/* Cancel Job. */
gcvHAL_CANCEL_JOB,
/* Timer. */
gcvHAL_TIMESTAMP,
/* FSCALE_VAL. */
gcvHAL_SET_FSCALE_VALUE,
gcvHAL_GET_FSCALE_VALUE,
/* Destroy MMU. */
gcvHAL_DESTROY_MMU,
/* Operate fence from user*/
gcvHAL_FENCE_OP,
/*************** Reserved end ***************/
} gceHAL_COMMAND_CODES;
/******************************************************************************
******************************* gcsOBJECT Object *****************************
******************************************************************************/
/* Macro to combine four characters into a Charcater Code. */
#define gcmCC(c1, c2, c3, c4) \
(\
(char)(c1) | \
((char)(c2) << 8) | \
((char)(c3) << 16) | \
((char)(c4) << 24) \
)
/* Type of objects. */
typedef enum _gceOBJECT_TYPE {
gcvOBJ_UNKNOWN = 0,
gcvOBJ_2D = gcmCC('2', 'D', ' ', ' '),
gcvOBJ_3D = gcmCC('3', 'D', ' ', ' '),
gcvOBJ_ATTRIBUTE = gcmCC('A', 'T', 'T', 'R'),
gcvOBJ_BRUSHCACHE = gcmCC('B', 'R', 'U', '$'),
gcvOBJ_BRUSHNODE = gcmCC('B', 'R', 'U', 'n'),
gcvOBJ_BRUSH = gcmCC('B', 'R', 'U', 'o'),
gcvOBJ_BUFFER = gcmCC('B', 'U', 'F', 'R'),
gcvOBJ_COMMAND = gcmCC('C', 'M', 'D', ' '),
gcvOBJ_COMMANDBUFFER = gcmCC('C', 'M', 'D', 'B'),
gcvOBJ_CONTEXT = gcmCC('C', 'T', 'X', 'T'),
gcvOBJ_DEVICE = gcmCC('D', 'E', 'V', ' '),
gcvOBJ_DUMP = gcmCC('D', 'U', 'M', 'P'),
gcvOBJ_EVENT = gcmCC('E', 'V', 'N', 'T'),
gcvOBJ_FUNCTION = gcmCC('F', 'U', 'N', 'C'),
gcvOBJ_HAL = gcmCC('H', 'A', 'L', ' '),
gcvOBJ_HARDWARE = gcmCC('H', 'A', 'R', 'D'),
gcvOBJ_HEAP = gcmCC('H', 'E', 'A', 'P'),
gcvOBJ_INDEX = gcmCC('I', 'N', 'D', 'X'),
gcvOBJ_INTERRUPT = gcmCC('I', 'N', 'T', 'R'),
gcvOBJ_KERNEL = gcmCC('K', 'E', 'R', 'N'),
gcvOBJ_KERNEL_FUNCTION = gcmCC('K', 'F', 'C', 'N'),
gcvOBJ_MEMORYBUFFER = gcmCC('M', 'E', 'M', 'B'),
gcvOBJ_MMU = gcmCC('M', 'M', 'U', ' '),
gcvOBJ_OS = gcmCC('O', 'S', ' ', ' '),
gcvOBJ_OUTPUT = gcmCC('O', 'U', 'T', 'P'),
gcvOBJ_PAINT = gcmCC('P', 'N', 'T', ' '),
gcvOBJ_PATH = gcmCC('P', 'A', 'T', 'H'),
gcvOBJ_QUEUE = gcmCC('Q', 'U', 'E', ' '),
gcvOBJ_SAMPLER = gcmCC('S', 'A', 'M', 'P'),
gcvOBJ_SHADER = gcmCC('S', 'H', 'D', 'R'),
gcvOBJ_VIR_SHADER = gcmCC('V', 'S', 'D', 'R'),
gcvOBJ_STREAM = gcmCC('S', 'T', 'R', 'M'),
gcvOBJ_SURF = gcmCC('S', 'U', 'R', 'F'),
gcvOBJ_TEXTURE = gcmCC('T', 'X', 'T', 'R'),
gcvOBJ_UNIFORM = gcmCC('U', 'N', 'I', 'F'),
gcvOBJ_VARIABLE = gcmCC('V', 'A', 'R', 'I'),
gcvOBJ_VERTEX = gcmCC('V', 'R', 'T', 'X'),
gcvOBJ_VIDMEM = gcmCC('V', 'M', 'E', 'M'),
gcvOBJ_VIDMEM_BLOCK = gcmCC('V', 'M', 'B', 'K'),
gcvOBJ_VG = gcmCC('V', 'G', ' ', ' '),
gcvOBJ_BUFOBJ = gcmCC('B', 'U', 'F', 'O'),
gcvOBJ_UNIFORM_BLOCK = gcmCC('U', 'B', 'L', 'K'),
gcvOBJ_CL = gcmCC('C', 'L', ' ', ' '),
gcvOBJ_STORAGE_BLOCK = gcmCC('S', 'B', 'L', 'K'),
gcvOBJ_IO_BLOCK = gcmCC('I', 'O', 'B', 'K'),
} gceOBJECT_TYPE;
/* Video memory pool type. */
typedef enum _gcePOOL {
gcvPOOL_UNKNOWN = 0,
gcvPOOL_DEFAULT,
gcvPOOL_LOCAL,
gcvPOOL_LOCAL_INTERNAL,
gcvPOOL_LOCAL_EXTERNAL,
gcvPOOL_UNIFIED,
gcvPOOL_SYSTEM,
gcvPOOL_VIRTUAL,
gcvPOOL_USER,
gcvPOOL_INTERNAL_SRAM,
gcvPOOL_EXTERNAL_SRAM,
gcvPOOL_LOCAL_EXCLUSIVE,
gcvPOOL_SYSTEM_32BIT_VA,
gcvPOOL_NUMBER_OF_POOLS
} gcePOOL;
typedef enum _gceDUMP_BUFFER_TYPE {
gcvDUMP_BUFFER_USER_STRING,
gcvDUMP_BUFFER_VERIFY,
gcvDUMP_BUFFER_MEMORY,
gcvDUMP_BUFFER_TEXTURE,
gcvDUMP_BUFFER_STREAM,
gcvDUMP_BUFFER_INDEX,
gcvDUMP_BUFFER_BUFOBJ,
gcvDUMP_BUFFER_IMAGE,
/* A type of command, but should not execute directly. */
gcvDUMP_BUFFER_INSTRUCTION,
gcvDUMP_BUFFER_CONTEXT,
gcvDUMP_BUFFER_COMMAND,
gcvDUMP_BUFFER_ASYNC_COMMAND,
gcvDUMP_BUFFER_USER_TYPE_LAST = gcvDUMP_BUFFER_ASYNC_COMMAND,
gcvDUMP_BUFFER_KERNEL_CONTEXT,
gcvDUMP_BUFFER_KERNEL_COMMAND,
gcvDUMP_BUFFER_PHYSICAL_MEMORY,
gcvDUMP_BUFFER_TYPE_COUNT,
} gceDUMP_BUFFER_TYPE;
typedef enum _gceLOCK_VIDEO_MEMORY_OP {
gcvLOCK_VIDEO_MEMORY_OP_NONE = 0x00,
gcvLOCK_VIDEO_MEMORY_OP_LOCK = 0x01,
gcvLOCK_VIDEO_MEMORY_OP_MAP = 0x02,
gcvLOCK_VIDEO_MEMORY_OP_UNLOCK = 0x04,
gcvLOCK_VIDEO_MEMORY_OP_UNMAP = 0x08,
} gceLOCK_VIDEO_MEMORY_OP;
typedef enum _gceSIGNAL_STATUS {
gcvSIGNAL_OK = 0,
gcvSIGNAL_RECOVERY,
gcvSIGNAL_CANCEL,
} gceSIGNAL_STATUS;
#if gcdENABLE_VIDEO_MEMORY_MIRROR
typedef enum _gceSYNC_MEMORY_DIRECTION {
gcvSYNC_MEMORY_DIRECTION_NONE = 0,
gcvSYNC_MEMORY_DIRECTION_LOCAL_TO_SYSTEM,
gcvSYNC_MEMORY_DIRECTION_SYSTEM_TO_LOCAL,
} gceSYNC_MEMORY_DIRECTION;
typedef enum _gceMIRROR_TYPE {
gcvMIRROR_TYPE_NONE = 0,
gcvMIRROR_TYPE_LOCAL_MEMORY_MIRROR,
gcvMIRROR_TYPE_SYSTEM_MEMORY_MIRROR,
} gceMIRROR_TYPE;
#endif
typedef enum _gceProfilerMode {
gcvPROFILER_UNKNOWN_MODE = 0,
gcvPROFILER_PROBE_MODE,
gcvPROFILER_AHB_MODE,
} gceProfilerMode;
typedef enum _gceProbeMode {
gcvPROFILER_UNKNOWN_PROBE = 0,
gcvPROFILER_GPU_PROBE,
gcvPROFILER_VIP_PROBE,
} gceProbeMode;
typedef enum _gceMULTI_PROCESSOR_MODE {
gcvMP_MODE_COMBINED = 0,
gcvMP_MODE_INDEPENDENT = 1
} gceMULTI_PROCESSOR_MODE;
typedef enum _gceSwitchMpMode {
gcvMP_MODE_NO_SWITCH = 0,
gcvMP_MODE_SWITCH_TO_SINGLE,
gcvMP_MODE_SWITCH_TO_MULTI,
} gceSwitchMpMode;
#ifdef __cplusplus
}
#endif
#endif /* __gc_hal_enum_shared_h_ */