/**************************************************************************** * * 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_ */