From 88e62731810a51d85720716defc51fb764a390c9 Mon Sep 17 00:00:00 2001 From: Simon Zeni Date: Wed, 8 May 2024 12:00:49 -0400 Subject: [PATCH] add v6.4.3.p4.6 headers --- include_v6.4.3.p4.6/gc_abi.h | 39 + include_v6.4.3.p4.6/gc_feature_database.h | 24094 ++++++++++++++++ include_v6.4.3.p4.6/gc_hal.h | 2205 ++ include_v6.4.3.p4.6/gc_hal_base.h | 5865 ++++ include_v6.4.3.p4.6/gc_hal_debug_zones.h | 329 + include_v6.4.3.p4.6/gc_hal_driver.h | 59 + include_v6.4.3.p4.6/gc_hal_driver_vg.h | 59 + include_v6.4.3.p4.6/gc_hal_drm.h | 216 + include_v6.4.3.p4.6/gc_hal_dump.h | 146 + include_v6.4.3.p4.6/gc_hal_eglplatform.h | 554 + include_v6.4.3.p4.6/gc_hal_eglplatform_type.h | 184 + include_v6.4.3.p4.6/gc_hal_engine.h | 2811 ++ include_v6.4.3.p4.6/gc_hal_engine_vg.h | 1059 + include_v6.4.3.p4.6/gc_hal_enum.h | 2190 ++ include_v6.4.3.p4.6/gc_hal_kernel_buffer.h | 323 + include_v6.4.3.p4.6/gc_hal_mem.h | 566 + include_v6.4.3.p4.6/gc_hal_metadata.h | 91 + include_v6.4.3.p4.6/gc_hal_options.h | 1417 + include_v6.4.3.p4.6/gc_hal_profiler.h | 936 + include_v6.4.3.p4.6/gc_hal_raster.h | 1122 + .../gc_hal_security_interface.h | 159 + include_v6.4.3.p4.6/gc_hal_statistics.h | 128 + include_v6.4.3.p4.6/gc_hal_types.h | 61 + include_v6.4.3.p4.6/gc_hal_version.h | 71 + include_v6.4.3.p4.6/gc_hal_vg.h | 736 + .../shared/gc_hal_base_shared.h | 105 + .../shared/gc_hal_driver_shared.h | 1307 + .../shared/gc_hal_driver_vg_shared.h | 268 + .../shared/gc_hal_enum_shared.h | 1936 ++ .../shared/gc_hal_profiler_shared.h | 281 + .../shared/gc_hal_types_shared.h | 1042 + include_v6.4.3.p4.6/shared/gc_hal_vg_shared.h | 224 + 32 files changed, 50583 insertions(+) create mode 100644 include_v6.4.3.p4.6/gc_abi.h create mode 100644 include_v6.4.3.p4.6/gc_feature_database.h create mode 100644 include_v6.4.3.p4.6/gc_hal.h create mode 100644 include_v6.4.3.p4.6/gc_hal_base.h create mode 100644 include_v6.4.3.p4.6/gc_hal_debug_zones.h create mode 100644 include_v6.4.3.p4.6/gc_hal_driver.h create mode 100644 include_v6.4.3.p4.6/gc_hal_driver_vg.h create mode 100644 include_v6.4.3.p4.6/gc_hal_drm.h create mode 100644 include_v6.4.3.p4.6/gc_hal_dump.h create mode 100644 include_v6.4.3.p4.6/gc_hal_eglplatform.h create mode 100644 include_v6.4.3.p4.6/gc_hal_eglplatform_type.h create mode 100644 include_v6.4.3.p4.6/gc_hal_engine.h create mode 100644 include_v6.4.3.p4.6/gc_hal_engine_vg.h create mode 100644 include_v6.4.3.p4.6/gc_hal_enum.h create mode 100644 include_v6.4.3.p4.6/gc_hal_kernel_buffer.h create mode 100644 include_v6.4.3.p4.6/gc_hal_mem.h create mode 100644 include_v6.4.3.p4.6/gc_hal_metadata.h create mode 100644 include_v6.4.3.p4.6/gc_hal_options.h create mode 100644 include_v6.4.3.p4.6/gc_hal_profiler.h create mode 100644 include_v6.4.3.p4.6/gc_hal_raster.h create mode 100644 include_v6.4.3.p4.6/gc_hal_security_interface.h create mode 100644 include_v6.4.3.p4.6/gc_hal_statistics.h create mode 100644 include_v6.4.3.p4.6/gc_hal_types.h create mode 100644 include_v6.4.3.p4.6/gc_hal_version.h create mode 100644 include_v6.4.3.p4.6/gc_hal_vg.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_base_shared.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_driver_shared.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_driver_vg_shared.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_enum_shared.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_profiler_shared.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_types_shared.h create mode 100644 include_v6.4.3.p4.6/shared/gc_hal_vg_shared.h diff --git a/include_v6.4.3.p4.6/gc_abi.h b/include_v6.4.3.p4.6/gc_abi.h new file mode 100644 index 0000000..f9747fb --- /dev/null +++ b/include_v6.4.3.p4.6/gc_abi.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 Etnaviv Project + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/** Kernel ABI definition file for Etna **/ +#ifndef H_GCABI +#define H_GCABI + +#define GCABI_HAS_STATE_DELTAS +#define GCABI_NO_ALLOCATE_CONTIGUOUS_MEMORY +#define GCABI_NO_FREE_VIDEO_MEMORY +#define GCABI_SUBCOMMIT + +typedef struct +{ + unsigned long long in_buf; + unsigned long long in_buf_size; + unsigned long long out_buf; + unsigned long long out_buf_size; +} vivante_ioctl_data_t; +#endif diff --git a/include_v6.4.3.p4.6/gc_feature_database.h b/include_v6.4.3.p4.6/gc_feature_database.h new file mode 100644 index 0000000..0502cd5 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_feature_database.h @@ -0,0 +1,24094 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +/*Auto created on 2022-09-13 19:41*/ +#ifndef _gc_feature_database_h_ +#define _gc_feature_database_h_ + +typedef struct +{ + /* Chip ID. */ + gctUINT32 chipID; + gctUINT32 chipVersion; + gctUINT32 productID; + gctUINT32 ecoID; + gctUINT32 customerID; + gctUINT32 patchVersion; + const char *productName; + gctUINT32 formalRelease; + gctUINT32 TempRegisters; + gctUINT32 ThreadCount; + gctUINT32 NumShaderCores; + gctUINT32 InstructionCount; + gctUINT32 NumberOfConstants; + gctUINT32 CoreCount; + gctUINT32 LocalStorageSize; + gctUINT32 LocalStorageSize_1; + gctUINT32 LocalStorageSize_2; + gctUINT32 L1CacheSize; + gctUINT32 L1CacheSize_1; + gctUINT32 L1CacheSize_2; + gctUINT32 InstructionMemorySize; + gctUINT32 ShaderPCLength; + gctUINT32 USC_MAX_PAGES; + gctUINT32 USC_MAX_PAGES_1; + gctUINT32 USC_MAX_PAGES_2; + gctUINT32 NumPixelPipes; + gctUINT32 USC_CACHE_CONTROLLERS; + gctUINT32 USC_CACHE_CONTROLLERS_1; + gctUINT32 USC_CACHE_CONTROLLERS_2; + gctUINT32 USC_BANKS; + gctUINT32 USC_BANKS_1; + gctUINT32 USC_BANKS_2; + gctUINT32 VIRTUAL_ADDRESS_BITS; + gctUINT32 PHYSICAL_ADDRESS_BITS; + gctUINT32 Streams; + gctUINT32 VaryingCount; + gctUINT32 VertexOutputBufferSize; + gctUINT32 BufferSize; + gctUINT32 VertexCacheSize; + gctUINT32 NumResolvePipes; + gctUINT32 RESULT_WINDOW_MAX_SIZE; + gctUINT32 ClusterAliveMask; + gctUINT32 G2D_DEC400_MINOR; + gctUINT32 G2D_TILING_MINOR; + gctUINT32 PS_INSTRUCTION_COUNT; + gctUINT32 PS_INPUT_COMPONENTS; + gctUINT32 NNMadPerCore; + gctUINT32 NNCoreCount; + gctUINT32 NN_ACTIVE_CORE_COUNT; + gctUINT32 NNCoreCount_INT8; + gctUINT32 NNCoreCount_INT16; + gctUINT32 NNCoreCount_FLOAT16; + gctUINT32 NNCoreCount_BFLOAT; + gctUINT32 NNInputBufferDepth; + gctUINT32 NNAccumBufferDepth; + gctUINT32 TPEngine_PwlLUTCount; + gctUINT32 TPEngine_PwlLUTSize; + gctUINT32 VIP_SRAM_SIZE; + gctUINT32 VIP_SRAM_SIZE_ARRAY; + gctUINT32 TPEngine_CoreCount; + gctUINT32 AXI_SRAM_SIZE; + gctUINT32 NN_INIMAGE_OFFSET_BITS; + gctUINT32 TP_REORDER_INIMAGE_SIZE; + gctUINT32 TPLite_CoreCount; + gctUINT32 NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE; + gctUINT32 NNFP16_XYDP_X; + gctUINT32 NNFP16_XYDP_Y; + gctUINT32 NNFP16_ZDP; + gctUINT32 NN_LANES_PER_OUT_CYCLE; + gctUINT32 LUT_ACT_LANES; + gctUINT32 MAX_OT_NUMBER; + gctUINT32 PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE; + gctUINT32 EQUIVALENT_VIP_SRAM_WIDTH_INBYTE; + gctUINT32 TP_ZRL_BITS; + gctUINT32 NN_ZRL_BITS; + gctUINT32 LATENCY_HIDING_AT_FULL_AXI_BW; + gctUINT32 AXI_BUS_WIDTH; + gctUINT32 NN_KERNEL_X_SIZE; + gctUINT32 NN_KERNEL_Y_SIZE; + gctUINT32 NN_FC_KERNEL_Y_SIZE; + gctUINT32 NN_KERNEL_Z_SIZE; + gctUINT32 NN_X_OFFSET; + gctUINT32 NN_Y_OFFSET; + gctUINT32 DDR_KERNEL_BURST_SIZE; + gctUINT32 MIN_AXI_BURST_SIZE; + gctUINT32 OUTIMAGE_X_STRIDE_BITS; + gctUINT32 OUTIMAGE_Y_STRIDE_BITS; + gctUINT32 OUTIMAGE_SLICE_BITS; + gctUINT32 OUTIMAGE_X_SIZE_BITS; + gctUINT32 OUTIMAGE_Y_SIZE_BITS; + gctUINT32 OUTIMAGE_Z_SIZE_BITS; + gctUINT32 INIMAGE_X_STRIDE_BITS; + gctUINT32 IMIMAGE_Y_STRIDE_BITS; + gctUINT32 INIMAGE_SLICE_BITS; + gctUINT32 INIMAGE_X_SIZE_BITS; + gctUINT32 INIMAGE_Y_SIZE_BITS; + gctUINT32 MAX_TILE_X_SIZE; + gctUINT32 NN_CLUSTER_NUM_FOR_POWER_CONTROL; + gctUINT32 NN_IN_LINES_PER_CYCLE; + gctUINT32 NN_MP_INTER_CONNECT_RING_COUNT; + gctUINT32 NN_SMALL_ACCUM_BITS; + gctUINT32 NN_COEF_DECOMPRESS_PERF_X; + gctUINT32 SP_VECTOR_DEPTH; + gctUINT32 REG_FastClear:1; + gctUINT32 REG_SpecialAntiAliasing:1; + gctUINT32 REG_Pipe3D:1; + gctUINT32 REG_DXTTextureCompression:1; + gctUINT32 REG_DebugMode:1; + gctUINT32 REG_ZCompression:1; + gctUINT32 REG_YUV420Filter:1; + gctUINT32 REG_MSAA:1; + gctUINT32 REG_DC:1; + gctUINT32 REG_Pipe2D:1; + gctUINT32 REG_ETC1TextureCompression:1; + gctUINT32 REG_FastScaler:1; + gctUINT32 REG_HighDynamicRange:1; + gctUINT32 REG_YUV420Tiler:1; + gctUINT32 REG_ModuleCG:1; + gctUINT32 REG_MinArea:1; + gctUINT32 REG_NoEZ:1; + gctUINT32 REG_No422Texture:1; + gctUINT32 REG_BufferInterleaving:1; + gctUINT32 REG_ByteWrite2D:1; + gctUINT32 REG_NoScaler:1; + gctUINT32 REG_YUY2Averaging:1; + gctUINT32 REG_HalfPECache:1; + gctUINT32 REG_HalfTXCache:1; + gctUINT32 REG_YUY2RenderTarget:1; + gctUINT32 REG_Mem32BitSupport:1; + gctUINT32 REG_PipeVG:1; + gctUINT32 REG_VGTS:1; + gctUINT32 REG_FE20:1; + gctUINT32 REG_ByteWrite3D:1; + gctUINT32 REG_RsYuvTarget:1; + gctUINT32 REG_FE20BitIndex:1; + gctUINT32 REG_FlipY:1; + gctUINT32 REG_DualReturnBus:1; + gctUINT32 REG_EndiannessConfig:1; + gctUINT32 REG_Texture8K:1; + gctUINT32 REG_CorrectTextureConverter:1; + gctUINT32 REG_SpecialMsaaLod:1; + gctUINT32 REG_FastClearFlush:1; + gctUINT32 REG_2DPE20:1; + gctUINT32 REG_CorrectAutoDisable:1; + gctUINT32 REG_Render8K:1; + gctUINT32 REG_TileStatus2Bits:1; + gctUINT32 REG_SeparateTileStatusWhenInterleaved:1; + gctUINT32 REG_SuperTiled32x32:1; + gctUINT32 REG_VG20:1; + gctUINT32 REG_TSExtendedCommands:1; + gctUINT32 REG_CompressionFifoFixed:1; + gctUINT32 REG_ExtraShaderInstructions0:1; + gctUINT32 REG_VGFilter:1; + gctUINT32 REG_VG21:1; + gctUINT32 REG_ShaderGetsW:1; + gctUINT32 REG_ExtraShaderInstructions1:1; + gctUINT32 REG_DefaultReg0:1; + gctUINT32 REG_MC20:1; + gctUINT32 REG_ShaderMSAASideband:1; + gctUINT32 REG_BugFixes0:1; + gctUINT32 REG_VAA:1; + gctUINT32 REG_BypassInMSAA:1; + gctUINT32 REG_HierarchicalZ:1; + gctUINT32 REG_NewTexture:1; + gctUINT32 REG_A8TargetSupport:1; + gctUINT32 REG_CorrectStencil:1; + gctUINT32 REG_EnhanceVR:1; + gctUINT32 REG_RSUVSwizzle:1; + gctUINT32 REG_V2Compression:1; + gctUINT32 REG_VGDoubleBuffer:1; + gctUINT32 REG_BugFixes1:1; + gctUINT32 REG_BugFixes2:1; + gctUINT32 REG_TextureStride:1; + gctUINT32 REG_BugFixes3:1; + gctUINT32 REG_CorrectAutoDisable1:1; + gctUINT32 REG_AutoRestartTS:1; + gctUINT32 REG_BugFixes4:1; + gctUINT32 REG_L2Windowing:1; + gctUINT32 REG_HalfFloatPipe:1; + gctUINT32 REG_PixelDither:1; + gctUINT32 REG_TwoStencilReference:1; + gctUINT32 REG_ExtendedPixelFormat:1; + gctUINT32 REG_CorrectMinMaxDepth:1; + gctUINT32 REG_DitherAndFilterPlusAlpha2D:1; + gctUINT32 REG_BugFixes5:1; + gctUINT32 REG_New2D:1; + gctUINT32 REG_NewFloatingPointArithmetic:1; + gctUINT32 REG_TextureHorizontalAlignmentSelect:1; + gctUINT32 REG_NonPowerOfTwo:1; + gctUINT32 REG_LinearTextureSupport:1; + gctUINT32 REG_Halti0:1; + gctUINT32 REG_CorrectOverflowVG:1; + gctUINT32 REG_NegativeLogFix:1; + gctUINT32 REG_ResolveOffset:1; + gctUINT32 REG_OkToGateAxiClock:1; + gctUINT32 REG_MMU:1; + gctUINT32 REG_WideLine:1; + gctUINT32 REG_BugFixes6:1; + gctUINT32 REG_FcFlushStall:1; + gctUINT32 REG_LineLoop:1; + gctUINT32 REG_LogicOp:1; + gctUINT32 REG_SeamlessCubeMap:1; + gctUINT32 REG_SuperTiledTexture:1; + gctUINT32 REG_LinearPE:1; + gctUINT32 REG_RectPrimitive:1; + gctUINT32 REG_Composition:1; + gctUINT32 REG_CorrectAutoDisableCountWidth:1; + gctUINT32 REG_PESwizzle:1; + gctUINT32 REG_EndEvent:1; + gctUINT32 REG_S1S8:1; + gctUINT32 REG_Halti1:1; + gctUINT32 REG_RGB888:1; + gctUINT32 REG_TX_YUVAssembler:1; + gctUINT32 REG_DynamicFrequencyScaling:1; + gctUINT32 REG_TXFilter:1; + gctUINT32 REG_FullDirectFB:1; + gctUINT32 REG_OnePass2DFilter:1; + gctUINT32 REG_ThreadWalkerInPS:1; + gctUINT32 REG_TileFiller:1; + gctUINT32 REG_YUVStandard:1; + gctUINT32 REG_MultiSourceBlt:1; + gctUINT32 REG_YUVConversion:1; + gctUINT32 REG_FlushFixed2D:1; + gctUINT32 REG_Interleaver:1; + gctUINT32 REG_MixedStreams:1; + gctUINT32 REG_L2CacheFor2D420:1; + gctUINT32 REG_BugFixes7:1; + gctUINT32 REG_NoIndexPattern:1; + gctUINT32 REG_TextureTileStatus:1; + gctUINT32 REG_DecompressZ16:1; + gctUINT32 REG_BugFixes8:1; + gctUINT32 REG_DERotationStallFix:1; + gctUINT32 REG_OclOnly:1; + gctUINT32 REG_NewFeatures0:1; + gctUINT32 REG_InstructionCache:1; + gctUINT32 REG_GeometryShader:1; + gctUINT32 REG_TexCompressionSupertiled:1; + gctUINT32 REG_Generics:1; + gctUINT32 REG_BugFixes9:1; + gctUINT32 REG_FastMSAA:1; + gctUINT32 REG_WClip:1; + gctUINT32 REG_BugFixes10:1; + gctUINT32 REG_UnifiedSamplers:1; + gctUINT32 REG_BugFixes11:1; + gctUINT32 REG_PerformanceCounters:1; + gctUINT32 REG_ExtraShaderInstructions2:1; + gctUINT32 REG_BugFixes12:1; + gctUINT32 REG_BugFixes13:1; + gctUINT32 REG_DEEnhancements1:1; + gctUINT32 REG_ACE:1; + gctUINT32 REG_TXEnhancements1:1; + gctUINT32 REG_SHEnhancements1:1; + gctUINT32 REG_SHEnhancements2:1; + gctUINT32 REG_PEEnhancements1:1; + gctUINT32 REG_DEEnhancements2:1; + gctUINT32 REG_BugFixes14:1; + gctUINT32 REG_PowerOptimizations0:1; + gctUINT32 REG_NewHZ:1; + gctUINT32 REG_BugFixes15:1; + gctUINT32 REG_DEEnhancements3:1; + gctUINT32 REG_SHEnhancements3:1; + gctUINT32 REG_SHEnhancements4:1; + gctUINT32 REG_TXEnhancements2:1; + gctUINT32 REG_FEEnhancements1:1; + gctUINT32 REG_PEEnhancements2:1; + gctUINT32 REG_PAEnhancements1:1; + gctUINT32 REG_DENoGamma:1; + gctUINT32 REG_PAEnhancements2:1; + gctUINT32 REG_DEEnhancements4:1; + gctUINT32 REG_PEEnhancements3:1; + gctUINT32 REG_HIEnhancements1:1; + gctUINT32 REG_TXEnhancements3:1; + gctUINT32 REG_SHEnhancements5:1; + gctUINT32 REG_FEEnhancements2:1; + gctUINT32 REG_BugFixes16:1; + gctUINT32 REG_DEEnhancements5:1; + gctUINT32 REG_TXEnhancements4:1; + gctUINT32 REG_PEEnhancements4:1; + gctUINT32 REG_MCEnhancements1:1; + gctUINT32 REG_Halti2:1; + gctUINT32 REG_DEMirrorRotate:1; + gctUINT32 REG_SmallMSAA:1; + gctUINT32 REG_BugFixes17:1; + gctUINT32 REG_Rasterizer2:1; + gctUINT32 REG_DualPipeOPF:1; + gctUINT32 REG_MultiSrcV2:1; + gctUINT32 REG_CSCV2:1; + gctUINT32 REG_PAEnhancements3:1; + gctUINT32 REG_BugFixes18:1; + gctUINT32 REG_Compression2D:1; + gctUINT32 REG_Probe:1; + gctUINT32 REG_MediumPrecision:1; + gctUINT32 REG_DESupertile:1; + gctUINT32 REG_BugFixes19:1; + gctUINT32 REG_SHEnhancements6:1; + gctUINT32 REG_SHEnhancements7:1; + gctUINT32 REG_BugFixes20:1; + gctUINT32 REG_DEAddress40:1; + gctUINT32 REG_MiniMMUFix:1; + gctUINT32 REG_EEZ:1; + gctUINT32 REG_BugFixes21:1; + gctUINT32 REG_ExtraVgCaps:1; + gctUINT32 REG_MultiSrcV15:1; + gctUINT32 REG_BugFixes22:1; + gctUINT32 REG_Halti3:1; + gctUINT32 REG_TessellationShaders:1; + gctUINT32 REG_OPF9Tap:1; + gctUINT32 REG_MultiSrcV2StrQuad:1; + gctUINT32 REG_SeperateSRCAndDstCache:1; + gctUINT32 REG_Halti4:1; + gctUINT32 REG_RAWriteDepth:1; + gctUINT32 REG_AndroidOnly:1; + gctUINT32 REG_HasChipProductReg:1; + gctUINT32 REG_TXSupportDEC:1; + gctUINT32 REG_S8MSAACompression:1; + gctUINT32 REG_BugFixesIn544:1; + gctUINT32 REG_L2CacheRemove:1; + gctUINT32 REG_FEAllowRndVtxCnt:1; + gctUINT32 REG_CubeMapFL28:1; + gctUINT32 REG_TX6bitFrac:1; + gctUINT32 REG_FEAllowStallPrefetchEng:1; + gctUINT32 REG_ThirdPartyCompression:1; + gctUINT32 REG_RSS8:1; + gctUINT32 REG_MSAACoherencyCheck:1; + gctUINT32 REG_Halti5:1; + gctUINT32 REG_Evis:1; + gctUINT32 REG_BltEngine:1; + gctUINT32 REG_BugFixes23:1; + gctUINT32 REG_BugFixes24:1; + gctUINT32 REG_DEC:1; + gctUINT32 REG_VSTileNV12:1; + gctUINT32 REG_VSTileNV12_10BIT:1; + gctUINT32 REG_DisableVIP:1; + gctUINT32 RenderTarget8:1; + gctUINT32 TxLodFlowCorrection:1; + gctUINT32 FaceLod:1; + gctUINT32 MultiCoreSemaphoreStallV2:1; + gctUINT32 VMSAA:1; + gctUINT32 ChipEnableLink:1; + gctUINT32 MULTI_SRC_BLT_1_5_ENHANCEMENT:1; + gctUINT32 MULTI_SRC_BLT_BILINEAR_FILTER:1; + gctUINT32 RA_HZEZ_CLOCK_CONTROL:1; + gctUINT32 CACHE128B256BPERLINE:1; + gctUINT32 V4Compression:1; + gctUINT32 DE2D_MAJOR_SUPER_TILE:1; + gctUINT32 PE2D_MAJOR_SUPER_TILE:1; + gctUINT32 PE_32BPC_COLORMASK_FIX:1; + gctUINT32 ALPHA_BLENDING_OPT:1; + gctUINT32 NEW_GPIPE:1; + gctUINT32 PIPELINE_32_ATTRIBUTES:1; + gctUINT32 MSAA_SHADING:1; + gctUINT32 NO_ANISTRO_FILTER:1; + gctUINT32 NO_ASTC:1; + gctUINT32 NO_DXT:1; + gctUINT32 HWTFB:1; + gctUINT32 RA_DEPTH_WRITE_MSAA1X_FIX:1; + gctUINT32 EZHZ_CLOCKGATE_FIX:1; + gctUINT32 SH_SNAP2PAGE_FIX:1; + gctUINT32 SH_HALFDEPENDENCY_FIX:1; + gctUINT32 USC_MCFILL_FIX:1; + gctUINT32 TPG_TCPERF_FIX:1; + gctUINT32 USC_MDFIFO_OVERFLOW_FIX:1; + gctUINT32 SH_TEXLD_BARRIER_IN_CS_FIX:1; + gctUINT32 RS_NEW_BASEADDR:1; + gctUINT32 PE_8bpp_DUALPIPE_FIX:1; + gctUINT32 SH_ADVANCED_INSTR:1; + gctUINT32 SH_FLAT_INTERPOLATION_DUAL16_FIX:1; + gctUINT32 USC_CONTINUOUS_FLUS_FIX:1; + gctUINT32 SH_SUPPORT_V4:1; + gctUINT32 SH_SUPPORT_ALPHA_KILL:1; + gctUINT32 PE_NO_ALPHA_TEST:1; + gctUINT32 TX_LOD_NEAREST_SELECT:1; + gctUINT32 SH_FIX_LDEXP:1; + gctUINT32 SUPPORT_MOVAI:1; + gctUINT32 SH_SNAP2PAGE_MAXPAGES_FIX:1; + gctUINT32 PE_RGBA16I_FIX:1; + gctUINT32 BLT_8bpp_256TILE_FC_FIX:1; + gctUINT32 PE_64bit_FENCE_FIX:1; + gctUINT32 USC_FULL_CACHE_FIX:1; + gctUINT32 TX_YUV_ASSEMBLER_10BIT:1; + gctUINT32 FE_32bit_INDEX_FIX:1; + gctUINT32 BLT_64bpp_MASKED_CLEAR_FIX:1; + gctUINT32 SECURITY:1; + gctUINT32 ROBUSTNESS:1; + gctUINT32 USC_ATOMIC_FIX:1; + gctUINT32 SH_PSO_MSAA1x_FIX:1; + gctUINT32 USC_VX_PERF_FIX:1; + gctUINT32 USC_GOS_ADDR_FIX:1; + gctUINT32 TX_8bit_UVFrac:1; + gctUINT32 TX_DESC_CACHE_CLOCKGATE_FIX:1; + gctUINT32 RSBLT_MSAA_DECOMPRESSION:1; + gctUINT32 TX_INTEGER_COORDINATE:1; + gctUINT32 DRAWID:1; + gctUINT32 PSIO_SAMPLEMASK_IN_R0ZW_FIX:1; + gctUINT32 TX_INTEGER_COORDINATE_V2:1; + gctUINT32 MULTI_CORE_BLOCK_SET_CONFIG:1; + gctUINT32 SNAPPAGE_CMD:1; + gctUINT32 SH_NO_INDEX_CONST_ON_A0:1; + gctUINT32 SH_NO_ONECONST_LIMIT:1; + gctUINT32 SH_IMG_LDST_ON_TEMP:1; + gctUINT32 COMPUTE_ONLY:1; + gctUINT32 SH_IMG_LDST_CLAMP:1; + gctUINT32 SH_ICACHE_ALLOC_COUNT_FIX:1; + gctUINT32 SH_ICACHE_PREFETCH:1; + gctUINT32 PE2D_SEPARATE_CACHE:1; + gctUINT32 PE_MSAA_OQ_FIX:1; + gctUINT32 PSIO_MSAA_CL_FIX:1; + gctUINT32 USC_DEFER_FILL_FIX:1; + gctUINT32 SH_CLOCK_GATE_FIX:1; + gctUINT32 FE_NEED_DUMMYDRAW:1; + gctUINT32 PE2D_LINEAR_YUV420_OUTPUT:1; + gctUINT32 PE2D_LINEAR_YUV420_10BIT:1; + gctUINT32 MULTI_CLUSTER:1; + gctUINT32 SH_MULTI_WG_PACK:1; + gctUINT32 SH_DUAL16_SAMPLEMASK_ZW:1; + gctUINT32 TPG_TRIVIAL_MODE_FIX:1; + gctUINT32 TX_ASTC_MULTISLICE_FIX:1; + gctUINT32 FE_ROBUST_FIX:1; + gctUINT32 SH_GPIPE_ACCESS_FULLTEMPS:1; + gctUINT32 PSIO_INTERLOCK:1; + gctUINT32 PA_WIDELINE_FIX:1; + gctUINT32 WIDELINE_HELPER_FIX:1; + gctUINT32 TX_FLUSH_L1CACHE:1; + gctUINT32 PE_DITHER_FIX2:1; + gctUINT32 SH_TEXLD_U_FIX:1; + gctUINT32 MC_FCCACHE_BYTEMASK:1; + gctUINT32 SH_MULTI_WG_PACK_FIX:1; + gctUINT32 PE_ADVANCE_BLEND_PART0:1; + gctUINT32 FE_PATCHLIST_FETCH_FIX:1; + gctUINT32 RA_CG_FIX:1; + gctUINT32 DEC400:1; + gctUINT32 LS_SUPPORT_PERCOMP_DEPENDENCY:1; + gctUINT32 MULTI_CORE_BLOCK_SET_CONFIG2:1; + gctUINT32 PE_VMSAA_COVERAGE_CACHE_FIX:1; + gctUINT32 SECURITY_AHB:1; + gctUINT32 MULTICORE_SEMAPHORESTALL_V3:1; + gctUINT32 SMALLBATCH:1; + gctUINT32 SH_CMPLX:1; + gctUINT32 SH_IDIV0_SWZL_EHS:1; + gctUINT32 TX_LERP_LESS_BIT:1; + gctUINT32 SH_GM_ENDIAN:1; + gctUINT32 SH_GM_USC_UNALLOC:1; + gctUINT32 SH_END_OF_BB:1; + gctUINT32 TX_BORDER_CLAMP_FIX:1; + gctUINT32 SH_IMG_LD_LASTPIXEL_FIX:1; + gctUINT32 ASYNC_BLT:1; + gctUINT32 ASYNC_FE_FENCE_FIX:1; + gctUINT32 PSCS_THROTTLE:1; + gctUINT32 SEPARATE_LS:1; + gctUINT32 WIDELINE_TRIANGLE_EMU:1; + gctUINT32 FENCE_32BIT:1; + gctUINT32 FENCE_64BIT:1; + gctUINT32 PE_DEPTH_ONLY_OQFIX:1; + gctUINT32 TX_SEAMLESS_CUBE:1; + gctUINT32 TX_SNORM_SUPPORT:1; + gctUINT32 SH_SCATTER_GATHER:1; + gctUINT32 HWMANAGED_LS:1; + gctUINT32 SH_IMAGE_ENABLE_FIX:1; + gctUINT32 MSAA_FRAGMENT_OPERATION:1; + gctUINT32 PE_TILE_CACHE_FLUSH_FIX:1; + gctUINT32 BLT_YUV_OUTPUT:1; + gctUINT32 SH_IO_CG_FIX:1; + gctUINT32 PE_SWIZZLE:1; + gctUINT32 SH_ROBUSTNESS_FIX:1; + gctUINT32 USC_ATOMIC_FIX2:1; + gctUINT32 PE_A8B8G8R8:1; + gctUINT32 MULTIVIEW_RENDER:1; + gctUINT32 FE_DRAW_DIRECT:1; + gctUINT32 TX_VKBORDER_MODE:1; + gctUINT32 TX_UNNORMALIZED_COORD:1; + gctUINT32 PA_LINECLIP_FIX:1; + gctUINT32 TX_8bit_UVFrac_ROUNDING_FIX:1; + gctUINT32 MP_ARCH:1; + gctUINT32 TX_NO_FIXED_FILTER:1; + gctUINT32 SHARE_Z:1; + gctUINT32 DE_2D_FAST_CLEAR:1; + gctUINT32 DE_TILESTATUS_ROTATION_FIX:1; + gctUINT32 TX_CLEAR_PENDING_FIX:1; + gctUINT32 HI1_L2_CACHE:1; + gctUINT32 USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX:1; + gctUINT32 FORMAT_10BIT_CROSS_4K:1; + gctUINT32 FORMAT_P010LSB_I010:1; + gctUINT32 ENDIAN_CONTROL:1; + gctUINT32 AXIFE:1; + gctUINT32 SH_VX2_FLOATING_MAD_FIX:1; + gctUINT32 TS_FC_VULKAN_SUPPORT:1; + gctUINT32 MSAA_FLOAT_64BIT:1; + gctUINT32 INDIRECT_COMPUTE_ZERODIM_FIX:1; + gctUINT32 Q_CHANNEL_SUPPORT:1; + gctUINT32 MMU_PAGE_DESCRIPTOR:1; + gctUINT32 YUV_LINEAR_TO_TILE_ROTATE:1; + gctUINT32 VEC2_IMULIMAD32_SUPPORT:1; + gctUINT32 VEC4_IMULIMAD32_SUPPORT:1; + gctUINT32 VEC2_IDIVIMOD16_SUPPORT:1; + gctUINT32 DST_TEX_I2F_F2I_INST_DEPRECATE:1; + gctUINT32 ALU_FP16_INSTRUCTIONS:1; + gctUINT32 DUAL16_14BIT_PC_SUPPORT:1; + gctUINT32 LDST_CONV_4ROUNDING_MODES:1; + gctUINT32 FULL_PACK_MODE_SUPPORT:1; + gctUINT32 DEPTH_FLOAT32_SUPPORT:1; + gctUINT32 GPU_INSPECTOR_COUNTERS:1; + gctUINT32 FP32_TO_FP16_CONV_FIX:1; + gctUINT32 IMGLD_COMP_COUNT_FIX:1; + gctUINT32 IMGLD_WIDTH_LT16_FIX:1; + gctUINT32 TX_FILTER_ROUND_FIX:1; + gctUINT32 SH_FP32_FMA_SUPPORT:1; + gctUINT32 PE_64BPP_LINEAR_FORMAT:1; + gctUINT32 TX_ETC2_COMPRESSION:1; + gctUINT32 HIGHP_VEC2:1; + gctUINT32 MMU_PD_42_BIT_ADDRESS:1; + gctUINT32 BLT_ROBUSTNESS_FIX:1; + gctUINT32 TFB_PERF_FIX:1; + gctUINT32 SH_SUPERSCALAR_ARCH:1; + gctUINT32 PA_ZEROAREA_LINE_FIX:1; + gctUINT32 ATTR_IN_GLOBAL_MEMORY:1; + gctUINT32 SIMPLIFIED_CHECKERBOARD:1; + gctUINT32 ADDR_REMAP:1; + gctUINT32 ADDR_40BIT_OVERFLOW_FIX:1; + gctUINT32 G2D_RGB_PLANAR:1; + gctUINT32 G2D_RGB_PLANAR_SOURCE:1; + gctUINT32 G2D_DEC400EX:1; + gctUINT32 G2D_FC_IN_DEC400EX:1; + gctUINT32 G2D_NO_YUV420_SOURCE:1; + gctUINT32 G2D_YUV420_101010:1; + gctUINT32 G2D_MultiSrcBlt_Pipe:1; + gctUINT32 G2D_Stretch_MultiSrc_Pipe:1; + gctUINT32 G2D_Normalization:1; + gctUINT32 G2D_Normalization_Quantization:1; + gctUINT32 G2D_FRAME_DONE_INTR:1; + gctUINT32 G2D_MASK_AND_COLORKEY:1; + gctUINT32 G2D_DEC400:1; + gctUINT32 G2D_3rd_PARTY_COMPRESSION_1_1:1; + gctUINT32 G2D_Histogram:1; + gctUINT32 G2D_Brightness_Saturation:1; + gctUINT32 VG_TS_CULLING:1; + gctUINT32 VG_FP25:1; + gctUINT32 VG_AYUV_INPUT_OUTPUT:1; + gctUINT32 VG_DOUBLE_IMAGE:1; + gctUINT32 VG_RECTANGLE_STRIPE_MODE:1; + gctUINT32 VG_MMU:1; + gctUINT32 VG_IM_FILTER:1; + gctUINT32 VG_IM_YUV_PACKET:1; + gctUINT32 VG_IM_YUV_PLANAR:1; + gctUINT32 VG_PE_YUV_PACKET:1; + gctUINT32 VG_COLOR_PRECISION_8_BIT:1; + gctUINT32 VG_RESOLVE_ENGINE:1; + gctUINT32 VG_PE_COLOR_KEY:1; + gctUINT32 VG_IM_INDEX_FORMAT:1; + gctUINT32 VG_RESOLUTION_8K:1; + gctUINT32 VG_IMAGE_16K:1; + gctUINT32 VG_FORMAT_ARGB2222:1; + gctUINT32 VIP_HW_FINAL_RELEASE:1; + gctUINT32 NN_SINGLEPORT_ACCUMBUFFER:1; + gctUINT32 NN_STRIDE_SUPPORT:1; + gctUINT32 SWTILING_PHASE1:1; + gctUINT32 SWTILING_PHASE2:1; + gctUINT32 TP_SIMPLE_INT16:1; + gctUINT32 TP_REAL_INT16:1; + gctUINT32 TP_ROI_POOLING:1; + gctUINT32 TP_MAX_POOLING_STRIDE1:1; + gctUINT32 TP_LRN:1; + gctUINT32 TP_REORDER:1; + gctUINT32 TF_QUANTIZATION:1; + gctUINT32 NN_NONZERO_BORDER:1; + gctUINT32 NN_MIRROR_BORDER:1; + gctUINT32 AI_GPU:1; + gctUINT32 EVIS_NO_ABSDIFF:1; + gctUINT32 EVIS_NO_BITREPLACE:1; + gctUINT32 EVIS_NO_BOXFILTER:1; + gctUINT32 EVIS_NO_CORDIAC:1; + gctUINT32 EVIS_NO_DP32:1; + gctUINT32 EVIS_NO_FILTER:1; + gctUINT32 EVIS_NO_IADD:1; + gctUINT32 EVIS_NO_SELECTADD:1; + gctUINT32 EVIS_LERP_7OUTPUT:1; + gctUINT32 EVIS_ACCSQ_8OUTPUT:1; + gctUINT32 EVIS_VX2:1; + gctUINT32 TP_ENGINE:1; + gctUINT32 VIP_V7:1; + gctUINT32 TP_TENSOR_ADD_MUL:1; + gctUINT32 NN_DEPTHWISE_INT16XINT8:1; + gctUINT32 NN_DEPTHWISE_8BIT_VIP_V7:1; + gctUINT32 TP_SOFTMAX:1; + gctUINT32 NN_23BITS_POST_MULTIPLIER_VIP_V7:1; + gctUINT32 TP_23BITS_POST_MULTIPLIER_VIP_V7:1; + gctUINT32 CONV_INT16X8BIT_VIP_V7:1; + gctUINT32 NN_REMOVE_POOLING:1; + gctUINT32 NN_40BIT_BIAS:1; + gctUINT32 TP_REMOVE_USC:1; + gctUINT32 NN_ZDP6:1; + gctUINT32 NN_XYDP9:1; + gctUINT32 NN_FIRST_PIXEL_POOLING:1; + gctUINT32 NN_ZDP3:1; + gctUINT32 NN_XYDP6:1; + gctUINT32 SWTILING_PHASE3:1; + gctUINT32 MCFE:1; + gctUINT32 USC_STAY_LRU:1; + gctUINT32 COEF_COMPRESSION_ENHANCEMENT:1; + gctUINT32 TP_COEF_COMPRESSION_ENHANCEMENT:1; + gctUINT32 NN_COEF_DECOMPRESS_PERF2X:1; + gctUINT32 TP_SMALLBATCH_PHASE1:1; + gctUINT32 OCB_COUNTER:1; + gctUINT32 SCALER:1; + gctUINT32 SCALER_4K:1; + gctUINT32 INPUT_4BIT:1; + gctUINT32 NN_NO_Z_LOCATION_OFFSET:1; + gctUINT32 OCB_REMAP_PHYSICAL_ADDRESS:1; + gctUINT32 NN_SLOW_OUTPUT:1; + gctUINT32 NO_NARROW_POST_PROCESS_PIPE:1; + gctUINT32 TP_NN_PROBE:1; + gctUINT32 NN_DEPTHWISE_SUPPORT:1; + gctUINT32 NN_XYDP0:1; + gctUINT32 NN_WRITE_WITHOUT_USC:1; + gctUINT32 NN_HW_LIMITATION_NATIVE_KER_1x2_2x1:1; + gctUINT32 NN_SMALLBATCH_PHASE1:1; + gctUINT32 NN_SLICE_PADDING_TO_64BYTE_ALIGN:1; + gctUINT32 NN_DW_1x1_CONV_MERGE:1; + gctUINT32 TP_BFLOAT16:1; + gctUINT32 TP_23BITS_POST_MULTIPLIER:1; + gctUINT32 NN_TRANSPOSE:1; + gctUINT32 NN_ZDP_TRANSPOSE_CH9_ONLY:1; + gctUINT32 USE_SINGLE_PORT_VIPSRAM:1; + gctUINT32 NN_LEAKY_RELU:1; + gctUINT32 NN_PRELU:1; + gctUINT32 NN_PER_CHANNEL_QUANT:1; + gctUINT32 NN_PER_CHANNEL_QUANT_ASYM:1; + gctUINT32 NN_ASYMMETRIC_INT8:1; + gctUINT32 NN_FLOAT_POST_MULT:1; + gctUINT32 PRELU_LEAKLY_RELU_CLAMP:1; + gctUINT32 TPLITE_BFLOAT16:1; + gctUINT32 PREPROCESS_IMG_BUF_640BYTE_LIMIT:1; + gctUINT32 NN_POST_OUT_SUPPORT_FP16:1; + gctUINT32 NN_POST_OUT_SUPPORT_BF16:1; + gctUINT32 NN_POST_OUT_SUPPORT_FP32:1; + gctUINT32 TP_KERNEL_1BYTE_ALGIN:1; + gctUINT32 BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE:1; + gctUINT32 NN_COMPRESSION_BYPASSS:1; + gctUINT32 TP_3_USC:1; + gctUINT32 BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE:1; + gctUINT32 NN_NATIVE_STRIDE_TWO:1; + gctUINT32 NN_TENSOR_ADD:1; + gctUINT32 NN_FLOAT32_IO:1; + gctUINT32 TP_FLOAT32_IO:1; + gctUINT32 NN_SMALL_BATCH_PHASE2:1; + gctUINT32 TILE_ACCESS_CAPABILITY:1; + gctUINT32 FAST_DP3_PREPROCESSOR:1; + gctUINT32 DEPTHWISE_SUPPORT_16BIT_FORMAT:1; + gctUINT32 NN_SUPPORT_ALU:1; + gctUINT32 NN_ENHANCED_MAX_POOLING:1; + gctUINT32 NN_TRANSPOSE_PHASE2:1; + gctUINT32 NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD:1; + gctUINT32 NN_CMD_SUPPORT_SLICE:1; + gctUINT32 NN_TENSOR_ADD_RELU:1; + gctUINT32 TPLITE_SUPPORT_TP_DATA_TRANSPOSE:1; + gctUINT32 NN_SUPPORT_CONV_1D:1; + gctUINT32 USE_VIPSRAM_FOR_KERNEL_STREAMING:1; + gctUINT32 NN_SUPPORT_DUMMY_TILE:1; + gctUINT32 NN_SUPPORT_KERNEL_1BYTE_ALIGN:1; + gctUINT32 NN_1x1_NON_POOLING_PACKING:1; + gctUINT32 NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING:1; + gctUINT32 NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2:1; + gctUINT32 TP_REMOVE_FC:1; + gctUINT32 VIP_REMOVE_MMU:1; + gctUINT32 NN_RD_IMG_NEED_EXTRA_SPACE:1; + gctUINT32 VIP_INDIV_CLK_NN:1; + gctUINT32 VIP_EXPORT_CLK_DIV2:1; + gctUINT32 NN_2D_AVERAGE_OUTPUT:1; + gctUINT32 NN_JOB_CANCELATION:1; + gctUINT32 NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE:1; + gctUINT32 NN_SUPPORT_BATCH:1; + gctUINT32 VIP_SUPPORT_DEC:1; + gctUINT32 NN_SUPPORT_MULTI_AXI_ID:1; + gctUINT32 NN_POST_OUT_SUPPORT_INT32:1; + gctUINT32 NN_DISTRIBUTED_VIPSRAM:1; + gctUINT32 NN_FC_ENHANCEMENT:1; + gctUINT32 NN_4BIT_PHASE1:1; + gctUINT32 VIP_DEC400:1; + gctUINT32 NN_POST_MULT_SUPPORT_FP_CONV:1; + gctUINT32 NN_SUPPORT_16_8_QUANTIZATION:1; + gctUINT32 SPECIAL_8BIT_SIGN_ABS_CONV:1; + gctUINT32 NN_SUPPORT_CONFIGURABLE_FASTXDP3:1; + gctUINT32 NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING:1; + gctUINT32 SUPPORT_DECONVNxN_S_LESS_THAN_16:1; + gctUINT32 NN_PICOCORE_DEPTHWISE:1; + gctUINT32 VIP_SUPPORT_TENSOR_TRANSFER:1; + gctUINT32 NN_SUPPORT_CMD_LOOP:1; + gctUINT32 VIP_SUPPORT_X_FRAME_COMPRESSION:1; + gctUINT32 NN_SMALL_ACCUM:1; + gctUINT32 NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM:1; + gctUINT32 POST_MULTIPLIER_LOW_POWER_MODE:1; + gctUINT32 NN_SUPPORT_EFUSE:1; + gctUINT32 NN_SUPPORT_STREAMPROCESSOR:1; + gctUINT32 NN_SUPPORT_GEMM:1; + gctUINT32 NN_CONV_CORE_BYPASS:1; + gctUINT32 NN_SUPPORT_CLAMP_BORDER_MODE:1; + gctUINT32 NN_ELEMENTWISE_BROADCAST_STRIDE_X_0:1; + gctUINT32 NN_2ND_IMAGE_DATA_TYPE:1; + gctUINT32 TENSOR_DMA:1; + gctUINT32 NN_SPLIT_X:1; + gctUINT32 NN_FP8:1; + gctUINT32 NN_DEPTHWISE_ENHANCEMENT:1; + gctUINT32 SUPPORT_DYNAMIC_SHAPE:1; + gctUINT32 SUPPORT_BATCH_ALIGNMENT:1; + gctUINT32 INLINE_MATRIX_TRANSPOSE:1; + gctUINT32 NN_PER3DTILE_BUBBLE_FIX:1; + gctUINT32 NN_CACHELINE_MODE_PERF_FIX:1; + gctUINT32 NN_CONV1x1_PERF_FIX:1; + gctUINT32 TP_REORDER_FIX:1; + gctUINT32 NN_CONVOUT_FIFO_DEPTH_FIX:1; + gctUINT32 NN_ZXDP3_KERNEL_READ_CONFLICT_FIX:1; + gctUINT32 NN_ZDP3_NO_COMPRESS_FIX:1; + gctUINT32 NN_ASYNC_COPY_PERF_FIX:1; + gctUINT32 HI_REORDER_FIX:1; + gctUINT32 INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX:1; + gctUINT32 TP_REORDER_LAYER_SUSPEND_FIX:1; + gctUINT32 NN_ASYNC_COPY_MERGE_FIX:1; + gctUINT32 USC_INVALIDATE_CACHE_LINE_FIX:1; + gctUINT32 NN_REQ_SLOWARBITRATION_FIX:1; + gctUINT32 IMAGE_PARTIAL_CACHE_FIX:1; + gctUINT32 FULLCACHE_KERNELHEAD_FIX:1; + gctUINT32 NN_ZDP_INIMAGE_SIZE_FIX:1; + gctUINT32 IDLE_BEFORE_FLUSH_COMPLETE_FIX:1; + gctUINT32 NO_FLUSH_USC_FIX:1; + gctUINT32 SMALL_BATCH_FLOPS_RESET_FIX:1; + gctUINT32 SMALL_BATCH_DISBLE_FIX:1; + gctUINT32 OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX:1; + gctUINT32 IMAGE_NOT_PACKED_IN_SRAM_FIX:1; + gctUINT32 COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX:1; + gctUINT32 USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX:1; + gctUINT32 LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX:1; + gctUINT32 KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX:1; + gctUINT32 USC_BOTTLENECK_FIX:1; + gctUINT32 KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX:1; + gctUINT32 NN_TILE_NUM_BIGGER_THAN_1024_FIX:1; + gctUINT32 KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX:1; + gctUINT32 NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX:1; + gctUINT32 TP_REORDER_INTILE_X_SIZE_512_FIX:1; + gctUINT32 IMG_POP_PIPELINE_PAUSE_FIX:1; + gctUINT32 FULLCACHE_KERNEL_INTERLEAVE_FIX:1; + gctUINT32 V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX:1; + gctUINT32 V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX:1; + gctUINT32 DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX:1; + gctUINT32 DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX:1; + gctUINT32 TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX:1; + gctUINT32 EVIS2_FLOP_RESET_FIX:1; + gctUINT32 OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX:1; + gctUINT32 USC_ASYNC_CP_RTN_FLOP_RESET_FIX:1; + gctUINT32 IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX:1; + gctUINT32 NEGATIVE_POST_SHIFT_FIX:1; + gctUINT32 INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX:1; + gctUINT32 IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX:1; + gctUINT32 BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX:1; + gctUINT32 INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX:1; + gctUINT32 TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX:1; + gctUINT32 NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX:1; + gctUINT32 NN_IN_TILE_DATA_IS_ALL_PAD_FIX:1; + gctUINT32 NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX:1; + gctUINT32 CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX:1; + gctUINT32 TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX:1; + gctUINT32 NN_KERNEL_1x1_NO_PAD_FIX:1; + gctUINT32 NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX:1; + gctUINT32 TP_NOT_FULL_USE_CACHE_LINE_FIX:1; + gctUINT32 SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX:1; + gctUINT32 BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX:1; + gctUINT32 TP_ASSYM_INT8_FIX:1; + gctUINT32 NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX:1; + gctUINT32 NN_2ND_IMG_BASE_ADDR_FIX:1; + gctUINT32 NN_TP_SYSTEM_FIX:1; + gctUINT32 NN_INTILE_YSIZE_128_LIMIT_FIX:1; + gctUINT32 SH_CLOCK_GATOR_IDLE_CONDITON_FIX:1; + gctUINT32 NN_BURST_COLLECTER_LAST_FLAG_FIX:1; + gctUINT32 V83_CONVERTER_FOR_NEG_0_FIX:1; + gctUINT32 NN_2ND_IMG_SMALL_3D_TILE_FIX:1; + gctUINT32 NN_TILE_YSIZE_127_LIMITATION_FIX:1; + gctUINT32 NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX:1; + gctUINT32 NN_VIPSRAM_DOUBLE_BUFFER_FIX:1; + gctUINT32 NN_JD_DIRECT_MODE_FIX:1; + gctUINT32 NN_KERNEL_DIRECT_WRONG_PUSH_FIX:1; + gctUINT32 HI_DEFAULT_ENABLE_REORDER_FIX:1; + gctUINT32 V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX:1; + gctUINT32 V83_INTILESIZE_1X1_10BITS_FIX:1; + gctUINT32 FASTXDP3_ONLY_IN_DEPTHWISE_FIX:1; + gctUINT32 US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX:1; + gctUINT32 USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX:1; + gctUINT32 DEPTHWISE_FLOAT_FIX:1; + gctUINT32 TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX:1; + gctUINT32 NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX:1; + gctUINT32 CLOCK_DIV2_FREQ_CHANGE_FIX:1; + gctUINT32 SMALL_TILE_TENSOR_ADD_FIX:1; + gctUINT32 DECOMPRESSOR_DEPTHWISE_FLOAT_FIX:1; + gctUINT32 TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX:1; + gctUINT32 V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX:1; + gctUINT32 V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX:1; + gctUINT32 V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX:1; + gctUINT32 USC_RW_SAME_CACHELINE_UPDATE_FIX:1; + gctUINT32 NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX:1; + gctUINT32 CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX:1; + gctUINT32 KERNEL_XSIZE_YSIZE_NUM_FIX:1; + gctUINT32 NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX:1; + gctUINT32 NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX:1; + gctUINT32 NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX:1; + gctUINT32 TP_SPECIAL_LIST_PARSER_FIX:1; + gctUINT32 DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX:1; + gctUINT32 DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX:1; + gctUINT32 SECONDIMG_TILE_SIDEBANFIFO_FIX:1; + gctUINT32 TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX:1; + gctUINT32 NN_NT_SMALLBATCH_TRNSFER_INIT_FIX:1; + gctUINT32 IMGRD_FIRST_ROW_SMALL_SLICE_FIX:1; + gctUINT32 KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX:1; + gctUINT32 MULTI_AXI_ID_IMG_KERNEL_SAME_FIX:1; + gctUINT32 VZ_GROUP_START_Z_OVERFLOW_FIX:1; + gctUINT32 NN_INTERLEVE8:1; + gctUINT32 NN_FP16_ALU:1; + gctUINT32 NN_INT16_ALU:1; + gctUINT32 NN_INT8_SCALE:1; + gctUINT32 NN_POWER_ISOLATION:1; + gctUINT32 ZRL_7BIT:1; + gctUINT32 NN_SMALLBATCH:1; + gctUINT32 TP_SMALLBATCH:1; + gctUINT32 ZRL_8BIT:1; + gctUINT32 DDR_BURST_LEN_256B:1; + gctUINT32 XY_OFFSET_LIMITATION_FIX:1; + gctUINT32 NN_NONZERO_MIRROR_BORDER:1; + gctUINT32 IMAGE_PARTIAL_CACHE:1; +} gcsFEATURE_DATABASE; + +static gcsFEATURE_DATABASE gChipInfo[] = { + /* gc320_5007 */ + { + 0x320, /* ChipID */ + 0x5007, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x400, /* gcFEATURE_VALUE_ThreadCount */ + 0x4, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0x100, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x1, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x8, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x0, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x1, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x1, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x1, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x0, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x0, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x0, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x0, /* gcFEATURE_BIT_REG_MMU */ + 0x0, /* gcFEATURE_BIT_REG_WideLine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x0, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x0, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x0, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x0, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x0, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x0, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x0, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x1, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc320_5303 */ + { + 0x320, /* ChipID */ + 0x5303, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0xa8, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x1, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x0, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x1, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x1, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x1, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x1, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x1, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x1, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x1, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x1, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc320_5341 */ + { + 0x320, /* ChipID */ + 0x5341, /* ChipRevision */ + 0x3202, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0xa8, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x1, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x0, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x1, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x1, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x1, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x1, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x1, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x1, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x1, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x1, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc355_v121_rc5 */ + { + 0x355, /* ChipID */ + 0x1215, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0xa8, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x1, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x0, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x1, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x1, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x1, /* gcFEATURE_BIT_REG_PipeVG */ + 0x1, /* gcFEATURE_BIT_REG_VGTS */ + 0x1, /* gcFEATURE_BIT_REG_FE20 */ + 0x0, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x0, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x0, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x0, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x0, /* gcFEATURE_BIT_REG_Render8K */ + 0x0, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x0, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x1, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x0, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x1, /* gcFEATURE_BIT_REG_VG21 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x0, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x0, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x0, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x1, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x1, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x0, /* gcFEATURE_BIT_REG_PixelDither */ + 0x0, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x0, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x0, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x0, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x0, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x0, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x0, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x0, /* gcFEATURE_BIT_REG_MMU */ + 0x0, /* gcFEATURE_BIT_REG_WideLine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x0, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x0, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x0, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x0, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x0, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x0, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x0, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x1, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc400_4645 */ + { + 0x400, /* ChipID */ + 0x4645, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x4, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x80, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0x240, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x4, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x80, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x1, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_FastScaler */ + 0x0, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x1, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x1, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x0, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x0, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x0, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x0, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x1, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc520l_5341_rc1b */ + { + 0x520, /* ChipID */ + 0x5341, /* ChipRevision */ + 0x5202, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0xa8, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x1, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x0, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x1, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x1, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x1, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x1, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x1, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x1, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x1, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x1, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc520l_5341_rc1i */ + { + 0x520, /* ChipID */ + 0x5341, /* ChipRevision */ + 0x5202, /* ProductID */ + 0x0, /* EcoID */ + 0x204, /* CustomerID */ + 0x3, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0xa8, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x1, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x0, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x1, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x1, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x1, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x1, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x1, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x1, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x1, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x1, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x1, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x1, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x1, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x1, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000nanoultra_4_6_5_rc3a */ + { + 0x600, /* ChipID */ + 0x4653, /* ChipRevision */ + 0x70005, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x1, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x4, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_FastScaler */ + 0x0, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x1, /* gcFEATURE_BIT_REG_MinArea */ + 0x1, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x1, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x1, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x0, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x0, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x1, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x0, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x1, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000nanoultra_4_6_5_rc3e */ + { + 0x600, /* ChipID */ + 0x4653, /* ChipRevision */ + 0x70005, /* ProductID */ + 0x0, /* EcoID */ + 0x102, /* CustomerID */ + 0x5, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x100, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x4, /* gcFEATURE_VALUE_Streams */ + 0x8, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_FastScaler */ + 0x0, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x1, /* gcFEATURE_BIT_REG_MinArea */ + 0x1, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x1, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x1, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x0, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x0, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x1, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x0, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x0, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x0, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x0, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x0, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x1, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x0, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc880_5106 */ + { + 0x880, /* ChipID */ + 0x5106, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x100, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x8, /* gcFEATURE_VALUE_Streams */ + 0xb, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x8, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_FastScaler */ + 0x0, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x0, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x0, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x0, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x0, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x0, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc2000_5108 */ + { + 0x2000, /* ChipID */ + 0x5108, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x400, /* gcFEATURE_VALUE_ThreadCount */ + 0x4, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0xa8, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x1, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x4, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x0, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x0, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x8, /* gcFEATURE_VALUE_Streams */ + 0xb, /* gcFEATURE_VALUE_VaryingCount */ + 0x200, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x2, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x0, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x1, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x0, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x0, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x0, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x0, /* gcFEATURE_BIT_REG_LineLoop */ + 0x0, /* gcFEATURE_BIT_REG_LogicOp */ + 0x0, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x0, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x0, /* gcFEATURE_BIT_REG_LinearPE */ + 0x0, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x0, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x0, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x0, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x0, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x0, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x0, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x0, /* gcFEATURE_BIT_REG_TileFiller */ + 0x0, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x0, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x0, /* gcFEATURE_BIT_REG_Interleaver */ + 0x0, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x0, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x0, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x0, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x0, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x0, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x0, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x0, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x0, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_ACE */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x0, /* gcFEATURE_BIT_REG_NewHZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x0, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x0, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x0, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x0, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x0, /* gcFEATURE_BIT_REG_EEZ */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x0, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc2000_ffff5450 */ + { + 0x2000, /* ChipID */ + 0xffff5450, /* ChipRevision */ + 0x0, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x8, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x400, /* gcFEATURE_VALUE_ThreadCount */ + 0x4, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x1, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x4, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x2, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x0, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x0, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x0, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x0, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x0, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x0, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x0, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x0, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x0, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x0, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x0, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x0, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x0, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x0, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x1, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x0, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000L_5514 */ + { + 0x3000, /* ChipID */ + 0x5514, /* ChipRevision */ + 0x70002, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x400, /* gcFEATURE_VALUE_ThreadCount */ + 0x4, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x1, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x4, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x2, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x0, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x0, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x0, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x1, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x0, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x0, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x0, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x0, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x0, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x1, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x1, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000XSVX_6008 */ + { + 0x7000, /* ChipID */ + 0x6008, /* ChipRevision */ + 0x70008, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x7, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x800, /* gcFEATURE_VALUE_ThreadCount */ + 0x8, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x40, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x40, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x40, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x1f, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x2, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x1, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x1, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x1, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x1, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x1, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x0, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x0, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x0, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x0, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000XSVX_6009 */ + { + 0x7000, /* ChipID */ + 0x6009, /* ChipRevision */ + 0x70008, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x9, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x800, /* gcFEATURE_VALUE_ThreadCount */ + 0x8, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x40, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x40, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x40, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x1f, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x2, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x1, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x1, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x1, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x1, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x1, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000XSVX_6009 */ + { + 0x7000, /* ChipID */ + 0x6009, /* ChipRevision */ + 0x70008, /* ProductID */ + 0x1, /* EcoID */ + 0x0, /* CustomerID */ + 0x9, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x800, /* gcFEATURE_VALUE_ThreadCount */ + 0x8, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x40, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x40, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x40, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x1f, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x2, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x1, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x1, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x1, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x0, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x0, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x1, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x1, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x1, /* gcFEATURE_BIT_HWTFB */ + 0x0, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x0, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x0, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x0, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x0, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x0, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x0, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x0, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x0, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x0, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x0, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY */ + 0x0, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x0, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x0, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x0, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000UL_6200 */ + { + 0x7000, /* ChipID */ + 0x6202, /* ChipRevision */ + 0x70003, /* ProductID */ + 0x0, /* EcoID */ + 0x0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x200, /* gcFEATURE_VALUE_ThreadCount */ + 0x2, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x10, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x10, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x10, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x8, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x1, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* GCNANOULTRA31 */ + { + 0x7000, /* ChipID */ + 0x6205, /* ChipRevision */ + 0x70007, /* ProductID */ + 0x0, /* EcoID */ + 0x12, /* CustomerID */ + 0x0, /* PatchVersion */ + "GCNANOULTRA31", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x200, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x8, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x8, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x1, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x1, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x1, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x1, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x1, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x1, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x1, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x1, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x1, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x1, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x1, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x1, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x1, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x1, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x1, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* GCNANOULTRA31 */ + { + 0x7000, /* ChipID */ + 0x6205, /* ChipRevision */ + 0x70007, /* ProductID */ + 0x1, /* EcoID */ + 0x12, /* CustomerID */ + 0x0, /* PatchVersion */ + "GCNANOULTRA31", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x200, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x8, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x8, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x1, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x1, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x1, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x1, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x1, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x1, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x1, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x1, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x1, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x1, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x1, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x1, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x1, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x1, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x1, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x1, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000ULN_v122 */ + { + 0x7000, /* ChipID */ + 0x6203, /* ChipRevision */ + 0x70003, /* ProductID */ + 0x0, /* EcoID */ + 0x4, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x200, /* gcFEATURE_VALUE_ThreadCount */ + 0x2, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x8, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x8, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x1, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x1, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000ULN_v123 */ + { + 0x7000, /* ChipID */ + 0x6204, /* ChipRevision */ + 0x70003, /* ProductID */ + 0x0, /* EcoID */ + 0x11, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x200, /* gcFEATURE_VALUE_ThreadCount */ + 0x2, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x8, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x8, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x1, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x1, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x1, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000ULN_v123 */ + { + 0x7000, /* ChipID */ + 0x6204, /* ChipRevision */ + 0x70003, /* ProductID */ + 0x1, /* EcoID */ + 0x11, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x200, /* gcFEATURE_VALUE_ThreadCount */ + 0x2, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x8, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x8, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x0, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x0, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x0, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x1, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x0, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x0, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x0, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x1, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x1, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000L_DEC400 */ + { + 0x7000, /* ChipID */ + 0x6214, /* ChipRevision */ + 0x70002, /* ProductID */ + 0x0, /* EcoID */ + 0x30, /* CustomerID */ + 0x8, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x400, /* gcFEATURE_VALUE_ThreadCount */ + 0x4, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x10, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x10, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x1, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x1, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x1, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x1, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x1, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x1, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x1, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x1, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x1, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x1, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc7000L_DEC400 */ + { + 0x7000, /* ChipID */ + 0x6214, /* ChipRevision */ + 0x70002, /* ProductID */ + 0x1, /* EcoID */ + 0x30, /* CustomerID */ + 0x8, /* PatchVersion */ + "", /* ProductName */ + 0x1, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x400, /* gcFEATURE_VALUE_ThreadCount */ + 0x4, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x10, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x8, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x10, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x0, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x0, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x1, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x1, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x1, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x1, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x1, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x1, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x1, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x1, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x1, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x1, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc8200_6305_pid0x70 */ + { + 0x8200, /* ChipID */ + 0x6305, /* ChipRevision */ + 0x82008, /* ProductID */ + 0x0, /* EcoID */ + 0x70, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x800, /* gcFEATURE_VALUE_ThreadCount */ + 0x10, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x40, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x40, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x40, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x28, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x3, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x1, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x1, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x1, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x1, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x1, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x1, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x1, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x1, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x1, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x1, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x1, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x1, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x1, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x1, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x1, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x1, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x1, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* gc8203_6401_pid0x70 */ + { + 0x8200, /* ChipID */ + 0x6401, /* ChipRevision */ + 0x82008, /* ProductID */ + 0x0, /* EcoID */ + 0x70, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x800, /* gcFEATURE_VALUE_ThreadCount */ + 0x10, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x40, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x40, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x40, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x2, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x28, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x10, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x1, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x3, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x0, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x0, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x0, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x0, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x0, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x0, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x0, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x0, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x0, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x0, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x0, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x0, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x0, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x0, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x0, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x0, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x0, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x0, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x0, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x0, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x1, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x0, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x1, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x1, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x1, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x0, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x1, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x1, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x1, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x1, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x0, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x1, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x1, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x0, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x1, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x1, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x1, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x1, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x1, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x1, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x1, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x1, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x1, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x1, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x1, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x1, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x1, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x1, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x1, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x1, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x1, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x0, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x1, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x1, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x1, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x1, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x1, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x1, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x1, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x1, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x1, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x1, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x1, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x1, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x1, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x0, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x0, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x0, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x0, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x0, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x0, /* gcFEATURE_BIT_TP_LRN */ + 0x0, /* gcFEATURE_BIT_TP_REORDER */ + 0x0, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x0, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x1, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x1, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x0, /* gcFEATURE_BIT_TP_ENGINE */ + 0x0, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x0, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x0, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x0, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x0, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x0, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x0, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x0, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x0, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x0, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x0, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x0, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x0, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x0, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x1, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x0, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x0, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x0, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x0, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x0, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x0, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x0, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x0, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x0, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x0, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x0, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x0, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x0, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x0, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x0, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x0, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* vipnano-si+ */ + { + 0x8000, /* ChipID */ + 0x8002, /* ChipRevision */ + 0x5080009, /* ProductID */ + 0x6000000, /* EcoID */ + 0x9f, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x10, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x10, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x10, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x1, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x2, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x8, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x0, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x40, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x6, /* gcFEATURE_VALUE_NNCoreCount */ + 0x6, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x6, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x6, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x9, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x20, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x400, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x10, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x40000, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x3, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x5, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x200, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x8, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x1, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x1, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x1, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x10, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x40, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x40, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x20, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x8, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x8, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x80, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x10, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0xf, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0xf, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0xf, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0xfffff, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x1f, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x1f, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x100, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x100, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x10, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x10, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0xd, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0xd, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0xe, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x10, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x10, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0xd, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0xd, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x40, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x1, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x3, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x20, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x2, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x1, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x1, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x1, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x1, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x1, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x1, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x1, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x1, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x1, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x1, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x1, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x1, /* gcFEATURE_BIT_TP_LRN */ + 0x1, /* gcFEATURE_BIT_TP_REORDER */ + 0x1, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x1, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x1, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x1, /* gcFEATURE_BIT_TP_ENGINE */ + 0x1, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x1, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x1, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x1, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x1, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x1, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x1, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x1, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x1, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x1, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x1, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x1, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x1, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x1, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x1, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x1, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x1, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x1, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x1, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x1, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x1, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x1, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x1, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x1, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x1, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x1, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x1, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x1, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x1, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x1, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x1, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x1, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x1, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x1, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x1, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x1, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x1, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x1, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x1, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x1, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x1, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x1, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x1, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x1, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x1, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x1, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x1, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x1, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x1, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x1, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x1, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x1, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x1, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x1, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x1, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x1, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x1, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x1, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x1, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x1, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x1, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x1, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x1, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x1, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x1, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x1, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x1, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x1, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x1, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x1, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x1, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, + /* vipnano-si+ */ + { + 0x8000, /* ChipID */ + 0x8002, /* ChipRevision */ + 0x5080009, /* ProductID */ + 0x6000000, /* EcoID */ + 0xa0, /* CustomerID */ + 0x0, /* PatchVersion */ + "", /* ProductName */ + 0x0, /* FormalRelease */ + 0x40, /* gcFEATURE_VALUE_TempRegisters */ + 0x100, /* gcFEATURE_VALUE_ThreadCount */ + 0x1, /* gcFEATURE_VALUE_NumShaderCores */ + 0x200, /* gcFEATURE_VALUE_InstructionCount */ + 0x140, /* gcFEATURE_VALUE_NumberOfConstants */ + 0x1, /* gcFEATURE_VALUE_CoreCount */ + 0x10, /* gcFEATURE_VALUE_LocalStorageSize */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_1 */ + 0x0, /* gcFEATURE_VALUE_LocalStorageSize_2 */ + 0x10, /* gcFEATURE_VALUE_L1CacheSize */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_1 */ + 0x0, /* gcFEATURE_VALUE_L1CacheSize_2 */ + 0x200, /* gcFEATURE_VALUE_InstructionMemorySize */ + 0x14, /* gcFEATURE_VALUE_ShaderPCLength */ + 0x10, /* gcFEATURE_VALUE_USC_MAX_PAGES */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_1 */ + 0x0, /* gcFEATURE_VALUE_USC_MAX_PAGES_2 */ + 0x1, /* gcFEATURE_VALUE_NumPixelPipes */ + 0x1, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_CACHE_CONTROLLERS_2 */ + 0x2, /* gcFEATURE_VALUE_USC_BANKS */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_1 */ + 0x0, /* gcFEATURE_VALUE_USC_BANKS_2 */ + 0x20, /* gcFEATURE_VALUE_VIRTUAL_ADDRESS_BITS */ + 0x0, /* gcFEATURE_VALUE_PHYSICAL_ADDRESS_BITS */ + 0x8, /* gcFEATURE_VALUE_Streams */ + 0x10, /* gcFEATURE_VALUE_VaryingCount */ + 0x400, /* gcFEATURE_VALUE_VertexOutputBufferSize */ + 0x0, /* gcFEATURE_VALUE_BufferSize */ + 0x10, /* gcFEATURE_VALUE_VertexCacheSize */ + 0x0, /* gcFEATURE_VALUE_NumResolvePipes */ + 0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */ + 0x0, /* gcFEATURE_VALUE_ClusterAliveMask */ + 0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */ + 0x0, /* gcFEATURE_VALUE_G2D_TILING_MINOR */ + 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */ + 0x0, /* gcFEATURE_VALUE_PS_INPUT_COMPONENTS */ + 0x40, /* gcFEATURE_VALUE_NNMadPerCore */ + 0x6, /* gcFEATURE_VALUE_NNCoreCount */ + 0x6, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */ + 0x6, /* gcFEATURE_VALUE_NNCoreCount_INT8 */ + 0x6, /* gcFEATURE_VALUE_NNCoreCount_INT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_FLOAT16 */ + 0x0, /* gcFEATURE_VALUE_NNCoreCount_BFLOAT */ + 0x9, /* gcFEATURE_VALUE_NNInputBufferDepth */ + 0x20, /* gcFEATURE_VALUE_NNAccumBufferDepth */ + 0x400, /* gcFEATURE_VALUE_TPEngine_PwlLUTCount */ + 0x10, /* gcFEATURE_VALUE_TPEngine_PwlLUTSize */ + 0x40000, /* gcFEATURE_VALUE_VIP_SRAM_SIZE */ + 0x0, /* gcFEATURE_VALUE_VIP_SRAM_SIZE_ARRAY */ + 0x3, /* gcFEATURE_VALUE_TPEngine_CoreCount */ + 0x0, /* gcFEATURE_VALUE_AXI_SRAM_SIZE */ + 0x5, /* gcFEATURE_VALUE_NN_INIMAGE_OFFSET_BITS */ + 0x200, /* gcFEATURE_VALUE_TP_REORDER_INIMAGE_SIZE */ + 0x0, /* gcFEATURE_VALUE_TPLite_CoreCount */ + 0x8, /* gcFEATURE_VALUE_NN_PREPROCESSOR_MAX_SEGMENT_PER_CYCLE */ + 0x1, /* gcFEATURE_VALUE_NNFP16_XYDP_X */ + 0x1, /* gcFEATURE_VALUE_NNFP16_XYDP_Y */ + 0x1, /* gcFEATURE_VALUE_NNFP16_ZDP */ + 0x10, /* gcFEATURE_VALUE_NN_LANES_PER_OUT_CYCLE */ + 0x0, /* gcFEATURE_VALUE_LUT_ACT_LANES */ + 0x40, /* gcFEATURE_VALUE_MAX_OT_NUMBER */ + 0x40, /* gcFEATURE_VALUE_PHYSICAL_VIP_SRAM_WIDTH_IN_BYTE */ + 0x20, /* gcFEATURE_VALUE_EQUIVALENT_VIP_SRAM_WIDTH_INBYTE */ + 0x8, /* gcFEATURE_VALUE_TP_ZRL_BITS */ + 0x8, /* gcFEATURE_VALUE_NN_ZRL_BITS */ + 0x80, /* gcFEATURE_VALUE_LATENCY_HIDING_AT_FULL_AXI_BW */ + 0x10, /* gcFEATURE_VALUE_AXI_BUS_WIDTH */ + 0xf, /* gcFEATURE_VALUE_NN_KERNEL_X_SIZE */ + 0xf, /* gcFEATURE_VALUE_NN_KERNEL_Y_SIZE */ + 0xf, /* gcFEATURE_VALUE_NN_FC_KERNEL_Y_SIZE */ + 0xfffff, /* gcFEATURE_VALUE_NN_KERNEL_Z_SIZE */ + 0x1f, /* gcFEATURE_VALUE_NN_X_OFFSET */ + 0x1f, /* gcFEATURE_VALUE_NN_Y_OFFSET */ + 0x100, /* gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE */ + 0x100, /* gcFEATURE_VALUE_MIN_AXI_BURST_SIZE */ + 0x10, /* gcFEATURE_VALUE_OUTIMAGE_X_STRIDE_BITS */ + 0x10, /* gcFEATURE_VALUE_OUTIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_OUTIMAGE_SLICE_BITS */ + 0xd, /* gcFEATURE_VALUE_OUTIMAGE_X_SIZE_BITS */ + 0xd, /* gcFEATURE_VALUE_OUTIMAGE_Y_SIZE_BITS */ + 0xe, /* gcFEATURE_VALUE_OUTIMAGE_Z_SIZE_BITS */ + 0x10, /* gcFEATURE_VALUE_INIMAGE_X_STRIDE_BITS */ + 0x10, /* gcFEATURE_VALUE_IMIMAGE_Y_STRIDE_BITS */ + 0x0, /* gcFEATURE_VALUE_INIMAGE_SLICE_BITS */ + 0xd, /* gcFEATURE_VALUE_INIMAGE_X_SIZE_BITS */ + 0xd, /* gcFEATURE_VALUE_INIMAGE_Y_SIZE_BITS */ + 0x40, /* gcFEATURE_VALUE_MAX_TILE_X_SIZE */ + 0x1, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */ + 0x3, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */ + 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */ + 0x20, /* gcFEATURE_VALUE_NN_SMALL_ACCUM_BITS */ + 0x2, /* gcFEATURE_VALUE_NN_COEF_DECOMPRESS_PERF_X */ + 0x0, /* gcFEATURE_VALUE_SP_VECTOR_DEPTH */ + 0x0, /* gcFEATURE_BIT_REG_FastClear */ + 0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */ + 0x1, /* gcFEATURE_BIT_REG_Pipe3D */ + 0x1, /* gcFEATURE_BIT_REG_DXTTextureCompression */ + 0x0, /* gcFEATURE_BIT_REG_DebugMode */ + 0x1, /* gcFEATURE_BIT_REG_ZCompression */ + 0x0, /* gcFEATURE_BIT_REG_YUV420Filter */ + 0x1, /* gcFEATURE_BIT_REG_MSAA */ + 0x0, /* gcFEATURE_BIT_REG_DC */ + 0x0, /* gcFEATURE_BIT_REG_Pipe2D */ + 0x1, /* gcFEATURE_BIT_REG_ETC1TextureCompression */ + 0x1, /* gcFEATURE_BIT_REG_FastScaler */ + 0x1, /* gcFEATURE_BIT_REG_HighDynamicRange */ + 0x1, /* gcFEATURE_BIT_REG_YUV420Tiler */ + 0x1, /* gcFEATURE_BIT_REG_ModuleCG */ + 0x0, /* gcFEATURE_BIT_REG_MinArea */ + 0x0, /* gcFEATURE_BIT_REG_NoEZ */ + 0x0, /* gcFEATURE_BIT_REG_No422Texture */ + 0x0, /* gcFEATURE_BIT_REG_BufferInterleaving */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite2D */ + 0x0, /* gcFEATURE_BIT_REG_NoScaler */ + 0x1, /* gcFEATURE_BIT_REG_YUY2Averaging */ + 0x0, /* gcFEATURE_BIT_REG_HalfPECache */ + 0x0, /* gcFEATURE_BIT_REG_HalfTXCache */ + 0x0, /* gcFEATURE_BIT_REG_YUY2RenderTarget */ + 0x0, /* gcFEATURE_BIT_REG_Mem32BitSupport */ + 0x0, /* gcFEATURE_BIT_REG_PipeVG */ + 0x0, /* gcFEATURE_BIT_REG_VGTS */ + 0x0, /* gcFEATURE_BIT_REG_FE20 */ + 0x1, /* gcFEATURE_BIT_REG_ByteWrite3D */ + 0x1, /* gcFEATURE_BIT_REG_RsYuvTarget */ + 0x1, /* gcFEATURE_BIT_REG_FE20BitIndex */ + 0x1, /* gcFEATURE_BIT_REG_FlipY */ + 0x1, /* gcFEATURE_BIT_REG_DualReturnBus */ + 0x1, /* gcFEATURE_BIT_REG_EndiannessConfig */ + 0x1, /* gcFEATURE_BIT_REG_Texture8K */ + 0x1, /* gcFEATURE_BIT_REG_CorrectTextureConverter */ + 0x1, /* gcFEATURE_BIT_REG_SpecialMsaaLod */ + 0x1, /* gcFEATURE_BIT_REG_FastClearFlush */ + 0x1, /* gcFEATURE_BIT_REG_2DPE20 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectAutoDisable */ + 0x1, /* gcFEATURE_BIT_REG_Render8K */ + 0x1, /* gcFEATURE_BIT_REG_TileStatus2Bits */ + 0x1, /* gcFEATURE_BIT_REG_SeparateTileStatusWhenInterleaved */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiled32x32 */ + 0x0, /* gcFEATURE_BIT_REG_VG20 */ + 0x0, /* gcFEATURE_BIT_REG_TSExtendedCommands */ + 0x1, /* gcFEATURE_BIT_REG_CompressionFifoFixed */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions0 */ + 0x0, /* gcFEATURE_BIT_REG_VGFilter */ + 0x0, /* gcFEATURE_BIT_REG_VG21 */ + 0x1, /* gcFEATURE_BIT_REG_ShaderGetsW */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions1 */ + 0x1, /* gcFEATURE_BIT_REG_DefaultReg0 */ + 0x1, /* gcFEATURE_BIT_REG_MC20 */ + 0x0, /* gcFEATURE_BIT_REG_ShaderMSAASideband */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes0 */ + 0x0, /* gcFEATURE_BIT_REG_VAA */ + 0x0, /* gcFEATURE_BIT_REG_BypassInMSAA */ + 0x0, /* gcFEATURE_BIT_REG_HierarchicalZ */ + 0x0, /* gcFEATURE_BIT_REG_NewTexture */ + 0x0, /* gcFEATURE_BIT_REG_A8TargetSupport */ + 0x1, /* gcFEATURE_BIT_REG_CorrectStencil */ + 0x1, /* gcFEATURE_BIT_REG_EnhanceVR */ + 0x1, /* gcFEATURE_BIT_REG_RSUVSwizzle */ + 0x1, /* gcFEATURE_BIT_REG_V2Compression */ + 0x0, /* gcFEATURE_BIT_REG_VGDoubleBuffer */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes1 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes2 */ + 0x0, /* gcFEATURE_BIT_REG_TextureStride */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes3 */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisable1 */ + 0x0, /* gcFEATURE_BIT_REG_AutoRestartTS */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes4 */ + 0x0, /* gcFEATURE_BIT_REG_L2Windowing */ + 0x1, /* gcFEATURE_BIT_REG_HalfFloatPipe */ + 0x1, /* gcFEATURE_BIT_REG_PixelDither */ + 0x1, /* gcFEATURE_BIT_REG_TwoStencilReference */ + 0x1, /* gcFEATURE_BIT_REG_ExtendedPixelFormat */ + 0x1, /* gcFEATURE_BIT_REG_CorrectMinMaxDepth */ + 0x1, /* gcFEATURE_BIT_REG_DitherAndFilterPlusAlpha2D */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes5 */ + 0x0, /* gcFEATURE_BIT_REG_New2D */ + 0x1, /* gcFEATURE_BIT_REG_NewFloatingPointArithmetic */ + 0x1, /* gcFEATURE_BIT_REG_TextureHorizontalAlignmentSelect */ + 0x1, /* gcFEATURE_BIT_REG_NonPowerOfTwo */ + 0x1, /* gcFEATURE_BIT_REG_LinearTextureSupport */ + 0x1, /* gcFEATURE_BIT_REG_Halti0 */ + 0x0, /* gcFEATURE_BIT_REG_CorrectOverflowVG */ + 0x1, /* gcFEATURE_BIT_REG_NegativeLogFix */ + 0x1, /* gcFEATURE_BIT_REG_ResolveOffset */ + 0x1, /* gcFEATURE_BIT_REG_OkToGateAxiClock */ + 0x1, /* gcFEATURE_BIT_REG_MMU */ + 0x1, /* gcFEATURE_BIT_REG_WideLine */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes6 */ + 0x1, /* gcFEATURE_BIT_REG_FcFlushStall */ + 0x1, /* gcFEATURE_BIT_REG_LineLoop */ + 0x1, /* gcFEATURE_BIT_REG_LogicOp */ + 0x1, /* gcFEATURE_BIT_REG_SeamlessCubeMap */ + 0x1, /* gcFEATURE_BIT_REG_SuperTiledTexture */ + 0x1, /* gcFEATURE_BIT_REG_LinearPE */ + 0x1, /* gcFEATURE_BIT_REG_RectPrimitive */ + 0x0, /* gcFEATURE_BIT_REG_Composition */ + 0x1, /* gcFEATURE_BIT_REG_CorrectAutoDisableCountWidth */ + 0x1, /* gcFEATURE_BIT_REG_PESwizzle */ + 0x1, /* gcFEATURE_BIT_REG_EndEvent */ + 0x1, /* gcFEATURE_BIT_REG_S1S8 */ + 0x1, /* gcFEATURE_BIT_REG_Halti1 */ + 0x0, /* gcFEATURE_BIT_REG_RGB888 */ + 0x1, /* gcFEATURE_BIT_REG_TX_YUVAssembler */ + 0x1, /* gcFEATURE_BIT_REG_DynamicFrequencyScaling */ + 0x0, /* gcFEATURE_BIT_REG_TXFilter */ + 0x1, /* gcFEATURE_BIT_REG_FullDirectFB */ + 0x0, /* gcFEATURE_BIT_REG_OnePass2DFilter */ + 0x1, /* gcFEATURE_BIT_REG_ThreadWalkerInPS */ + 0x1, /* gcFEATURE_BIT_REG_TileFiller */ + 0x1, /* gcFEATURE_BIT_REG_YUVStandard */ + 0x0, /* gcFEATURE_BIT_REG_MultiSourceBlt */ + 0x0, /* gcFEATURE_BIT_REG_YUVConversion */ + 0x1, /* gcFEATURE_BIT_REG_FlushFixed2D */ + 0x1, /* gcFEATURE_BIT_REG_Interleaver */ + 0x1, /* gcFEATURE_BIT_REG_MixedStreams */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheFor2D420 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes7 */ + 0x0, /* gcFEATURE_BIT_REG_NoIndexPattern */ + 0x1, /* gcFEATURE_BIT_REG_TextureTileStatus */ + 0x1, /* gcFEATURE_BIT_REG_DecompressZ16 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes8 */ + 0x1, /* gcFEATURE_BIT_REG_DERotationStallFix */ + 0x0, /* gcFEATURE_BIT_REG_OclOnly */ + 0x1, /* gcFEATURE_BIT_REG_NewFeatures0 */ + 0x1, /* gcFEATURE_BIT_REG_InstructionCache */ + 0x0, /* gcFEATURE_BIT_REG_GeometryShader */ + 0x1, /* gcFEATURE_BIT_REG_TexCompressionSupertiled */ + 0x1, /* gcFEATURE_BIT_REG_Generics */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes9 */ + 0x0, /* gcFEATURE_BIT_REG_FastMSAA */ + 0x0, /* gcFEATURE_BIT_REG_WClip */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes10 */ + 0x1, /* gcFEATURE_BIT_REG_UnifiedSamplers */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes11 */ + 0x1, /* gcFEATURE_BIT_REG_PerformanceCounters */ + 0x1, /* gcFEATURE_BIT_REG_ExtraShaderInstructions2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes12 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes13 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_ACE */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_DEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes14 */ + 0x0, /* gcFEATURE_BIT_REG_PowerOptimizations0 */ + 0x1, /* gcFEATURE_BIT_REG_NewHZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes15 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements1 */ + 0x0, /* gcFEATURE_BIT_REG_DENoGamma */ + 0x0, /* gcFEATURE_BIT_REG_PAEnhancements2 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_PEEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_HIEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_FEEnhancements2 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes16 */ + 0x0, /* gcFEATURE_BIT_REG_DEEnhancements5 */ + 0x1, /* gcFEATURE_BIT_REG_TXEnhancements4 */ + 0x0, /* gcFEATURE_BIT_REG_PEEnhancements4 */ + 0x1, /* gcFEATURE_BIT_REG_MCEnhancements1 */ + 0x1, /* gcFEATURE_BIT_REG_Halti2 */ + 0x0, /* gcFEATURE_BIT_REG_DEMirrorRotate */ + 0x1, /* gcFEATURE_BIT_REG_SmallMSAA */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes17 */ + 0x0, /* gcFEATURE_BIT_REG_Rasterizer2 */ + 0x0, /* gcFEATURE_BIT_REG_DualPipeOPF */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2 */ + 0x0, /* gcFEATURE_BIT_REG_CSCV2 */ + 0x1, /* gcFEATURE_BIT_REG_PAEnhancements3 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes18 */ + 0x0, /* gcFEATURE_BIT_REG_Compression2D */ + 0x0, /* gcFEATURE_BIT_REG_Probe */ + 0x1, /* gcFEATURE_BIT_REG_MediumPrecision */ + 0x0, /* gcFEATURE_BIT_REG_DESupertile */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes19 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements6 */ + 0x1, /* gcFEATURE_BIT_REG_SHEnhancements7 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes20 */ + 0x0, /* gcFEATURE_BIT_REG_DEAddress40 */ + 0x0, /* gcFEATURE_BIT_REG_MiniMMUFix */ + 0x1, /* gcFEATURE_BIT_REG_EEZ */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes21 */ + 0x0, /* gcFEATURE_BIT_REG_ExtraVgCaps */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV15 */ + 0x1, /* gcFEATURE_BIT_REG_BugFixes22 */ + 0x1, /* gcFEATURE_BIT_REG_Halti3 */ + 0x0, /* gcFEATURE_BIT_REG_TessellationShaders */ + 0x0, /* gcFEATURE_BIT_REG_OPF9Tap */ + 0x0, /* gcFEATURE_BIT_REG_MultiSrcV2StrQuad */ + 0x0, /* gcFEATURE_BIT_REG_SeperateSRCAndDstCache */ + 0x1, /* gcFEATURE_BIT_REG_Halti4 */ + 0x1, /* gcFEATURE_BIT_REG_RAWriteDepth */ + 0x0, /* gcFEATURE_BIT_REG_AndroidOnly */ + 0x1, /* gcFEATURE_BIT_REG_HasChipProductReg */ + 0x0, /* gcFEATURE_BIT_REG_TXSupportDEC */ + 0x1, /* gcFEATURE_BIT_REG_S8MSAACompression */ + 0x1, /* gcFEATURE_BIT_REG_BugFixesIn544 */ + 0x0, /* gcFEATURE_BIT_REG_L2CacheRemove */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowRndVtxCnt */ + 0x0, /* gcFEATURE_BIT_REG_CubeMapFL28 */ + 0x1, /* gcFEATURE_BIT_REG_TX6bitFrac */ + 0x1, /* gcFEATURE_BIT_REG_FEAllowStallPrefetchEng */ + 0x0, /* gcFEATURE_BIT_REG_ThirdPartyCompression */ + 0x1, /* gcFEATURE_BIT_REG_RSS8 */ + 0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */ + 0x1, /* gcFEATURE_BIT_REG_Halti5 */ + 0x1, /* gcFEATURE_BIT_REG_Evis */ + 0x0, /* gcFEATURE_BIT_REG_BltEngine */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes23 */ + 0x0, /* gcFEATURE_BIT_REG_BugFixes24 */ + 0x0, /* gcFEATURE_BIT_REG_DEC */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12 */ + 0x0, /* gcFEATURE_BIT_REG_VSTileNV12_10BIT */ + 0x0, /* gcFEATURE_BIT_REG_DisableVIP */ + 0x0, /* gcFEATURE_BIT_RenderTarget8 */ + 0x0, /* gcFEATURE_BIT_TxLodFlowCorrection */ + 0x0, /* gcFEATURE_BIT_FaceLod */ + 0x0, /* gcFEATURE_BIT_MultiCoreSemaphoreStallV2 */ + 0x1, /* gcFEATURE_BIT_VMSAA */ + 0x0, /* gcFEATURE_BIT_ChipEnableLink */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_1_5_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_MULTI_SRC_BLT_BILINEAR_FILTER */ + 0x1, /* gcFEATURE_BIT_RA_HZEZ_CLOCK_CONTROL */ + 0x1, /* gcFEATURE_BIT_CACHE128B256BPERLINE */ + 0x1, /* gcFEATURE_BIT_V4Compression */ + 0x0, /* gcFEATURE_BIT_DE2D_MAJOR_SUPER_TILE */ + 0x0, /* gcFEATURE_BIT_PE2D_MAJOR_SUPER_TILE */ + 0x1, /* gcFEATURE_BIT_PE_32BPC_COLORMASK_FIX */ + 0x1, /* gcFEATURE_BIT_ALPHA_BLENDING_OPT */ + 0x1, /* gcFEATURE_BIT_NEW_GPIPE */ + 0x0, /* gcFEATURE_BIT_PIPELINE_32_ATTRIBUTES */ + 0x0, /* gcFEATURE_BIT_MSAA_SHADING */ + 0x0, /* gcFEATURE_BIT_NO_ANISTRO_FILTER */ + 0x1, /* gcFEATURE_BIT_NO_ASTC */ + 0x0, /* gcFEATURE_BIT_NO_DXT */ + 0x0, /* gcFEATURE_BIT_HWTFB */ + 0x1, /* gcFEATURE_BIT_RA_DEPTH_WRITE_MSAA1X_FIX */ + 0x1, /* gcFEATURE_BIT_EZHZ_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_FIX */ + 0x1, /* gcFEATURE_BIT_SH_HALFDEPENDENCY_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MCFILL_FIX */ + 0x1, /* gcFEATURE_BIT_TPG_TCPERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_MDFIFO_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_SH_TEXLD_BARRIER_IN_CS_FIX */ + 0x1, /* gcFEATURE_BIT_RS_NEW_BASEADDR */ + 0x1, /* gcFEATURE_BIT_PE_8bpp_DUALPIPE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_ADVANCED_INSTR */ + 0x1, /* gcFEATURE_BIT_SH_FLAT_INTERPOLATION_DUAL16_FIX */ + 0x1, /* gcFEATURE_BIT_USC_CONTINUOUS_FLUS_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_V4 */ + 0x0, /* gcFEATURE_BIT_SH_SUPPORT_ALPHA_KILL */ + 0x1, /* gcFEATURE_BIT_PE_NO_ALPHA_TEST */ + 0x0, /* gcFEATURE_BIT_TX_LOD_NEAREST_SELECT */ + 0x1, /* gcFEATURE_BIT_SH_FIX_LDEXP */ + 0x1, /* gcFEATURE_BIT_SUPPORT_MOVAI */ + 0x1, /* gcFEATURE_BIT_SH_SNAP2PAGE_MAXPAGES_FIX */ + 0x1, /* gcFEATURE_BIT_PE_RGBA16I_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_8bpp_256TILE_FC_FIX */ + 0x1, /* gcFEATURE_BIT_PE_64bit_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_FULL_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_TX_YUV_ASSEMBLER_10BIT */ + 0x1, /* gcFEATURE_BIT_FE_32bit_INDEX_FIX */ + 0x1, /* gcFEATURE_BIT_BLT_64bpp_MASKED_CLEAR_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY */ + 0x1, /* gcFEATURE_BIT_ROBUSTNESS */ + 0x1, /* gcFEATURE_BIT_USC_ATOMIC_FIX */ + 0x1, /* gcFEATURE_BIT_SH_PSO_MSAA1x_FIX */ + 0x1, /* gcFEATURE_BIT_USC_VX_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_USC_GOS_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_TX_8bit_UVFrac */ + 0x1, /* gcFEATURE_BIT_TX_DESC_CACHE_CLOCKGATE_FIX */ + 0x1, /* gcFEATURE_BIT_RSBLT_MSAA_DECOMPRESSION */ + 0x0, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE */ + 0x1, /* gcFEATURE_BIT_DRAWID */ + 0x1, /* gcFEATURE_BIT_PSIO_SAMPLEMASK_IN_R0ZW_FIX */ + 0x1, /* gcFEATURE_BIT_TX_INTEGER_COORDINATE_V2 */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG */ + 0x0, /* gcFEATURE_BIT_SNAPPAGE_CMD */ + 0x1, /* gcFEATURE_BIT_SH_NO_INDEX_CONST_ON_A0 */ + 0x1, /* gcFEATURE_BIT_SH_NO_ONECONST_LIMIT */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_ON_TEMP */ + 0x1, /* gcFEATURE_BIT_COMPUTE_ONLY */ + 0x1, /* gcFEATURE_BIT_SH_IMG_LDST_CLAMP */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_ALLOC_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_ICACHE_PREFETCH */ + 0x0, /* gcFEATURE_BIT_PE2D_SEPARATE_CACHE */ + 0x1, /* gcFEATURE_BIT_PE_MSAA_OQ_FIX */ + 0x1, /* gcFEATURE_BIT_PSIO_MSAA_CL_FIX */ + 0x1, /* gcFEATURE_BIT_USC_DEFER_FILL_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_NEED_DUMMYDRAW */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_OUTPUT */ + 0x0, /* gcFEATURE_BIT_PE2D_LINEAR_YUV420_10BIT */ + 0x0, /* gcFEATURE_BIT_MULTI_CLUSTER */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK */ + 0x0, /* gcFEATURE_BIT_SH_DUAL16_SAMPLEMASK_ZW */ + 0x0, /* gcFEATURE_BIT_TPG_TRIVIAL_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TX_ASTC_MULTISLICE_FIX */ + 0x0, /* gcFEATURE_BIT_FE_ROBUST_FIX */ + 0x0, /* gcFEATURE_BIT_SH_GPIPE_ACCESS_FULLTEMPS */ + 0x0, /* gcFEATURE_BIT_PSIO_INTERLOCK */ + 0x1, /* gcFEATURE_BIT_PA_WIDELINE_FIX */ + 0x0, /* gcFEATURE_BIT_WIDELINE_HELPER_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FLUSH_L1CACHE */ + 0x1, /* gcFEATURE_BIT_PE_DITHER_FIX2 */ + 0x0, /* gcFEATURE_BIT_SH_TEXLD_U_FIX */ + 0x0, /* gcFEATURE_BIT_MC_FCCACHE_BYTEMASK */ + 0x0, /* gcFEATURE_BIT_SH_MULTI_WG_PACK_FIX */ + 0x0, /* gcFEATURE_BIT_PE_ADVANCE_BLEND_PART0 */ + 0x0, /* gcFEATURE_BIT_FE_PATCHLIST_FETCH_FIX */ + 0x1, /* gcFEATURE_BIT_RA_CG_FIX */ + 0x0, /* gcFEATURE_BIT_DEC400 */ + 0x0, /* gcFEATURE_BIT_LS_SUPPORT_PERCOMP_DEPENDENCY */ + 0x0, /* gcFEATURE_BIT_MULTI_CORE_BLOCK_SET_CONFIG2 */ + 0x0, /* gcFEATURE_BIT_PE_VMSAA_COVERAGE_CACHE_FIX */ + 0x1, /* gcFEATURE_BIT_SECURITY_AHB */ + 0x0, /* gcFEATURE_BIT_MULTICORE_SEMAPHORESTALL_V3 */ + 0x0, /* gcFEATURE_BIT_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_SH_CMPLX */ + 0x0, /* gcFEATURE_BIT_SH_IDIV0_SWZL_EHS */ + 0x0, /* gcFEATURE_BIT_TX_LERP_LESS_BIT */ + 0x0, /* gcFEATURE_BIT_SH_GM_ENDIAN */ + 0x0, /* gcFEATURE_BIT_SH_GM_USC_UNALLOC */ + 0x0, /* gcFEATURE_BIT_SH_END_OF_BB */ + 0x0, /* gcFEATURE_BIT_TX_BORDER_CLAMP_FIX */ + 0x0, /* gcFEATURE_BIT_SH_IMG_LD_LASTPIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_ASYNC_BLT */ + 0x0, /* gcFEATURE_BIT_ASYNC_FE_FENCE_FIX */ + 0x1, /* gcFEATURE_BIT_PSCS_THROTTLE */ + 0x0, /* gcFEATURE_BIT_SEPARATE_LS */ + 0x0, /* gcFEATURE_BIT_WIDELINE_TRIANGLE_EMU */ + 0x0, /* gcFEATURE_BIT_FENCE_32BIT */ + 0x0, /* gcFEATURE_BIT_FENCE_64BIT */ + 0x0, /* gcFEATURE_BIT_PE_DEPTH_ONLY_OQFIX */ + 0x0, /* gcFEATURE_BIT_TX_SEAMLESS_CUBE */ + 0x0, /* gcFEATURE_BIT_TX_SNORM_SUPPORT */ + 0x0, /* gcFEATURE_BIT_SH_SCATTER_GATHER */ + 0x0, /* gcFEATURE_BIT_HWMANAGED_LS */ + 0x0, /* gcFEATURE_BIT_SH_IMAGE_ENABLE_FIX */ + 0x1, /* gcFEATURE_BIT_MSAA_FRAGMENT_OPERATION */ + 0x0, /* gcFEATURE_BIT_PE_TILE_CACHE_FLUSH_FIX */ + 0x0, /* gcFEATURE_BIT_BLT_YUV_OUTPUT */ + 0x1, /* gcFEATURE_BIT_SH_IO_CG_FIX */ + 0x0, /* gcFEATURE_BIT_PE_SWIZZLE */ + 0x0, /* gcFEATURE_BIT_SH_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ATOMIC_FIX2 */ + 0x0, /* gcFEATURE_BIT_PE_A8B8G8R8 */ + 0x0, /* gcFEATURE_BIT_MULTIVIEW_RENDER */ + 0x0, /* gcFEATURE_BIT_FE_DRAW_DIRECT */ + 0x0, /* gcFEATURE_BIT_TX_VKBORDER_MODE */ + 0x0, /* gcFEATURE_BIT_TX_UNNORMALIZED_COORD */ + 0x0, /* gcFEATURE_BIT_PA_LINECLIP_FIX */ + 0x0, /* gcFEATURE_BIT_TX_8bit_UVFrac_ROUNDING_FIX */ + 0x0, /* gcFEATURE_BIT_MP_ARCH */ + 0x0, /* gcFEATURE_BIT_TX_NO_FIXED_FILTER */ + 0x0, /* gcFEATURE_BIT_SHARE_Z */ + 0x0, /* gcFEATURE_BIT_DE_2D_FAST_CLEAR */ + 0x0, /* gcFEATURE_BIT_DE_TILESTATUS_ROTATION_FIX */ + 0x0, /* gcFEATURE_BIT_TX_CLEAR_PENDING_FIX */ + 0x0, /* gcFEATURE_BIT_HI1_L2_CACHE */ + 0x0, /* gcFEATURE_BIT_USC_EVICT_CTRL_FIFO_FLOP_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_FORMAT_10BIT_CROSS_4K */ + 0x0, /* gcFEATURE_BIT_FORMAT_P010LSB_I010 */ + 0x0, /* gcFEATURE_BIT_ENDIAN_CONTROL */ + 0x0, /* gcFEATURE_BIT_AXIFE */ + 0x0, /* gcFEATURE_BIT_SH_VX2_FLOATING_MAD_FIX */ + 0x0, /* gcFEATURE_BIT_TS_FC_VULKAN_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MSAA_FLOAT_64BIT */ + 0x0, /* gcFEATURE_BIT_INDIRECT_COMPUTE_ZERODIM_FIX */ + 0x0, /* gcFEATURE_BIT_Q_CHANNEL_SUPPORT */ + 0x0, /* gcFEATURE_BIT_MMU_PAGE_DESCRIPTOR */ + 0x0, /* gcFEATURE_BIT_YUV_LINEAR_TO_TILE_ROTATE */ + 0x0, /* gcFEATURE_BIT_VEC2_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC4_IMULIMAD32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_VEC2_IDIVIMOD16_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DST_TEX_I2F_F2I_INST_DEPRECATE */ + 0x0, /* gcFEATURE_BIT_ALU_FP16_INSTRUCTIONS */ + 0x0, /* gcFEATURE_BIT_DUAL16_14BIT_PC_SUPPORT */ + 0x0, /* gcFEATURE_BIT_LDST_CONV_4ROUNDING_MODES */ + 0x0, /* gcFEATURE_BIT_FULL_PACK_MODE_SUPPORT */ + 0x0, /* gcFEATURE_BIT_DEPTH_FLOAT32_SUPPORT */ + 0x0, /* gcFEATURE_BIT_GPU_INSPECTOR_COUNTERS */ + 0x0, /* gcFEATURE_BIT_FP32_TO_FP16_CONV_FIX */ + 0x0, /* gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */ + 0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */ + 0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */ + 0x0, /* gcFEATURE_BIT_PE_64BPP_LINEAR_FORMAT */ + 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_HIGHP_VEC2 */ + 0x0, /* gcFEATURE_BIT_MMU_PD_42_BIT_ADDRESS */ + 0x0, /* gcFEATURE_BIT_BLT_ROBUSTNESS_FIX */ + 0x0, /* gcFEATURE_BIT_TFB_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_SH_SUPERSCALAR_ARCH */ + 0x0, /* gcFEATURE_BIT_PA_ZEROAREA_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_ATTR_IN_GLOBAL_MEMORY */ + 0x0, /* gcFEATURE_BIT_SIMPLIFIED_CHECKERBOARD */ + 0x0, /* gcFEATURE_BIT_ADDR_REMAP */ + 0x0, /* gcFEATURE_BIT_ADDR_40BIT_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR */ + 0x0, /* gcFEATURE_BIT_G2D_RGB_PLANAR_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_FC_IN_DEC400EX */ + 0x0, /* gcFEATURE_BIT_G2D_NO_YUV420_SOURCE */ + 0x0, /* gcFEATURE_BIT_G2D_YUV420_101010 */ + 0x0, /* gcFEATURE_BIT_G2D_MultiSrcBlt_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Stretch_MultiSrc_Pipe */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization */ + 0x0, /* gcFEATURE_BIT_G2D_Normalization_Quantization */ + 0x0, /* gcFEATURE_BIT_G2D_FRAME_DONE_INTR */ + 0x0, /* gcFEATURE_BIT_G2D_MASK_AND_COLORKEY */ + 0x0, /* gcFEATURE_BIT_G2D_DEC400 */ + 0x0, /* gcFEATURE_BIT_G2D_3rd_PARTY_COMPRESSION_1_1 */ + 0x0, /* gcFEATURE_BIT_G2D_Histogram */ + 0x0, /* gcFEATURE_BIT_G2D_Brightness_Saturation */ + 0x0, /* gcFEATURE_BIT_VG_TS_CULLING */ + 0x0, /* gcFEATURE_BIT_VG_FP25 */ + 0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */ + 0x0, /* gcFEATURE_BIT_VG_DOUBLE_IMAGE */ + 0x0, /* gcFEATURE_BIT_VG_RECTANGLE_STRIPE_MODE */ + 0x0, /* gcFEATURE_BIT_VG_MMU */ + 0x0, /* gcFEATURE_BIT_VG_IM_FILTER */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_IM_YUV_PLANAR */ + 0x0, /* gcFEATURE_BIT_VG_PE_YUV_PACKET */ + 0x0, /* gcFEATURE_BIT_VG_COLOR_PRECISION_8_BIT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLVE_ENGINE */ + 0x0, /* gcFEATURE_BIT_VG_PE_COLOR_KEY */ + 0x0, /* gcFEATURE_BIT_VG_IM_INDEX_FORMAT */ + 0x0, /* gcFEATURE_BIT_VG_RESOLUTION_8K */ + 0x0, /* gcFEATURE_BIT_VG_IMAGE_16K */ + 0x0, /* gcFEATURE_BIT_VG_FORMAT_ARGB2222 */ + 0x1, /* gcFEATURE_BIT_VIP_HW_FINAL_RELEASE */ + 0x1, /* gcFEATURE_BIT_NN_SINGLEPORT_ACCUMBUFFER */ + 0x1, /* gcFEATURE_BIT_NN_STRIDE_SUPPORT */ + 0x1, /* gcFEATURE_BIT_SWTILING_PHASE1 */ + 0x1, /* gcFEATURE_BIT_SWTILING_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TP_SIMPLE_INT16 */ + 0x1, /* gcFEATURE_BIT_TP_REAL_INT16 */ + 0x1, /* gcFEATURE_BIT_TP_ROI_POOLING */ + 0x1, /* gcFEATURE_BIT_TP_MAX_POOLING_STRIDE1 */ + 0x1, /* gcFEATURE_BIT_TP_LRN */ + 0x1, /* gcFEATURE_BIT_TP_REORDER */ + 0x1, /* gcFEATURE_BIT_TF_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_NN_NONZERO_BORDER */ + 0x1, /* gcFEATURE_BIT_NN_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_AI_GPU */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_ABSDIFF */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BITREPLACE */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_BOXFILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_CORDIAC */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_DP32 */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_FILTER */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_IADD */ + 0x0, /* gcFEATURE_BIT_EVIS_NO_SELECTADD */ + 0x0, /* gcFEATURE_BIT_EVIS_LERP_7OUTPUT */ + 0x0, /* gcFEATURE_BIT_EVIS_ACCSQ_8OUTPUT */ + 0x1, /* gcFEATURE_BIT_EVIS_VX2 */ + 0x1, /* gcFEATURE_BIT_TP_ENGINE */ + 0x1, /* gcFEATURE_BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_TENSOR_ADD_MUL */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_INT16XINT8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_SOFTMAX */ + 0x0, /* gcFEATURE_BIT_NN_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_CONV_INT16X8BIT_VIP_V7 */ + 0x0, /* gcFEATURE_BIT_NN_REMOVE_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_40BIT_BIAS */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_USC */ + 0x0, /* gcFEATURE_BIT_NN_ZDP6 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP9 */ + 0x1, /* gcFEATURE_BIT_NN_FIRST_PIXEL_POOLING */ + 0x1, /* gcFEATURE_BIT_NN_ZDP3 */ + 0x0, /* gcFEATURE_BIT_NN_XYDP6 */ + 0x1, /* gcFEATURE_BIT_SWTILING_PHASE3 */ + 0x0, /* gcFEATURE_BIT_MCFE */ + 0x0, /* gcFEATURE_BIT_USC_STAY_LRU */ + 0x1, /* gcFEATURE_BIT_COEF_COMPRESSION_ENHANCEMENT */ + 0x1, /* gcFEATURE_BIT_TP_COEF_COMPRESSION_ENHANCEMENT */ + 0x1, /* gcFEATURE_BIT_NN_COEF_DECOMPRESS_PERF2X */ + 0x1, /* gcFEATURE_BIT_TP_SMALLBATCH_PHASE1 */ + 0x1, /* gcFEATURE_BIT_OCB_COUNTER */ + 0x0, /* gcFEATURE_BIT_SCALER */ + 0x0, /* gcFEATURE_BIT_SCALER_4K */ + 0x0, /* gcFEATURE_BIT_INPUT_4BIT */ + 0x1, /* gcFEATURE_BIT_NN_NO_Z_LOCATION_OFFSET */ + 0x1, /* gcFEATURE_BIT_OCB_REMAP_PHYSICAL_ADDRESS */ + 0x1, /* gcFEATURE_BIT_NN_SLOW_OUTPUT */ + 0x1, /* gcFEATURE_BIT_NO_NARROW_POST_PROCESS_PIPE */ + 0x0, /* gcFEATURE_BIT_TP_NN_PROBE */ + 0x1, /* gcFEATURE_BIT_NN_DEPTHWISE_SUPPORT */ + 0x1, /* gcFEATURE_BIT_NN_XYDP0 */ + 0x1, /* gcFEATURE_BIT_NN_WRITE_WITHOUT_USC */ + 0x1, /* gcFEATURE_BIT_NN_HW_LIMITATION_NATIVE_KER_1x2_2x1 */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH_PHASE1 */ + 0x0, /* gcFEATURE_BIT_NN_SLICE_PADDING_TO_64BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_DW_1x1_CONV_MERGE */ + 0x0, /* gcFEATURE_BIT_TP_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_TP_23BITS_POST_MULTIPLIER */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_ZDP_TRANSPOSE_CH9_ONLY */ + 0x0, /* gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_LEAKY_RELU */ + 0x0, /* gcFEATURE_BIT_NN_PRELU */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT */ + 0x0, /* gcFEATURE_BIT_NN_PER_CHANNEL_QUANT_ASYM */ + 0x0, /* gcFEATURE_BIT_NN_ASYMMETRIC_INT8 */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT_POST_MULT */ + 0x0, /* gcFEATURE_BIT_PRELU_LEAKLY_RELU_CLAMP */ + 0x0, /* gcFEATURE_BIT_TPLITE_BFLOAT16 */ + 0x0, /* gcFEATURE_BIT_PREPROCESS_IMG_BUF_640BYTE_LIMIT */ + 0x1, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_BF16 */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_FP32 */ + 0x0, /* gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN */ + 0x0, /* gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE */ + 0x0, /* gcFEATURE_BIT_NN_COMPRESSION_BYPASSS */ + 0x0, /* gcFEATURE_BIT_TP_3_USC */ + 0x0, /* gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE */ + 0x0, /* gcFEATURE_BIT_NN_NATIVE_STRIDE_TWO */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD */ + 0x0, /* gcFEATURE_BIT_NN_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_TP_FLOAT32_IO */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_BATCH_PHASE2 */ + 0x0, /* gcFEATURE_BIT_TILE_ACCESS_CAPABILITY */ + 0x0, /* gcFEATURE_BIT_FAST_DP3_PREPROCESSOR */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_SUPPORT_16BIT_FORMAT */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_ALU */ + 0x0, /* gcFEATURE_BIT_NN_ENHANCED_MAX_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */ + 0x0, /* gcFEATURE_BIT_NN_CMD_SUPPORT_SLICE */ + 0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_RELU */ + 0x0, /* gcFEATURE_BIT_TPLITE_SUPPORT_TP_DATA_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV_1D */ + 0x0, /* gcFEATURE_BIT_USE_VIPSRAM_FOR_KERNEL_STREAMING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_DUMMY_TILE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_KERNEL_1BYTE_ALIGN */ + 0x0, /* gcFEATURE_BIT_NN_1x1_NON_POOLING_PACKING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BOTH_CONV_NATIVE_STRIDE2_AND_POOLING */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONV1x1_AND_NATIVE_CONV_STRIDE2 */ + 0x0, /* gcFEATURE_BIT_TP_REMOVE_FC */ + 0x0, /* gcFEATURE_BIT_VIP_REMOVE_MMU */ + 0x0, /* gcFEATURE_BIT_NN_RD_IMG_NEED_EXTRA_SPACE */ + 0x0, /* gcFEATURE_BIT_VIP_INDIV_CLK_NN */ + 0x0, /* gcFEATURE_BIT_VIP_EXPORT_CLK_DIV2 */ + 0x0, /* gcFEATURE_BIT_NN_2D_AVERAGE_OUTPUT */ + 0x0, /* gcFEATURE_BIT_NN_JOB_CANCELATION */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_INLINE_NWHC_AND_MATRIX_TRANSPOSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_BATCH */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_DEC */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_MULTI_AXI_ID */ + 0x0, /* gcFEATURE_BIT_NN_POST_OUT_SUPPORT_INT32 */ + 0x0, /* gcFEATURE_BIT_NN_DISTRIBUTED_VIPSRAM */ + 0x0, /* gcFEATURE_BIT_NN_FC_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_NN_4BIT_PHASE1 */ + 0x0, /* gcFEATURE_BIT_VIP_DEC400 */ + 0x0, /* gcFEATURE_BIT_NN_POST_MULT_SUPPORT_FP_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_16_8_QUANTIZATION */ + 0x0, /* gcFEATURE_BIT_SPECIAL_8BIT_SIGN_ABS_CONV */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CONFIGURABLE_FASTXDP3 */ + 0x0, /* gcFEATURE_BIT_NN_USE_CORE_SHARING_IMGBUF_AND_SEQ_NO_ZEROSKIPPING */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DECONVNxN_S_LESS_THAN_16 */ + 0x0, /* gcFEATURE_BIT_NN_PICOCORE_DEPTHWISE */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_TENSOR_TRANSFER */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CMD_LOOP */ + 0x0, /* gcFEATURE_BIT_VIP_SUPPORT_X_FRAME_COMPRESSION */ + 0x0, /* gcFEATURE_BIT_NN_SMALL_ACCUM */ + 0x0, /* gcFEATURE_BIT_NN_SINGLE_POSTMULT_FIELDS_IN_BITSTREAM */ + 0x0, /* gcFEATURE_BIT_POST_MULTIPLIER_LOW_POWER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_EFUSE */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_STREAMPROCESSOR */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_GEMM */ + 0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */ + 0x0, /* gcFEATURE_BIT_NN_SUPPORT_CLAMP_BORDER_MODE */ + 0x0, /* gcFEATURE_BIT_NN_ELEMENTWISE_BROADCAST_STRIDE_X_0 */ + 0x0, /* gcFEATURE_BIT_NN_2ND_IMAGE_DATA_TYPE */ + 0x0, /* gcFEATURE_BIT_TENSOR_DMA */ + 0x0, /* gcFEATURE_BIT_NN_SPLIT_X */ + 0x0, /* gcFEATURE_BIT_NN_FP8 */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_ENHANCEMENT */ + 0x0, /* gcFEATURE_BIT_SUPPORT_DYNAMIC_SHAPE */ + 0x0, /* gcFEATURE_BIT_SUPPORT_BATCH_ALIGNMENT */ + 0x0, /* gcFEATURE_BIT_INLINE_MATRIX_TRANSPOSE */ + 0x1, /* gcFEATURE_BIT_NN_PER3DTILE_BUBBLE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CACHELINE_MODE_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CONV1x1_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_TP_REORDER_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CONVOUT_FIFO_DEPTH_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ZXDP3_KERNEL_READ_CONFLICT_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ZDP3_NO_COMPRESS_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ASYNC_COPY_PERF_FIX */ + 0x1, /* gcFEATURE_BIT_HI_REORDER_FIX */ + 0x1, /* gcFEATURE_BIT_INCORRECT_WR_REQ_TO_USC_BETWEEN_REORDER_AND_NORMAL_LAYER_FIX */ + 0x1, /* gcFEATURE_BIT_TP_REORDER_LAYER_SUSPEND_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ASYNC_COPY_MERGE_FIX */ + 0x1, /* gcFEATURE_BIT_USC_INVALIDATE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_REQ_SLOWARBITRATION_FIX */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE_FIX */ + 0x0, /* gcFEATURE_BIT_FULLCACHE_KERNELHEAD_FIX */ + 0x1, /* gcFEATURE_BIT_NN_ZDP_INIMAGE_SIZE_FIX */ + 0x1, /* gcFEATURE_BIT_IDLE_BEFORE_FLUSH_COMPLETE_FIX */ + 0x1, /* gcFEATURE_BIT_NO_FLUSH_USC_FIX */ + 0x1, /* gcFEATURE_BIT_SMALL_BATCH_FLOPS_RESET_FIX */ + 0x0, /* gcFEATURE_BIT_SMALL_BATCH_DISBLE_FIX */ + 0x1, /* gcFEATURE_BIT_OUTPUT_CONVERT_UINT8_INT8_TO_UINT16_INT16_FIX */ + 0x1, /* gcFEATURE_BIT_IMAGE_NOT_PACKED_IN_SRAM_FIX */ + 0x1, /* gcFEATURE_BIT_COEF_DELTA_CORD_OVERFLOW_ZRL_8BIT_FIX */ + 0x0, /* gcFEATURE_BIT_USC_INDIVIDUAL_PORT_WRT_EARLY_EVICT_DATA_CORRUPT_FIX */ + 0x0, /* gcFEATURE_BIT_LOW_EFFICIENCY_OF_ID_WRITE_IMGBUF_FIX */ + 0x1, /* gcFEATURE_BIT_KERNEL_VIP_SRAM_READ_BW_LIMITATION_FIX */ + 0x0, /* gcFEATURE_BIT_USC_BOTTLENECK_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_PER_CORE_LESS_THAN_THIRD_COEF_BUFF_DEPTH_FIX */ + 0x1, /* gcFEATURE_BIT_NN_TILE_NUM_BIGGER_THAN_1024_FIX */ + 0x0, /* gcFEATURE_BIT_KERNEL_SIZE_WASTE_IN_PARTIAL_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_COMMAND_KERNEL_REQUEST_CONFICT_FIX */ + 0x1, /* gcFEATURE_BIT_TP_REORDER_INTILE_X_SIZE_512_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_POP_PIPELINE_PAUSE_FIX */ + 0x1, /* gcFEATURE_BIT_FULLCACHE_KERNEL_INTERLEAVE_FIX */ + 0x0, /* gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX */ + 0x0, /* gcFEATURE_BIT_DEPTHWISE_NEIGHBOR_IMG_DATA_TRANSFER_NOT_EFFICIENT_FIX */ + 0x1, /* gcFEATURE_BIT_DR_JD_DIFF_CONDITION_FOR_CACHELINE_MODE_PRE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX */ + 0x0, /* gcFEATURE_BIT_EVIS2_FLOP_RESET_FIX */ + 0x1, /* gcFEATURE_BIT_OUTIMAGE_X_BITWIDTH_LIMIT_FOR_NN_TRANSPOSE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_ASYNC_CP_RTN_FLOP_RESET_FIX */ + 0x1, /* gcFEATURE_BIT_IMG_ADDR_NOT_WRAP_IF_OVER_OCB_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_NEGATIVE_POST_SHIFT_FIX */ + 0x0, /* gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX */ + 0x0, /* gcFEATURE_BIT_IMG_CAHCE_MODE_MUST_0_IN_IMG_DIRECT_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX */ + 0x1, /* gcFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX */ + 0x0, /* gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX */ + 0x1, /* gcFEATURE_BIT_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_INSTR_COMPLETE_IN_SAME_CYCLE_WITH_WAIT_EVENT_FIX */ + 0x0, /* gcFEATURE_BIT_CORE_IMAGE_TRANSER_NOT_EFFICIENT_BETWEEN_PARTITION_FIX */ + 0x1, /* gcFEATURE_BIT_TP_FC_KERNEL_STREAM_MUST_LESS_THAN_OR_EQUAL_TO_64BYTE_WHEN_1BYTE_ALGINE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_KERNEL_1x1_NO_PAD_FIX */ + 0x0, /* gcFEATURE_BIT_NN_DEPTHWISE_AFTER_16BIT_LAYER_LIMIT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_NOT_FULL_USE_CACHE_LINE_FIX */ + 0x0, /* gcFEATURE_BIT_SH_MOVAI_MOVAR_UNUSED_COMPONENTS_WRITE_DIRTY_DATA_FIX */ + 0x0, /* gcFEATURE_BIT_BURST_COLLECT_CONSUMES_MC_DATA_WIDTH_PER_CYCLE_FIX */ + 0x1, /* gcFEATURE_BIT_TP_ASSYM_INT8_FIX */ + 0x1, /* gcFEATURE_BIT_NN_PAD_SLICE_ERROR_WHEN_TRANSPSE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_2ND_IMG_BASE_ADDR_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TP_SYSTEM_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTILE_YSIZE_128_LIMIT_FIX */ + 0x1, /* gcFEATURE_BIT_SH_CLOCK_GATOR_IDLE_CONDITON_FIX */ + 0x1, /* gcFEATURE_BIT_NN_BURST_COLLECTER_LAST_FLAG_FIX */ + 0x1, /* gcFEATURE_BIT_V83_CONVERTER_FOR_NEG_0_FIX */ + 0x1, /* gcFEATURE_BIT_NN_2ND_IMG_SMALL_3D_TILE_FIX */ + 0x0, /* gcFEATURE_BIT_NN_TILE_YSIZE_127_LIMITATION_FIX */ + 0x1, /* gcFEATURE_BIT_NN_CONV_1D_16BIT_FORMAT_INTILE_SIZE_LIMITATION_FIX */ + 0x1, /* gcFEATURE_BIT_NN_VIPSRAM_DOUBLE_BUFFER_FIX */ + 0x0, /* gcFEATURE_BIT_NN_JD_DIRECT_MODE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */ + 0x1, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */ + 0x1, /* gcFEATURE_BIT_V8_DIRECT_MODE_START_ADDR_BIAS_FOR_NEGATIVE_OFFSET_FIX */ + 0x1, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */ + 0x0, /* gcFEATURE_BIT_FASTXDP3_ONLY_IN_DEPTHWISE_FIX */ + 0x1, /* gcFEATURE_BIT_US_SRAM_READ_INTF_FIFO_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_USC_PAUSE_TP_WR_REQ_MORE_THAN_256_CYCLES_FIX */ + 0x1, /* gcFEATURE_BIT_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_CIRCULAR_BUF_WRAP_ADDRESS_OVERFLOW_FIX */ + 0x1, /* gcFEATURE_BIT_CLOCK_DIV2_FREQ_CHANGE_FIX */ + 0x1, /* gcFEATURE_BIT_SMALL_TILE_TENSOR_ADD_FIX */ + 0x1, /* gcFEATURE_BIT_DECOMPRESSOR_DEPTHWISE_FLOAT_FIX */ + 0x0, /* gcFEATURE_BIT_TP_CIRCULAR_BUF_WRAP_ADDRESS_LESS_FIX */ + 0x1, /* gcFEATURE_BIT_V83_NUMOFPENDINGTILES_FOR_2NDIMAGE_FIX */ + 0x1, /* gcFEATURE_BIT_V83_1ST_CACHE_MODE_VIPSRAM_RD_UPDATE_FIX */ + 0x1, /* gcFEATURE_BIT_V83_1ST_KERNEL_STREAM_BUFFER_UPDATE_FIX */ + 0x0, /* gcFEATURE_BIT_USC_RW_SAME_CACHELINE_UPDATE_FIX */ + 0x1, /* gcFEATURE_BIT_NN_KERNEL_MSS_SBP2_DIRECT_STEAM_STEAM_FIX */ + 0x1, /* gcFEATURE_BIT_CORE_NUM_OF_KID_FOR_MULTI_LAYER_FIX */ + 0x1, /* gcFEATURE_BIT_KERNEL_XSIZE_YSIZE_NUM_FIX */ + 0x1, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_FIX */ + 0x1, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE1_FIX */ + 0x1, /* gcFEATURE_BIT_NN_1ST_AND_2ND_INIMAGE_RAISE_VIPSRAM_RD_UPDATE_AT_SAME_TIME_PHASE2_FIX */ + 0x1, /* gcFEATURE_BIT_TP_SPECIAL_LIST_PARSER_FIX */ + 0x1, /* gcFEATURE_BIT_DECOMPRESSOR_TREATS_TOTAL_CORES_AS_ACTIVE_CORES_FIX */ + 0x0, /* gcFEATURE_BIT_DIRECT_INIMAGE_XSTIDE_LE_13BIT_FIX */ + 0x1, /* gcFEATURE_BIT_SECONDIMG_TILE_SIDEBANFIFO_FIX */ + 0x1, /* gcFEATURE_BIT_TRSPB2_ENDADDR_EQUAL_SRAMEND_FIX */ + 0x1, /* gcFEATURE_BIT_NN_NT_SMALLBATCH_TRNSFER_INIT_FIX */ + 0x1, /* gcFEATURE_BIT_IMGRD_FIRST_ROW_SMALL_SLICE_FIX */ + 0x1, /* gcFEATURE_BIT_KERNEL_WR_RD_LUTLOAD_DIRECTMODE_ADDR_FIX */ + 0x1, /* gcFEATURE_BIT_MULTI_AXI_ID_IMG_KERNEL_SAME_FIX */ + 0x1, /* gcFEATURE_BIT_VZ_GROUP_START_Z_OVERFLOW_FIX */ + 0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */ + 0x0, /* gcFEATURE_BIT_NN_FP16_ALU */ + 0x1, /* gcFEATURE_BIT_NN_INT16_ALU */ + 0x1, /* gcFEATURE_BIT_NN_INT8_SCALE */ + 0x1, /* gcFEATURE_BIT_NN_POWER_ISOLATION */ + 0x0, /* gcFEATURE_BIT_ZRL_7BIT */ + 0x0, /* gcFEATURE_BIT_NN_SMALLBATCH */ + 0x0, /* gcFEATURE_BIT_TP_SMALLBATCH */ + 0x1, /* gcFEATURE_BIT_ZRL_8BIT */ + 0x0, /* gcFEATURE_BIT_DDR_BURST_LEN_256B */ + 0x1, /* gcFEATURE_BIT_XY_OFFSET_LIMITATION_FIX */ + 0x1, /* gcFEATURE_BIT_NN_NONZERO_MIRROR_BORDER */ + 0x0, /* gcFEATURE_BIT_IMAGE_PARTIAL_CACHE */ + }, +}; + +static inline gcsFEATURE_DATABASE* +gcQueryFeatureDB( + gctUINT32 ChipID, + gctUINT32 ChipVersion, + gctUINT32 ProductID, + gctUINT32 EcoID, + gctUINT32 CustomerID + ) +{ + gctINT entryNum = sizeof(gChipInfo) / sizeof(gChipInfo[0]); + gctINT i; + + /* check formal release entries first */ + for (i = 0; i < entryNum; ++i) + { + + if ((gChipInfo[i].chipID == ChipID) + && (gChipInfo[i].chipVersion == ChipVersion) + && (gChipInfo[i].productID == ProductID) + && (gChipInfo[i].ecoID == EcoID) + && (gChipInfo[i].customerID == CustomerID) + && (gChipInfo[i].formalRelease) + ) + { + return &gChipInfo[i]; + } + } + + /* check informal release entries if we dont find in formal entries */ + for (i = 0; i < entryNum; ++i) + { + + if ((gChipInfo[i].chipID == ChipID) + && ((gChipInfo[i].chipVersion & 0xFFF0) == (ChipVersion & 0xFFF0)) + && (gChipInfo[i].productID == ProductID) + && (gChipInfo[i].ecoID == EcoID) + && (gChipInfo[i].customerID == CustomerID) + && (!gChipInfo[i].formalRelease) + ) + { + return &gChipInfo[i]; + } + } + + return gcvNULL; +} +#endif /* _gc_feature_database_h_ */ diff --git a/include_v6.4.3.p4.6/gc_hal.h b/include_v6.4.3.p4.6/gc_hal.h new file mode 100644 index 0000000..5e4883c --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal.h @@ -0,0 +1,2205 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_h_ +#define __gc_hal_h_ + +#include "gc_hal_types.h" +#include "gc_hal_enum.h" +#include "gc_hal_base.h" +#include "gc_hal_profiler.h" +#include "gc_hal_driver.h" +#if gcdENABLE_3D +#include "gc_hal_statistics.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ +******************************* Alignment Macros ******************************* +\******************************************************************************/ + +/* Alignment with a non-power of two value. */ +#define gcmALIGN_NP2(n, align) (((n) + (align) - 1) - (((n) + (align) - 1) % (align))) + +#define gcmALIGN_NP2_SAFE(n, align) \ +(\ + (gcmALIGN_NP2((n) & ~0ULL, (align) & ~0ULL) ^ gcmALIGN_NP2(n, align)) ? \ + (n) : gcmALIGN_NP2(n, align) \ +) + +/* Alignment with a power of two value. */ +#define gcmALIGN(n, align) (((n) + ((align) - 1)) & ~((align) - 1)) + +#define gcmALIGN_SAFE(n, align) \ +(\ + (gcmALIGN((n) & ~0ULL, (align) & ~0ULL) ^ gcmALIGN(n, align)) ? \ + (n) : gcmALIGN(n, align) \ +) + +#define gcmALIGN_BASE(n, align) \ +(\ + ((n) & ~((align) - 1)) \ +) + +/******************************************************************************\ +***************************** Element Count Macro ***************************** +\******************************************************************************/ + +#define gcmSIZEOF(a) \ +(\ + (gctSIZE_T) (sizeof(a)) \ +) + +#define gcmCOUNTOF(a) \ +(\ + sizeof(a) / sizeof(a[0]) \ +) + +/******************************************************************************\ +********************************* Cast Macro ********************************** +\******************************************************************************/ +#define gcmNAME_TO_PTR(na) \ + gckKERNEL_QueryPointerFromName(kernel, gcmALL_TO_UINT32(na)) + +#define gcmPTR_TO_NAME(ptr) \ + gckKERNEL_AllocateNameFromPointer(kernel, ptr) + +#define gcmRELEASE_NAME(na) \ + gckKERNEL_DeleteName(kernel, gcmALL_TO_UINT32(na)) + +#define gcmALL_TO_UINT32(t) \ +(\ + (gctUINT32) (gctUINTPTR_T) (t)\ +) + +#define gcmPTR_TO_UINT64(p) \ +(\ + (gctUINT64) (gctUINTPTR_T) (p)\ +) + +#define gcmUINT64_TO_PTR(u) \ +(\ + (gctPOINTER) (gctUINTPTR_T) (u)\ +) + +#define gcmUINT64_TO_TYPE(u, t) \ +(\ + (t) (gctUINTPTR_T) (u)\ +) + +/******************************************************************************\ +******************************** Useful Macro ********************************* +\******************************************************************************/ + +#define gcvINVALID_ADDRESS ~0U +#define gcvINVALID_VALUE 0xCCCCCCCC + +#define gcvINVALID_PHYSICAL_ADDRESS ~0ULL + +#define gcmGET_PRE_ROTATION(rotate) \ + ((rotate) & (~(gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y))) + +#define gcmGET_POST_ROTATION(rotate) \ + ((rotate) & (gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y)) + +typedef struct _gckHARDWARE * gckHARDWARE; + +#define gcdMAX_GPU_COUNT gcvCORE_COUNT + +#define gcdMAX_SURF_LAYERS 4 + +#define gcdMAX_DRAW_BUFFERS 16 + +#define gcdMAX_3DGPU_COUNT 8 + +#define gcdMAX_MAJOR_CORE_COUNT 8 + +#define gcdMAX_VERTEX_STREAM_COUNT 4 +/******************************************************************************* +** +** gcmVERIFY_OBJECT +** +** Assert if an object is invalid or is not of the specified type. If the +** object is invalid or not of the specified type, gcvSTATUS_INVALID_OBJECT +** will be returned from the current function. In retail mode this macro +** does nothing. +** +** ARGUMENTS: +** +** obj Object to test. +** t Expected type of the object. +*/ +#if gcmIS_DEBUG(gcdDEBUG_TRACE) +#define _gcmVERIFY_OBJECT(prefix, obj, t) \ + if ((obj) == gcvNULL) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "VERIFY_OBJECT failed: NULL"); \ + prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \ + gcmCC_PRINT(t)); \ + prefix##ASSERT((obj) != gcvNULL); \ + prefix##FOOTER_ARG("status=%d", gcvSTATUS_INVALID_OBJECT); \ + return gcvSTATUS_INVALID_OBJECT; \ + } \ + else if (((gcsOBJECT*) (obj))->type != t) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "VERIFY_OBJECT failed: %c%c%c%c", \ + gcmCC_PRINT(((gcsOBJECT*) (obj))->type)); \ + prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \ + gcmCC_PRINT(t)); \ + prefix##ASSERT(((gcsOBJECT*)(obj))->type == t); \ + prefix##FOOTER_ARG("status=%d", gcvSTATUS_INVALID_OBJECT); \ + return gcvSTATUS_INVALID_OBJECT; \ + } + +# define gcmVERIFY_OBJECT(obj, t) _gcmVERIFY_OBJECT(gcm, obj, t) +# define gcmkVERIFY_OBJECT(obj, t) _gcmVERIFY_OBJECT(gcmk, obj, t) +#else +# define gcmVERIFY_OBJECT(obj, t) do {} while (gcvFALSE) +# define gcmkVERIFY_OBJECT(obj, t) do {} while (gcvFALSE) +#endif + +/******************************************************************************/ +/*VERIFY_OBJECT if special return expected*/ +/******************************************************************************/ +#ifndef EGL_API_ANDROID +# define _gcmVERIFY_OBJECT_RETURN(prefix, obj, t, retVal) \ + do \ + { \ + if ((obj) == gcvNULL) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "VERIFY_OBJECT_RETURN failed: NULL"); \ + prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \ + gcmCC_PRINT(t)); \ + prefix##ASSERT((obj) != gcvNULL); \ + prefix##FOOTER_ARG("retVal=%d", retVal); \ + return retVal; \ + } \ + else if (((gcsOBJECT*) (obj))->type != t) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "VERIFY_OBJECT_RETURN failed: %c%c%c%c", \ + gcmCC_PRINT(((gcsOBJECT*) (obj))->type)); \ + prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \ + gcmCC_PRINT(t)); \ + prefix##ASSERT(((gcsOBJECT*)(obj))->type == t); \ + prefix##FOOTER_ARG("retVal=%d", retVal); \ + return retVal; \ + } \ + } \ + while (gcvFALSE) +# define gcmVERIFY_OBJECT_RETURN(obj, t, retVal) \ + _gcmVERIFY_OBJECT_RETURN(gcm, obj, t, retVal) +# define gcmkVERIFY_OBJECT_RETURN(obj, t, retVal) \ + _gcmVERIFY_OBJECT_RETURN(gcmk, obj, t, retVal) +#else +# define gcmVERIFY_OBJECT_RETURN(obj, t) do {} while (gcvFALSE) +# define gcmVERIFY_OBJECT_RETURN(obj, t) do {} while (gcvFALSE) +#endif + +/******************************************************************************\ +********************************** gckOS Object ********************************* +\******************************************************************************/ + +/* Construct a new gckOS object. */ +gceSTATUS +gckOS_Construct( + IN gctPOINTER Context, + OUT gckOS * Os + ); + +/* Destroy an gckOS object. */ +gceSTATUS +gckOS_Destroy( + IN gckOS Os + ); + +/* Query the video memory. */ +gceSTATUS +gckOS_QueryVideoMemory( + IN gckOS Os, + OUT gctPHYS_ADDR * InternalAddress, + OUT gctSIZE_T * InternalSize, + OUT gctPHYS_ADDR * ExternalAddress, + OUT gctSIZE_T * ExternalSize, + OUT gctPHYS_ADDR * ContiguousAddress, + OUT gctSIZE_T * ContiguousSize + ); + +/* Allocate memory from the heap. */ +gceSTATUS +gckOS_Allocate( + IN gckOS Os, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Memory + ); + +/* Free allocated memory. */ +gceSTATUS +gckOS_Free( + IN gckOS Os, + IN gctPOINTER Memory + ); + +/* Wrapper for allocation memory.. */ +gceSTATUS +gckOS_AllocateMemory( + IN gckOS Os, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Memory + ); + +/* Wrapper for freeing memory. */ +gceSTATUS +gckOS_FreeMemory( + IN gckOS Os, + IN gctPOINTER Memory + ); + +/* Allocate paged memory. */ +gceSTATUS +gckOS_AllocatePagedMemory( + IN gckOS Os, + IN gctUINT32 Flag, + IN OUT gctSIZE_T * Bytes, + OUT gctUINT32 * Gid, + OUT gctPHYS_ADDR * Physical + ); + +/* Lock pages. */ +gceSTATUS +gckOS_LockPages( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + IN gctBOOL Cacheable, + OUT gctPOINTER * Logical + ); + +/* Map pages. */ +gceSTATUS +gckOS_MapPagesEx( + IN gckOS Os, + IN gceCORE Core, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T PageCount, + IN gctUINT32 Address, + IN gctPOINTER PageTable, + IN gctBOOL Writable, + IN gceVIDMEM_TYPE Type + ); + +/* Map 1M pages. */ +gceSTATUS +gckOS_Map1MPages( + IN gckOS Os, + IN gceCORE Core, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T PageCount, + IN gctUINT32 Address, + IN gctPOINTER PageTable, + IN gctBOOL Writable, + IN gceVIDMEM_TYPE Type + ); + +gceSTATUS +gckOS_UnmapPages( + IN gckOS Os, + IN gctSIZE_T PageCount, + IN gctUINT32 Address + ); + +/* Unlock pages. */ +gceSTATUS +gckOS_UnlockPages( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + IN gctPOINTER Logical + ); + +/* Free paged memory. */ +gceSTATUS +gckOS_FreePagedMemory( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes + ); + +/* Allocate non-paged memory. */ +gceSTATUS +gckOS_AllocateNonPagedMemory( + IN gckOS Os, + IN gctBOOL InUserSpace, + IN gctUINT32 Flag, + IN OUT gctSIZE_T * Bytes, + OUT gctPHYS_ADDR * Physical, + OUT gctPOINTER * Logical + ); + +/* Free non-paged memory. */ +gceSTATUS +gckOS_FreeNonPagedMemory( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctPOINTER Logical, + IN gctSIZE_T Bytes + ); + +/* Reserved memory. */ +gceSTATUS +gckOS_RequestReservedMemory( + gckOS Os, + gctPHYS_ADDR_T Start, + gctSIZE_T Size, + const char * Name, + gctBOOL Requested, + gctPOINTER * MemoryHandle + ); + +void +gckOS_ReleaseReservedMemory( + gckOS Os, + gctPOINTER MemoryHandle + ); + +/* Get the number fo bytes per page. */ +gceSTATUS +gckOS_GetPageSize( + IN gckOS Os, + OUT gctSIZE_T * PageSize + ); + +/* Get the physical address of a corresponding logical address. */ +gceSTATUS +gckOS_GetPhysicalAddress( + IN gckOS Os, + IN gctPOINTER Logical, + OUT gctPHYS_ADDR_T * Address + ); + +/* Get real physical address from handle. */ +gceSTATUS +gckOS_GetPhysicalFromHandle( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctUINT32 Offset, + OUT gctPHYS_ADDR_T * PhysicalAddress + ); + +/* Get the physical address of a corresponding user logical address. */ +gceSTATUS +gckOS_UserLogicalToPhysical( + IN gckOS Os, + IN gctPOINTER Logical, + OUT gctPHYS_ADDR_T * Address + ); + +/* Map physical memory. */ +gceSTATUS +gckOS_MapPhysical( + IN gckOS Os, + IN gctPHYS_ADDR_T Physical, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Logical + ); + +/* Unmap previously mapped physical memory. */ +gceSTATUS +gckOS_UnmapPhysical( + IN gckOS Os, + IN gctPOINTER Logical, + IN gctSIZE_T Bytes + ); + +/* Read data from a hardware register. */ +gceSTATUS +gckOS_ReadRegister( + IN gckOS Os, + IN gctUINT32 Address, + OUT gctUINT32 * Data + ); + +/* Read data from a hardware register. */ +gceSTATUS +gckOS_ReadRegisterEx( + IN gckOS Os, + IN gceCORE Core, + IN gctUINT32 Address, + OUT gctUINT32 * Data + ); + +/* Write data to a hardware register. */ +gceSTATUS +gckOS_WriteRegister( + IN gckOS Os, + IN gctUINT32 Address, + IN gctUINT32 Data + ); + +/* Write data to a hardware register. */ +gceSTATUS +gckOS_WriteRegisterEx( + IN gckOS Os, + IN gceCORE Core, + IN gctUINT32 Address, + IN gctUINT32 Data + ); + +/* Write data to a hardware register without dump. */ +gceSTATUS +gckOS_WriteRegisterEx_NoDump( + IN gckOS Os, + IN gceCORE Core, + IN gctUINT32 Address, + IN gctUINT32 Data + ); + +#ifdef __QNXNTO__ +static gcmINLINE gceSTATUS +gckOS_WriteMemory( + IN gckOS Os, + IN gctPOINTER Address, + IN gctUINT32 Data + ) +{ + /* Write memory. */ + *(gctUINT32 *)Address = Data; + return gcvSTATUS_OK; +} + +#else +/* Write data to a 32-bit memory location. */ +gceSTATUS +gckOS_WriteMemory( + IN gckOS Os, + IN gctPOINTER Address, + IN gctUINT32 Data + ); +#endif + +/* Map physical memory into the process space. */ +gceSTATUS +gckOS_MapMemory( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Logical + ); + +/* Unmap physical memory from the specified process space. */ +gceSTATUS +gckOS_UnmapMemoryEx( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + IN gctPOINTER Logical, + IN gctUINT32 PID + ); + +/* Unmap physical memory from the process space. */ +gceSTATUS +gckOS_UnmapMemory( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + IN gctPOINTER Logical + ); + +/* Delete a mutex. */ +gceSTATUS +gckOS_DeleteMutex( + IN gckOS Os, + IN gctPOINTER Mutex + ); + +/* Acquire a mutex. */ +gceSTATUS +gckOS_AcquireMutex( + IN gckOS Os, + IN gctPOINTER Mutex, + IN gctUINT32 Timeout + ); + +/* Release a mutex. */ +gceSTATUS +gckOS_ReleaseMutex( + IN gckOS Os, + IN gctPOINTER Mutex + ); + +/* Atomically exchange a pair of 32-bit values. */ +gceSTATUS +gckOS_AtomicExchange( + IN gckOS Os, + IN OUT gctUINT32_PTR Target, + IN gctUINT32 NewValue, + OUT gctUINT32_PTR OldValue + ); + +/* Atomically exchange a pair of pointers. */ +gceSTATUS +gckOS_AtomicExchangePtr( + IN gckOS Os, + IN OUT gctPOINTER * Target, + IN gctPOINTER NewValue, + OUT gctPOINTER * OldValue + ); + +gceSTATUS +gckOS_AtomSetMask( + IN gctPOINTER Atom, + IN gctUINT32 Mask + ); + +gceSTATUS +gckOS_AtomClearMask( + IN gctPOINTER Atom, + IN gctUINT32 Mask + ); + +gceSTATUS +gckOS_DumpCallStack( + IN gckOS Os + ); + +gceSTATUS +gckOS_GetProcessNameByPid( + IN gctINT Pid, + IN gctSIZE_T Length, + OUT gctUINT8_PTR String + ); + +gceSTATUS +gckOS_TraceGpuMemory( + IN gckOS Os, + IN gctINT32 ProcessID, + IN gctINT64 Delta + ); + +/******************************************************************************* +** +** gckOS_AtomConstruct +** +** Create an atom. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** OUTPUT: +** +** gctPOINTER * Atom +** Pointer to a variable receiving the constructed atom. +*/ +gceSTATUS +gckOS_AtomConstruct( + IN gckOS Os, + OUT gctPOINTER * Atom + ); + +/******************************************************************************* +** +** gckOS_AtomDestroy +** +** Destroy an atom. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** gctPOINTER Atom +** Pointer to the atom to destroy. +** +** OUTPUT: +** +** Nothing. +*/ +gceSTATUS +gckOS_AtomDestroy( + IN gckOS Os, + OUT gctPOINTER Atom + ); + +/******************************************************************************* +** +** gckOS_AtomGet +** +** Get the 32-bit value protected by an atom. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** gctPOINTER Atom +** Pointer to the atom. +** +** OUTPUT: +** +** gctINT32_PTR Value +** Pointer to a variable the receives the value of the atom. +*/ +gceSTATUS +gckOS_AtomGet( + IN gckOS Os, + IN gctPOINTER Atom, + OUT gctINT32_PTR Value + ); + +/******************************************************************************* +** +** gckOS_AtomSet +** +** Set the 32-bit value protected by an atom. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** gctPOINTER Atom +** Pointer to the atom. +** +** gctINT32 Value +** The value of the atom. +** +** OUTPUT: +** +** Nothing. +*/ +gceSTATUS +gckOS_AtomSet( + IN gckOS Os, + IN gctPOINTER Atom, + IN gctINT32 Value + ); + +/******************************************************************************* +** +** gckOS_AtomIncrement +** +** Atomically increment the 32-bit integer value inside an atom. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** gctPOINTER Atom +** Pointer to the atom. +** +** OUTPUT: +** +** gctINT32_PTR Value +** Pointer to a variable the receives the original value of the atom. +*/ +gceSTATUS +gckOS_AtomIncrement( + IN gckOS Os, + IN gctPOINTER Atom, + OUT gctINT32_PTR Value + ); + +/******************************************************************************* +** +** gckOS_AtomDecrement +** +** Atomically decrement the 32-bit integer value inside an atom. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** gctPOINTER Atom +** Pointer to the atom. +** +** OUTPUT: +** +** gctINT32_PTR Value +** Pointer to a variable the receives the original value of the atom. +*/ +gceSTATUS +gckOS_AtomDecrement( + IN gckOS Os, + IN gctPOINTER Atom, + OUT gctINT32_PTR Value + ); + +/* Delay a number of milliseconds. */ +gceSTATUS +gckOS_Delay( + IN gckOS Os, + IN gctUINT32 Delay + ); + +/* Delay a number of milliseconds. */ +gceSTATUS +gckOS_Udelay( + IN gckOS Os, + IN gctUINT32 Delay + ); + +/* Get time in milliseconds. */ +gceSTATUS +gckOS_GetTicks( + OUT gctUINT32_PTR Time + ); + +/* Compare time value. */ +gceSTATUS +gckOS_TicksAfter( + IN gctUINT32 Time1, + IN gctUINT32 Time2, + OUT gctBOOL_PTR IsAfter + ); + +/* Get time in microseconds. */ +gceSTATUS +gckOS_GetTime( + OUT gctUINT64_PTR Time + ); + +/* Memory barrier. */ +gceSTATUS +gckOS_MemoryBarrier( + IN gckOS Os, + IN gctPOINTER Address + ); + +/* Map user pointer. */ +gceSTATUS +gckOS_MapUserPointer( + IN gckOS Os, + IN gctPOINTER Pointer, + IN gctSIZE_T Size, + OUT gctPOINTER * KernelPointer + ); + +/* Unmap user pointer. */ +gceSTATUS +gckOS_UnmapUserPointer( + IN gckOS Os, + IN gctPOINTER Pointer, + IN gctSIZE_T Size, + IN gctPOINTER KernelPointer + ); + +/******************************************************************************* +** +** gckOS_QueryNeedCopy +** +** Query whether the memory can be accessed or mapped directly or it has to be +** copied. +** +** INPUT: +** +** gckOS Os +** Pointer to an gckOS object. +** +** gctUINT32 ProcessID +** Process ID of the current process. +** +** OUTPUT: +** +** gctBOOL_PTR NeedCopy +** Pointer to a boolean receiving gcvTRUE if the memory needs a copy or +** gcvFALSE if the memory can be accessed or mapped dircetly. +*/ +gceSTATUS +gckOS_QueryNeedCopy( + IN gckOS Os, + IN gctUINT32 ProcessID, + OUT gctBOOL_PTR NeedCopy + ); + +/******************************************************************************* +** +** gckOS_CopyFromUserData +** +** Copy data from user to kernel memory. +** +** INPUT: +** +** gckOS Os +** Pointer to an gckOS object. +** +** gctPOINTER KernelPointer +** Pointer to kernel memory. +** +** gctPOINTER Pointer +** Pointer to user memory. +** +** gctSIZE_T Size +** Number of bytes to copy. +** +** OUTPUT: +** +** Nothing. +*/ +gceSTATUS +gckOS_CopyFromUserData( + IN gckOS Os, + IN gctPOINTER KernelPointer, + IN gctPOINTER Pointer, + IN gctSIZE_T Size + ); + +/******************************************************************************* +** +** gckOS_CopyToUserData +** +** Copy data from kernel to user memory. +** +** INPUT: +** +** gckOS Os +** Pointer to an gckOS object. +** +** gctPOINTER KernelPointer +** Pointer to kernel memory. +** +** gctPOINTER Pointer +** Pointer to user memory. +** +** gctSIZE_T Size +** Number of bytes to copy. +** +** OUTPUT: +** +** Nothing. +*/ +gceSTATUS +gckOS_CopyToUserData( + IN gckOS Os, + IN gctPOINTER KernelPointer, + IN gctPOINTER Pointer, + IN gctSIZE_T Size + ); + +gceSTATUS +gckOS_SuspendInterrupt( + IN gckOS Os + ); + +gceSTATUS +gckOS_SuspendInterruptEx( + IN gckOS Os, + IN gceCORE Core + ); + +gceSTATUS +gckOS_ResumeInterrupt( + IN gckOS Os + ); + +gceSTATUS +gckOS_ResumeInterruptEx( + IN gckOS Os, + IN gceCORE Core + ); + +/* Get the base address for the physical memory. */ +gceSTATUS +gckOS_GetBaseAddress( + IN gckOS Os, + OUT gctUINT32_PTR BaseAddress + ); + +/* Perform a memory copy. */ +gceSTATUS +gckOS_MemCopy( + IN gctPOINTER Destination, + IN gctCONST_POINTER Source, + IN gctSIZE_T Bytes + ); + +/* Zero memory. */ +gceSTATUS +gckOS_ZeroMemory( + IN gctPOINTER Memory, + IN gctSIZE_T Bytes + ); + +/******************************************************************************* +** +** gckOS_GetProcessID +** +** Get current process ID. +** +** INPUT: +** +** Nothing. +** +** OUTPUT: +** +** gctUINT32_PTR ProcessID +** Pointer to the variable that receives the process ID. +*/ +gceSTATUS +gckOS_GetProcessID( + OUT gctUINT32_PTR ProcessID + ); + +gceSTATUS +gckOS_GetCurrentProcessID( + OUT gctUINT32_PTR ProcessID + ); + +/******************************************************************************* +** +** gckOS_GetThreadID +** +** Get current thread ID. +** +** INPUT: +** +** Nothing. +** +** OUTPUT: +** +** gctUINT32_PTR ThreadID +** Pointer to the variable that receives the thread ID. +*/ +gceSTATUS +gckOS_GetThreadID( + OUT gctUINT32_PTR ThreadID + ); + +/******************************************************************************\ +********************************** Signal Object ********************************* +\******************************************************************************/ + +/* Create a signal. */ +gceSTATUS +gckOS_CreateSignal( + IN gckOS Os, + IN gctBOOL ManualReset, + OUT gctSIGNAL * Signal + ); + +/* Destroy a signal. */ +gceSTATUS +gckOS_DestroySignal( + IN gckOS Os, + IN gctSIGNAL Signal + ); + +/* Signal a signal. */ +gceSTATUS +gckOS_Signal( + IN gckOS Os, + IN gctSIGNAL Signal, + IN gctBOOL State + ); + +/* Wait for a signal. */ +gceSTATUS +gckOS_WaitSignal( + IN gckOS Os, + IN gctSIGNAL Signal, + IN gctBOOL Interruptable, + IN gctUINT32 Wait + ); + +#ifdef __QNXNTO__ +gceSTATUS +gckOS_SignalPulse( + IN gckOS Os, + IN gctSIGNAL Signal + ); + +gceSTATUS +gckOS_SignalPending( + IN gckOS Os, + IN gctSIGNAL Signal + ); +#endif + +/* Map a user signal to the kernel space. */ +gceSTATUS +gckOS_MapSignal( + IN gckOS Os, + IN gctSIGNAL Signal, + IN gctHANDLE Process, + OUT gctSIGNAL * MappedSignal + ); + +/* Unmap a user signal */ +gceSTATUS +gckOS_UnmapSignal( + IN gckOS Os, + IN gctSIGNAL Signal + ); + +/* Get scatter-gather table from memory. */ +gceSTATUS +gckOS_MemoryGetSGT( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Offset, + IN gctSIZE_T Bytes, + OUT gctPOINTER *SGT + ); + +/* Map a page range of memory to user space. */ +gceSTATUS +gckOS_MemoryMmap( + IN gckOS Os, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T skipPages, + IN gctSIZE_T numPages, + INOUT gctPOINTER Vma + ); + +/* Wrap a user memory to gctPHYS_ADDR. */ +gceSTATUS +gckOS_WrapMemory( + IN gckOS Os, + IN gcsUSER_MEMORY_DESC_PTR Desc, + OUT gctSIZE_T *Bytes, + OUT gctPHYS_ADDR * Physical, + OUT gctBOOL *Contiguous, + OUT gctSIZE_T * PageCountCpu + ); + +gceSTATUS +gckOS_GetPolicyID( + IN gckOS Os, + IN gceVIDMEM_TYPE Type, + OUT gctUINT32_PTR PolicyID, + OUT gctUINT32_PTR AXIConfig + ); + +/******************************************************************************\ +************************** Android Native Fence Sync *************************** +\******************************************************************************/ +gceSTATUS +gckOS_CreateSyncTimeline( + IN gckOS Os, + IN gceCORE Core, + OUT gctHANDLE * Timeline + ); + +gceSTATUS +gckOS_DestroySyncTimeline( + IN gckOS Os, + IN gctHANDLE Timeline + ); + +gceSTATUS +gckOS_CreateNativeFence( + IN gckOS Os, + IN gctHANDLE Timeline, + IN gctSIGNAL Signal, + OUT gctINT * FenceFD + ); + +gceSTATUS +gckOS_WaitNativeFence( + IN gckOS Os, + IN gctHANDLE Timeline, + IN gctINT FenceFD, + IN gctUINT32 Timeout + ); + +#if !USE_NEW_LINUX_SIGNAL +/* Create signal to be used in the user space. */ +gceSTATUS +gckOS_CreateUserSignal( + IN gckOS Os, + IN gctBOOL ManualReset, + OUT gctINT * SignalID + ); + +/* Destroy signal used in the user space. */ +gceSTATUS +gckOS_DestroyUserSignal( + IN gckOS Os, + IN gctINT SignalID + ); + +/* Wait for signal used in the user space. */ +gceSTATUS +gckOS_WaitUserSignal( + IN gckOS Os, + IN gctINT SignalID, + IN gctUINT32 Wait + ); + +/* Signal a signal used in the user space. */ +gceSTATUS +gckOS_SignalUserSignal( + IN gckOS Os, + IN gctINT SignalID, + IN gctBOOL State + ); +#endif /* USE_NEW_LINUX_SIGNAL */ + +/* Set a signal owned by a process. */ +#if defined(__QNXNTO__) +gceSTATUS +gckOS_UserSignal( + IN gckOS Os, + IN gctSIGNAL Signal, + IN gctINT Rcvid, + IN const struct sigevent *Event + ); +#else +gceSTATUS +gckOS_UserSignal( + IN gckOS Os, + IN gctSIGNAL Signal, + IN gctHANDLE Process + ); +#endif + +/******************************************************************************\ +** Cache Support +*/ + +gceSTATUS +gckOS_CacheClean( + gckOS Os, + gctUINT32 ProcessID, + gctPHYS_ADDR Handle, + gctSIZE_T Offset, + gctPOINTER Logical, + gctSIZE_T Bytes + ); + +gceSTATUS +gckOS_CacheFlush( + gckOS Os, + gctUINT32 ProcessID, + gctPHYS_ADDR Handle, + gctSIZE_T Offset, + gctPOINTER Logical, + gctSIZE_T Bytes + ); + +gceSTATUS +gckOS_CacheInvalidate( + gckOS Os, + gctUINT32 ProcessID, + gctPHYS_ADDR Handle, + gctSIZE_T Offset, + gctPOINTER Logical, + gctSIZE_T Bytes + ); + +gceSTATUS +gckOS_CPUPhysicalToGPUPhysical( + IN gckOS Os, + IN gctPHYS_ADDR_T CPUPhysical, + IN gctPHYS_ADDR_T * GPUPhysical + ); + +gceSTATUS +gckOS_GPUPhysicalToCPUPhysical( + IN gckOS Os, + IN gctUINT32 GPUPhysical, + IN gctPHYS_ADDR_T * CPUPhysical + ); + +gceSTATUS +gckOS_QueryOption( + IN gckOS Os, + IN gctCONST_STRING Option, + OUT gctUINT64 * Value + ); + +/******************************************************************************\ +** Debug Support +*/ + +void +gckOS_SetDebugLevel( + IN gctUINT32 Level + ); + +void +gckOS_SetDebugZone( + IN gctUINT32 Zone + ); + +void +gckOS_SetDebugLevelZone( + IN gctUINT32 Level, + IN gctUINT32 Zone + ); + +void +gckOS_SetDebugZones( + IN gctUINT32 Zones, + IN gctBOOL Enable + ); + +void +gckOS_SetDebugFile( + IN gctCONST_STRING FileName + ); + +gceSTATUS +gckOS_Broadcast( + IN gckOS Os, + IN gckHARDWARE Hardware, + IN gceBROADCAST Reason + ); + +gceSTATUS +gckOS_BroadcastHurry( + IN gckOS Os, + IN gckHARDWARE Hardware, + IN gctUINT Urgency + ); + +gceSTATUS +gckOS_BroadcastCalibrateSpeed( + IN gckOS Os, + IN gckHARDWARE Hardware, + IN gctUINT Idle, + IN gctUINT Time + ); + +/******************************************************************************* +** +** gckOS_SetGPUPower +** +** Set the power of the GPU on or off. +** +** INPUT: +** +** gckOS Os +** Pointer to a gckOS object. +** +** gceCORE Core +** GPU whose power is set. +** +** gctBOOL Clock +** gcvTRUE to turn on the clock, or gcvFALSE to turn off the clock. +** +** gctBOOL Power +** gcvTRUE to turn on the power, or gcvFALSE to turn off the power. +** +** OUTPUT: +** +** Nothing. +*/ +gceSTATUS +gckOS_SetGPUPower( + IN gckOS Os, + IN gceCORE Core, + IN gctBOOL Clock, + IN gctBOOL Power + ); + +gceSTATUS +gckOS_ResetGPU( + IN gckOS Os, + IN gceCORE Core + ); + +gceSTATUS +gckOS_PrepareGPUFrequency( + IN gckOS Os, + IN gceCORE Core + ); + +gceSTATUS +gckOS_FinishGPUFrequency( + IN gckOS Os, + IN gceCORE Core + ); + +gceSTATUS +gckOS_QueryGPUFrequency( + IN gckOS Os, + IN gceCORE Core, + OUT gctUINT32 * Frequency, + OUT gctUINT8 * Scale + ); + +gceSTATUS +gckOS_SetGPUFrequency( + IN gckOS Os, + IN gceCORE Core, + IN gctUINT8 Scale + ); + +/******************************************************************************* +** Semaphores. +*/ + +/* Create a new semaphore. */ +gceSTATUS +gckOS_CreateSemaphore( + IN gckOS Os, + OUT gctPOINTER * Semaphore + ); + +#if gcdENABLE_VG +gceSTATUS +gckOS_CreateSemaphoreVG( + IN gckOS Os, + OUT gctPOINTER * Semaphore + ); +#endif + +/* Delete a semahore. */ +gceSTATUS +gckOS_DestroySemaphore( + IN gckOS Os, + IN gctPOINTER Semaphore + ); + +/* Acquire a semahore. */ +gceSTATUS +gckOS_AcquireSemaphore( + IN gckOS Os, + IN gctPOINTER Semaphore + ); + +/* Try to acquire a semahore. */ +gceSTATUS +gckOS_TryAcquireSemaphore( + IN gckOS Os, + IN gctPOINTER Semaphore + ); + +/* Release a semahore. */ +gceSTATUS +gckOS_ReleaseSemaphore( + IN gckOS Os, + IN gctPOINTER Semaphore + ); + +/******************************************************************************* +** Timer API. +*/ + +typedef void (*gctTIMERFUNCTION)(gctPOINTER); + +/* Create a timer. */ +gceSTATUS +gckOS_CreateTimer( + IN gckOS Os, + IN gctTIMERFUNCTION Function, + IN gctPOINTER Data, + OUT gctPOINTER * Timer + ); + +/* Destory a timer. */ +gceSTATUS +gckOS_DestroyTimer( + IN gckOS Os, + IN gctPOINTER Timer + ); + +/* Start a timer. */ +gceSTATUS +gckOS_StartTimer( + IN gckOS Os, + IN gctPOINTER Timer, + IN gctUINT32 Delay + ); + +/* Stop a timer. */ +gceSTATUS +gckOS_StopTimer( + IN gckOS Os, + IN gctPOINTER Timer + ); + +/******************************************************************************\ +********************************* gckHEAP Object ******************************** +\******************************************************************************/ + +typedef struct _gckHEAP * gckHEAP; + +/* Construct a new gckHEAP object. */ +gceSTATUS +gckHEAP_Construct( + IN gckOS Os, + IN gctSIZE_T AllocationSize, + OUT gckHEAP * Heap + ); + +/* Destroy an gckHEAP object. */ +gceSTATUS +gckHEAP_Destroy( + IN gckHEAP Heap + ); + +/* Allocate memory. */ +gceSTATUS +gckHEAP_Allocate( + IN gckHEAP Heap, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Node + ); + +/* Free memory. */ +gceSTATUS +gckHEAP_Free( + IN gckHEAP Heap, + IN gctPOINTER Node + ); + +/* Profile the heap. */ +gceSTATUS +gckHEAP_ProfileStart( + IN gckHEAP Heap + ); + +gceSTATUS +gckHEAP_ProfileEnd( + IN gckHEAP Heap, + IN gctCONST_STRING Title + ); + +typedef struct _gckVIDMEM * gckVIDMEM; +typedef struct _gckKERNEL * gckKERNEL; +typedef struct _gckDB * gckDB; +typedef struct _gckDVFS * gckDVFS; +typedef struct _gckMMU * gckMMU; +typedef struct _gcsDEVICE * gckDEVICE; + +/******************************************************************************\ +******************************** gckKERNEL Object ****************************** +\******************************************************************************/ + +struct _gcsHAL_INTERFACE; + +/* Construct a new gckKERNEL object. */ +gceSTATUS +gckKERNEL_Construct( + IN gckOS Os, + IN gceCORE Core, + IN gctUINT ChipID, + IN gctPOINTER Context, + IN gckDEVICE Device, + IN gckDB SharedDB, + OUT gckKERNEL * Kernel + ); + +/* Destroy an gckKERNEL object. */ +gceSTATUS +gckKERNEL_Destroy( + IN gckKERNEL Kernel + ); + +/* Dispatch a user-level command. */ +gceSTATUS +gckKERNEL_Dispatch( + IN gckKERNEL Kernel, + IN gckDEVICE Device, + IN OUT struct _gcsHAL_INTERFACE * Interface + ); + +/* Query Database requirements. */ +gceSTATUS + gckKERNEL_QueryDatabase( + IN gckKERNEL Kernel, + IN gctUINT32 ProcessID, + IN OUT gcsHAL_INTERFACE * Interface + ); + +/* Query the video memory. */ +gceSTATUS +gckKERNEL_QueryVideoMemory( + IN gckKERNEL Kernel, + OUT struct _gcsHAL_INTERFACE * Interface + ); + +/* Lookup the gckVIDMEM object for a pool. */ +gceSTATUS +gckKERNEL_GetVideoMemoryPool( + IN gckKERNEL Kernel, + IN gcePOOL Pool, + OUT gckVIDMEM * VideoMemory + ); + +/* Map dedicated video memory node. */ +gceSTATUS +gckKERNEL_MapVideoMemory( + IN gckKERNEL Kernel, + IN gctBOOL InUserSpace, + IN gcePOOL Pool, + IN gctPHYS_ADDR Physical, + IN gctUINT32 Offset, + IN gctUINT32 Bytes, + OUT gctPOINTER * Logical + ); + +/* Unmap dedicated video memory. */ +gceSTATUS +gckKERNEL_UnmapVideoMemory( + IN gckKERNEL Kernel, + IN gcePOOL Pool, + IN gctPHYS_ADDR Physical, + IN gctPOINTER Logical, + IN gctUINT32 Pid, + IN gctSIZE_T Bytes + ); + +/* Map memory. */ +gceSTATUS +gckKERNEL_MapMemory( + IN gckKERNEL Kernel, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Logical + ); + +/* Unmap memory. */ +gceSTATUS +gckKERNEL_UnmapMemory( + IN gckKERNEL Kernel, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + IN gctPOINTER Logical, + IN gctUINT32 ProcessID + ); +/* Destroy reserved mem when destroy process*/ +gceSTATUS +gckKERNEL_DestroyProcessReservedUserMap( + IN gckKERNEL Kernel, + IN gctUINT32 Pid + ); + +/* Notification of events. */ +gceSTATUS +gckKERNEL_Notify( + IN gckKERNEL Kernel, + IN gceNOTIFY Notifcation + ); + +/******************************************************************************* +** +** gckKERNEL_Recovery +** +** Try to recover the GPU from a fatal error. +** +** INPUT: +** +** gckKERNEL Kernel +** Pointer to an gckKERNEL object. +** +** OUTPUT: +** +** Nothing. +*/ +gceSTATUS +gckKERNEL_Recovery( + IN gckKERNEL Kernel + ); + +/* Get access to the user data. */ +gceSTATUS +gckKERNEL_OpenUserData( + IN gckKERNEL Kernel, + IN gctBOOL NeedCopy, + IN gctPOINTER StaticStorage, + IN gctPOINTER UserPointer, + IN gctSIZE_T Size, + OUT gctPOINTER * KernelPointer + ); + +/* Release resources associated with the user data connection. */ +gceSTATUS +gckKERNEL_CloseUserData( + IN gckKERNEL Kernel, + IN gctBOOL NeedCopy, + IN gctBOOL FlushData, + IN gctPOINTER UserPointer, + IN gctSIZE_T Size, + OUT gctPOINTER * KernelPointer + ); + +/* Query kernel by core index */ +gceSTATUS +gckOS_QueryKernel( + IN gckKERNEL Kernel, + IN gctINT index, + OUT gckKERNEL * KernelOut + ); + +gceSTATUS +gckDVFS_Construct( + IN gckHARDWARE Hardware, + OUT gckDVFS * Frequency + ); + +gceSTATUS +gckDVFS_Destroy( + IN gckDVFS Dvfs + ); + +gceSTATUS +gckDVFS_Start( + IN gckDVFS Dvfs + ); + +gceSTATUS +gckDVFS_Stop( + IN gckDVFS Dvfs + ); + +/******************************************************************************\ +******************************* gckHARDWARE Object ***************************** +\******************************************************************************/ + +/* Construct a new gckHARDWARE object. */ +gceSTATUS +gckHARDWARE_Construct( + IN gckOS Os, + IN gckDEVICE Device, + IN gceCORE Core, + OUT gckHARDWARE * Hardware + ); + +/* Post hardware resource allocation after gckHARDWARE object constructed. */ +gceSTATUS +gckHARDWARE_PostConstruct( + IN gckHARDWARE Hardware + ); + +/* Pre-destroy hardwre resource before destroying an gckHARDWARE object. */ +gceSTATUS +gckHARDWARE_PreDestroy( + IN gckHARDWARE Hardware + ); + +/* Destroy an gckHARDWARE object. */ +gceSTATUS +gckHARDWARE_Destroy( + IN gckHARDWARE Hardware + ); + +/* Get hardware type. */ +gceSTATUS +gckHARDWARE_GetType( + IN gckHARDWARE Hardware, + OUT gceHARDWARE_TYPE * Type + ); + +/* Query system memory requirements. */ +gceSTATUS +gckHARDWARE_QuerySystemMemory( + IN gckHARDWARE Hardware, + OUT gctSIZE_T * SystemSize, + OUT gctUINT32 * SystemBaseAddress + ); + +/* Build virtual address. */ +gceSTATUS +gckHARDWARE_BuildVirtualAddress( + IN gckHARDWARE Hardware, + IN gctUINT32 Index, + IN gctUINT32 Offset, + OUT gctUINT32 * Address + ); + +/* Query command buffer requirements. */ +gceSTATUS +gckHARDWARE_QueryCommandBuffer( + IN gckHARDWARE Hardware, + IN gceENGINE Engine, + OUT gctUINT32 * Alignment, + OUT gctUINT32 * ReservedHead, + OUT gctUINT32 * ReservedTail + ); + +/* Add a PIPESELECT command in the command queue. */ +gceSTATUS +gckHARDWARE_PipeSelect( + IN gckHARDWARE Hardware, + IN gctPOINTER Logical, + IN gcePIPE_SELECT Pipe, + IN OUT gctUINT32 * Bytes + ); + +/* Query the available memory. */ +gceSTATUS +gckHARDWARE_QueryMemory( + IN gckHARDWARE Hardware, + OUT gctSIZE_T * InternalSize, + OUT gctUINT32 * InternalBaseAddress, + OUT gctUINT32 * InternalAlignment, + OUT gctSIZE_T * ExternalSize, + OUT gctUINT32 * ExternalBaseAddress, + OUT gctUINT32 * ExternalAlignment, + OUT gctUINT32 * HorizontalTileSize, + OUT gctUINT32 * VerticalTileSize + ); + +/* Query the identity of the hardware. */ +gceSTATUS +gckHARDWARE_QueryChipIdentity( + IN gckHARDWARE Hardware, + OUT gcsHAL_QUERY_CHIP_IDENTITY_PTR Identity + ); + +gceSTATUS +gckHARDWARE_QueryChipOptions( + IN gckHARDWARE Hardware, + OUT gcsHAL_QUERY_CHIP_OPTIONS_PTR Options + ); + + +/* Split a harwdare specific address into API stuff. */ +gceSTATUS +gckHARDWARE_SplitMemory( + IN gckHARDWARE Hardware, + IN gctUINT32 Address, + OUT gcePOOL * Pool, + OUT gctUINT32 * Offset + ); + +/* Update command queue tail pointer. */ +gceSTATUS +gckHARDWARE_UpdateQueueTail( + IN gckHARDWARE Hardware, + IN gctPOINTER Logical, + IN gctUINT32 Offset + ); + +/* Interrupt manager. */ +gceSTATUS +gckHARDWARE_Interrupt( + IN gckHARDWARE Hardware + ); + +gceSTATUS +gckHARDWARE_Notify( + IN gckHARDWARE Hardware + ); + +/* Program MMU. */ +gceSTATUS +gckHARDWARE_SetMMU( + IN gckHARDWARE Hardware, + IN gckMMU Mmu + ); + +/* Flush the MMU. */ +gceSTATUS +gckHARDWARE_FlushMMU( + IN gckHARDWARE Hardware, + IN gctPOINTER Logical, + IN gctUINT32 Address, + IN gctUINT32 SubsequentBytes, + IN OUT gctUINT32 * Bytes + ); + +gceSTATUS +gckHARDWARE_FlushAsyncMMU( + IN gckHARDWARE Hardware, + IN gctPOINTER Logical, + IN OUT gctUINT32 * Bytes + ); + +gceSTATUS +gckHARDWARE_FlushMcfeMMU( + IN gckHARDWARE Hardware, + IN gctPOINTER Logical, + IN OUT gctUINT32 * Bytes + ); + +/* Get idle register. */ +gceSTATUS +gckHARDWARE_GetIdle( + IN gckHARDWARE Hardware, + IN gctBOOL Wait, + OUT gctUINT32 * Data + ); + +/* Flush the caches. */ +gceSTATUS +gckHARDWARE_Flush( + IN gckHARDWARE Hardware, + IN gceKERNEL_FLUSH Flush, + IN gctPOINTER Logical, + IN OUT gctUINT32 * Bytes + ); + +/* Enable/disable fast clear. */ +gceSTATUS +gckHARDWARE_SetFastClear( + IN gckHARDWARE Hardware, + IN gctINT Enable, + IN gctINT Compression + ); + +gceSTATUS +gckHARDWARE_ReadInterrupt( + IN gckHARDWARE Hardware, + OUT gctUINT32_PTR IDs + ); + +/* +* State timer helper. +*/ +gceSTATUS +gckHARDWARE_StartTimerReset( + IN gckHARDWARE Hardware + ); + +/* Power management. */ +gceSTATUS +gckHARDWARE_SetPowerState( + IN gckHARDWARE Hardware, + IN gceCHIPPOWERSTATE State + ); + +gceSTATUS +gckHARDWARE_QueryPowerStateUnlocked( + IN gckHARDWARE Hardware, + OUT gceCHIPPOWERSTATE* State + ); + +gceSTATUS +gckHARDWARE_QueryPowerState( + IN gckHARDWARE Hardware, + OUT gceCHIPPOWERSTATE* State + ); + +gceSTATUS +gckHARDWARE_EnablePowerManagement( + IN gckHARDWARE Hardware, + IN gctBOOL Enable + ); + +gceSTATUS +gckHARDWARE_QueryPowerManagement( + IN gckHARDWARE Hardware, + OUT gctBOOL *Enable + ); + +gceSTATUS +gckHARDWARE_SetGpuProfiler( + IN gckHARDWARE Hardware, + IN gctBOOL GpuProfiler + ); + +#if gcdENABLE_FSCALE_VAL_ADJUST +gceSTATUS +gckHARDWARE_SetFscaleValue( + IN gckHARDWARE Hardware, + IN gctUINT32 FscaleValue, + IN gctUINT32 ShaderFscaleValue + ); + +gceSTATUS +gckHARDWARE_GetFscaleValue( + IN gckHARDWARE Hardware, + IN gctUINT * FscaleValue, + IN gctUINT * MinFscaleValue, + IN gctUINT * MaxFscaleValue + ); + +gceSTATUS +gckHARDWARE_SetMinFscaleValue( + IN gckHARDWARE Hardware, + IN gctUINT MinFscaleValue + ); +#endif + +gceSTATUS +gckHARDWARE_InitializeHardware( + IN gckHARDWARE Hardware + ); + +gceSTATUS +gckHARDWARE_Reset( + IN gckHARDWARE Hardware + ); + +/* Check for Hardware features. */ +gceSTATUS +gckHARDWARE_IsFeatureAvailable( + IN gckHARDWARE Hardware, + IN gceFEATURE Feature + ); + +gceSTATUS +gckHARDWARE_DumpMMUException( + IN gckHARDWARE Hardware + ); + +gceSTATUS +gckHARDWARE_DumpGPUState( + IN gckHARDWARE Hardware + ); + +gceSTATUS +gckHARDWARE_InitDVFS( + IN gckHARDWARE Hardware + ); + +gceSTATUS +gckHARDWARE_QueryLoad( + IN gckHARDWARE Hardware, + OUT gctUINT32 * Load + ); + +gceSTATUS +gckHARDWARE_SetDVFSPeroid( + IN gckHARDWARE Hardware, + IN gctUINT32 Frequency + ); + +gceSTATUS +gckHARDWARE_QueryStateTimer( + IN gckHARDWARE Hardware, + OUT gctUINT64_PTR On, + OUT gctUINT64_PTR Off, + OUT gctUINT64_PTR Idle, + OUT gctUINT64_PTR Suspend + ); + +gceSTATUS +gckHARDWARE_Fence( + IN gckHARDWARE Hardware, + IN gceENGINE Engine, + IN gctPOINTER Logical, + IN gctUINT32 FenceAddress, + IN gctUINT64 FenceData, + IN OUT gctUINT32 * Bytes + ); + +#if !gcdENABLE_VG +/******************************************************************************\ +***************************** gckINTERRUPT Object ****************************** +\******************************************************************************/ + +typedef struct _gckINTERRUPT * gckINTERRUPT; + +typedef gceSTATUS (* gctINTERRUPT_HANDLER)( + IN gckKERNEL Kernel + ); + +gceSTATUS +gckINTERRUPT_Construct( + IN gckKERNEL Kernel, + OUT gckINTERRUPT * Interrupt + ); + +gceSTATUS +gckINTERRUPT_Destroy( + IN gckINTERRUPT Interrupt + ); + +gceSTATUS +gckINTERRUPT_SetHandler( + IN gckINTERRUPT Interrupt, + IN OUT gctINT32_PTR Id, + IN gctINTERRUPT_HANDLER Handler + ); + +gceSTATUS +gckINTERRUPT_Notify( + IN gckINTERRUPT Interrupt, + IN gctBOOL Valid + ); +#endif + +/******************************************************************************\ +********************************* gckMMU Object ******************************** +\******************************************************************************/ + +/* Construct a new gckMMU object. */ +gceSTATUS +gckMMU_Construct( + IN gckKERNEL Kernel, + IN gctSIZE_T MmuSize, + OUT gckMMU * Mmu + ); + +/* Destroy an gckMMU object. */ +gceSTATUS +gckMMU_Destroy( + IN gckMMU Mmu + ); + +/* Allocate pages inside the MMU. */ +gceSTATUS +gckMMU_AllocatePages( + IN gckMMU Mmu, + IN gctSIZE_T PageCount, + IN gcePAGE_TYPE PageType, + OUT gctPOINTER * PageTable, + OUT gctUINT32 * Address + ); + +gceSTATUS +gckMMU_AllocatePagesEx( + IN gckMMU Mmu, + IN gctSIZE_T PageCount, + IN gceVIDMEM_TYPE Type, + IN gcePAGE_TYPE PageType, + IN gctBOOL Secure, + OUT gctPOINTER * PageTable, + OUT gctUINT32 * Address + ); + +/* Remove a page table from the MMU. */ +gceSTATUS +gckMMU_FreePages( + IN gckMMU Mmu, + IN gctBOOL Secure, + IN gcePAGE_TYPE PageType, + IN gctUINT32 Address, + IN gctPOINTER PageTable, + IN gctSIZE_T PageCount + ); + +/* Set the MMU page with info. */ +gceSTATUS +gckMMU_SetPage( + IN gckMMU Mmu, + IN gctPHYS_ADDR_T PageAddress, + IN gcePAGE_TYPE PageType, + IN gctBOOL Writable, + IN gctUINT32 *PageEntry + ); + +gceSTATUS +gckMMU_Flush( + IN gckMMU Mmu, + IN gceVIDMEM_TYPE Type + ); + +gceSTATUS +gckMMU_DumpPageTableEntry( + IN gckMMU Mmu, + IN gceAREA_TYPE AreaType, + IN gctUINT32 Address + ); + +gceSTATUS +gckMMU_FillFlatMapping( + IN gckMMU Mmu, + IN gctUINT64 PhysBase, + IN gctSIZE_T Size + ); + +gceSTATUS +gckMMU_IsFlatMapped( + IN gckMMU Mmu, + IN gctUINT64 Physical, + IN gctUINT32 Address, + OUT gctBOOL *In + ); + +gceSTATUS +gckMMU_GetAreaType( + IN gckMMU Mmu, + IN gctUINT32 GpuAddress, + OUT gceAREA_TYPE *AreaType + ); + +gceSTATUS +gckHARDWARE_QueryContextProfile( + IN gckHARDWARE Hardware, + IN gctBOOL Reset, + IN gckCONTEXT Context, + OUT gcsPROFILER_COUNTERS_PART1 * Counters_part1, + OUT gcsPROFILER_COUNTERS_PART2 * Counters_part2 + ); + +gceSTATUS +gckHARDWARE_UpdateContextProfile( + IN gckHARDWARE Hardware, + IN gckCONTEXT Context + ); + +gceSTATUS +gckHARDWARE_InitProfiler( + IN gckHARDWARE Hardware + ); + +gceSTATUS +gckOS_DetectProcessByName( + IN gctCONST_POINTER Name + ); + +void +gckOS_DumpParam( + void + ); + +#ifdef __cplusplus +} +#endif + +#if gcdENABLE_VG +#include "gc_hal_vg.h" +#endif + +#endif /* __gc_hal_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_base.h b/include_v6.4.3.p4.6/gc_hal_base.h new file mode 100644 index 0000000..9609fad --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_base.h @@ -0,0 +1,5865 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_base_h_ +#define __gc_hal_base_h_ + +#include "gc_hal_enum.h" +#include "gc_hal_types.h" +#include "gc_hal_debug_zones.h" +#include "shared/gc_hal_base_shared.h" + + +#ifdef __QNXNTO__ +#define CHECK_PRINTF_FORMAT(string_index, first_to_check) __attribute__((__format__(__printf__, (string_index), (first_to_check)))) +#else +#define CHECK_PRINTF_FORMAT(string_index, first_to_check) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ +****************************** Object Declarations ***************************** +\******************************************************************************/ + +typedef struct _gckOS * gckOS; +typedef struct _gcoHAL * gcoHAL; +typedef struct _gcoOS * gcoOS; +typedef struct _gco2D * gco2D; +typedef struct gcsATOM * gcsATOM_PTR; + +typedef struct _gco3D * gco3D; +typedef struct _gcoCL * gcoCL; +typedef struct _gcoVX * gcoVX; +typedef struct _gcsFAST_FLUSH * gcsFAST_FLUSH_PTR; + +typedef struct _gcoSURF * gcoSURF; +typedef struct _gcsSURF_NODE * gcsSURF_NODE_PTR; +typedef struct _gcsSURF_FORMAT_INFO * gcsSURF_FORMAT_INFO_PTR; +typedef struct _gcsPOINT * gcsPOINT_PTR; +typedef struct _gcsSIZE * gcsSIZE_PTR; +typedef struct _gcsRECT * gcsRECT_PTR; +typedef struct _gcsBOUNDARY * gcsBOUNDARY_PTR; +typedef struct _gcoHARDWARE * gcoHARDWARE; +typedef union _gcuVIDMEM_NODE * gcuVIDMEM_NODE_PTR; +typedef struct _gcsVIDMEM_NODE * gckVIDMEM_NODE; +typedef struct _gcsVIDMEM_BLOCK * gckVIDMEM_BLOCK; + +#if gcdENABLE_VG +typedef struct _gcoVG * gcoVG; +typedef struct _gcsCOMPLETION_SIGNAL * gcsCOMPLETION_SIGNAL_PTR; +typedef struct _gcsCONTEXT_MAP * gcsCONTEXT_MAP_PTR; +#else +typedef void * gcoVG; +#endif + +typedef struct _gcoFENCE * gcoFENCE; +typedef struct _gcsSYNC_CONTEXT * gcsSYNC_CONTEXT_PTR; + +typedef struct _gcsUSER_MEMORY_DESC * gcsUSER_MEMORY_DESC_PTR; + +/* Immuatable features from database */ +typedef struct _gcsNN_FIXED_FEATURE +{ + gctUINT vipCoreCount; + gctUINT nnCoreCount; /* total nn core count */ + gctUINT nnCoreCountInt8; /* total nn core count supporting int8 */ + gctUINT nnCoreCountInt16; /* total nn core count supporting int16 */ + gctUINT nnCoreCountFloat16; /* total nn core count supporting float16 */ + gctUINT nnCoreCountBFloat16; /* total nn core count supporting Bfloat16 */ + gctUINT nnMadPerCore; + gctUINT nnInputBufferDepth; + gctUINT nnAccumBufferDepth; + gctUINT nnFCNonPrunAccel; + gctUINT nnInImageOffsetBits; + gctUINT tpCoreCount; /* full-function core count */ + gctUINT tpPwlLUTCount; + gctUINT tpPwlLUTSize; + gctUINT vip7Version; + gctUINT vipBrickMode; + gctUINT tpReorderInImageSize; + gctUINT tpliteCoreCount; /* fc-only core count */ + gctUINT nnFP16XYDPX; + gctUINT nnFP16XYDPY; + gctUINT nnFP16ZDP; + gctUINT zrlBits; + gctUINT uscCacheControllers; + gctUINT uscBanks; + gctUINT nnLanesPerOutCycle; + gctUINT maxOTNumber; + gctUINT physicalVipSramWidthInByte; + gctUINT equivalentVipsramWidthInByte; + gctUINT shaderCoreCount; + gctUINT latencyHidingAtFullAxiBw; + gctUINT axiBusWidth; + gctUINT nnMaxKXSize; + gctUINT nnMaxKYSize; + gctUINT nnMaxKZSize; +} gcsNN_FIXED_FEATURE; + +/* Features can be customized from outside */ +typedef struct _gcsNN_CUSTOMIZED_FEATURE +{ + gctUINT vipSRAMSize; + gctUINT axiSRAMSize; + gctFLOAT ddrReadBWLimit; + gctFLOAT ddrWriteBWLimit; + gctFLOAT ddrTotalBWLimit; + gctFLOAT axiSramReadBWLimit; + gctFLOAT axiSramWriteBWLimit; + gctFLOAT axiSramTotalBWLimit; + gctFLOAT axiBusReadBWLimit; + gctFLOAT axiBusWriteBWLimit; + gctFLOAT axiBusTotalBWLimit; + gctUINT vipSWTiling; + gctFLOAT ddrLatency; + gctUINT freqInMHZ; + gctUINT axiClockFreqInMHZ; + gctUINT maxSocOTNumber;/*max SOC outstanding transfer number*/ + gctUINT nnWriteWithoutUSC; + gctUINT depthWiseSupport; + gctUINT vipVectorPrune; + gctUINT ddrKernelBurstSize; +} gcsNN_CUSTOMIZED_FEATURE; + +/* Features are unified (hardcoded) for hardwares */ +typedef struct _gcsNN_UNIFIED_FEATURE +{ + gctUINT nnUSCCacheSize; + gctUINT nnCmdSizeInBytes; + gctUINT tpCmdSizeInBytes; + gctUINT vipCoefDecodePerf; + gctUINT vipCachedReadFromSram; + gctUINT vipImagePartialCache; + gctUINT lanesPerConv; + gctUINT maxTileSize; + gctUINT fullCacheKernelHeadFix : 1; + gctUINT conv1x1HalfPerformance : 1; + gctUINT per3DTileBubbleFix : 1; + gctUINT cacheLineModeDisabled : 1; + gctUINT tpReOrderFix : 1; + gctUINT zdp3NoCompressFix : 1; + gctUINT asyncCopyPerfFix : 1; + gctUINT accurateTileBW : 1; + gctUINT zxdp3KernelReadConflictFix : 1; + gctUINT axiSramSlowedDownByAddr:1; + gctUINT slowNNReqArbitrationFix:1; + gctUINT singlePortAccBuffer : 1; + gctUINT convOutFifoDepthFix : 1; + gctUINT smallBatchEnable : 1; + gctUINT axiSramOnlySWTiling : 1; + gctUINT imageNotPackedInSram : 1; + gctUINT coefDeltaCordOverFlowZRL8BitFix : 1; + gctUINT lowEfficiencyOfIDWriteImgBufFix : 1; + gctUINT xyOffsetLimitationFix : 1; + gctUINT kernelPerCoreLTOneThirdCoefFix : 1; + gctUINT diffConditionForCachelineModePreFix : 1; +} gcsNN_UNIFIED_FEATURE; + +/* Features are derived from above ones */ +typedef struct _gcsNN_DERIVIED_FEATURE +{ + gctUINT nnDPAmount; + gctUINT nnXYDPX; + gctUINT nnXYDPY; + gctUINT nnZDP; + gctFLOAT totalLatency; + gctFLOAT internalLatency; + gctFLOAT ddrReadBWInBytePerCycle; + gctFLOAT ddrWriteBWInBytePerCycle; +} gcsNN_DERIVED_FEATURE; + +/******************************************************************************\ +********************* Share obj lock/unlock macros. **************************** +\******************************************************************************/ +#define gcmLOCK_SHARE_OBJ(Obj) \ +{ \ + if(Obj->sharedLock != gcvNULL)\ + {\ + (gcoOS_AcquireMutex(\ + gcvNULL, Obj->sharedLock, gcvINFINITE));\ + }\ +} + + +#define gcmUNLOCK_SHARE_OBJ(Obj)\ +{\ + if(Obj->sharedLock != gcvNULL)\ + {\ + (gcoOS_ReleaseMutex(gcvNULL, Obj->sharedLock));\ + }\ +} + +typedef struct _gcsSystemInfo +{ + /* memory latency number for SH data fetch, in SH cycle*/ + gctUINT32 memoryLatencySH; +} +gcsSystemInfo; + + +#define gcPLS_INITIALIZER \ +{ \ + gcvNULL, /* gcoOS object. */ \ + gcvNULL, /* gcoHAL object. */ \ + 0, /* internalSize */ \ + 0, /* internalPhysName */ \ + gcvNULL, /* internalLogical */ \ + 0, /* externalSize */ \ + 0, /* externalPhysName */ \ + gcvNULL, /* externalLogical */ \ + 0, /* contiguousSize */ \ + 0, /* contiguousPhysName */ \ + gcvNULL, /* contiguousLogical */ \ + gcvNULL, /* eglDisplayInfo */ \ + gcvNULL, /* eglSurfaceInfo */ \ + gcvSURF_A8R8G8B8,/* eglConfigFormat */ \ + gcvNULL, /* reference */ \ + 0, /* processID */ \ + 0, /* threadID */ \ + gcvFALSE, /* exiting */ \ + gcvFALSE, /* Special flag for NP2 texture. */ \ + gcvFALSE, /* device open. */ \ + gcvNULL, /* destructor */ \ + gcvNULL, /* accessLock */ \ + gcvNULL, /* GL FE compiler lock*/ \ + gcvNULL, /* CL FE compiler lock*/ \ + gcvNULL, /* VX context lock */ \ + gcvPATCH_NOTINIT,/* global patchID */ \ + gcvNULL, /* global fenceID*/ \ + gcvNULL, /* mainThreadHandle */ \ + gcvFALSE, /* memory profile flag */ \ + gcvNULL, /* profileLock; */ \ + 0, /* allocCount; */ \ + 0, /* allocSize; */ \ + 0, /* maxAllocSize; */ \ + 0, /* freeCount; */ \ + 0, /* freeSize; */ \ + 0, /* currentSize; */ \ + 0, /* video_allocCount; */ \ + 0, /* video_allocSize; */ \ + 0, /* video_maxAllocSize; */ \ + 0, /* video_freeCount; */ \ + 0, /* video_freeSize; */ \ + 0, /* video_currentSize; */ \ +} + +/******************************************************************************\ +******************************* Thread local storage ************************* +\******************************************************************************/ + +typedef struct _gcsDRIVER_TLS * gcsDRIVER_TLS_PTR; + +typedef struct _gcsDRIVER_TLS +{ + void (* destructor)(gcsDRIVER_TLS_PTR Tls); +} +gcsDRIVER_TLS; + +typedef struct _gcsTLS * gcsTLS_PTR; + +typedef struct _gcsTLS +{ + gceHARDWARE_TYPE currentType; + gceHARDWARE_TYPE targetType; + + /* To which core device control is called, + * it is index in a hardware type. + */ + gctUINT32 currentCoreIndex; + + /* Current 3D hardwre of this thread */ + gcoHARDWARE currentHardware; + + /* Default 3D hardware of this thread */ + gcoHARDWARE defaultHardware; + + /* Only for separated 3D and 2D */ + gcoHARDWARE hardware2D; +#if gcdENABLE_VG + gcoVGHARDWARE vg; + gcoVG engineVG; +#endif /* gcdENABLE_VG */ +#if gcdENABLE_3D + gco3D engine3D; +#endif +#if gcdENABLE_2D + gco2D engine2D; +#if gcdDUMP_2D + gctUINT32 newDump2DFlag; +#endif + +#endif + gcoVX engineVX; + + gctBOOL copied; + + /* libGAL.so handle */ + gctHANDLE handle; + + /* If true, do not releas 2d engine and hardware in hal layer */ + gctBOOL release2DUpper; + + /* Driver tls. */ + gcsDRIVER_TLS_PTR driverTLS[gcvTLS_KEY_COUNT]; +} +gcsTLS; + +typedef struct _gcsSURF_VIEW +{ + gcoSURF surf; + gctUINT firstSlice; + gctUINT numSlices; +}gcsSURF_VIEW; + +/* gcsHAL_Limits*/ +typedef struct _gcsHAL_LIMITS +{ + /* chip info */ + gceCHIPMODEL chipModel; + gctUINT32 chipRevision; + gctUINT32 featureCount; + gctUINT32 *chipFeatures; + + /* target caps */ + gctUINT32 maxWidth; + gctUINT32 maxHeight; + gctUINT32 multiTargetCount; + gctUINT32 maxSamples; + +}gcsHAL_LIMITS; + + +typedef struct _gcsHAL_CHIPIDENTITY +{ + gceCHIPMODEL chipModel; + gctUINT32 chipRevision; + gctUINT32 productID; + gctUINT32 customerID; + gctUINT32 ecoID; + gceCHIP_FLAG chipFlags; + gctUINT64 platformFlagBits; +} +gcsHAL_CHIPIDENTITY; + +/******************************************************************************\ +********************************* gcoHAL Object ********************************* +\******************************************************************************/ + +/* Construct a new gcoHAL object. */ +gceSTATUS +gcoHAL_ConstructEx( + IN gctPOINTER Context, + IN gcoOS Os, + OUT gcoHAL * Hal + ); + +/* Destroy an gcoHAL object. */ +gceSTATUS +gcoHAL_DestroyEx( + IN gcoHAL Hal + ); + +/* Empty function for compatibility. */ +gceSTATUS +gcoHAL_Construct( + IN gctPOINTER Context, + IN gcoOS Os, + OUT gcoHAL * Hal + ); + +/* Empty function for compatibility. */ +gceSTATUS +gcoHAL_Destroy( + IN gcoHAL Hal + ); + +/* Get HAL options */ +gceSTATUS +gcoHAL_GetOption( + IN gcoHAL Hal, + IN gceOPTION Option + ); + +gceSTATUS +gcoHAL_FrameInfoOps( + IN gcoHAL Hal, + IN gceFRAMEINFO FrameInfo, + IN gceFRAMEINFO_OP Op, + IN OUT gctUINT * Val + ); + +/* Set HAL options */ +gceSTATUS +gcoHAL_SetOption( + IN gcoHAL Hal, + IN gceOPTION Option, + IN gctBOOL Value + ); + +gceSTATUS +gcoHAL_GetHardware( + IN gcoHAL Hal, + OUT gcoHARDWARE* Hw + ); + +#if gcdENABLE_2D +/* Get pointer to gco2D object. */ +gceSTATUS +gcoHAL_Get2DEngine( + IN gcoHAL Hal, + OUT gco2D * Engine + ); +#endif + +#if gcdENABLE_3D +gceSTATUS +gcoHAL_GetSpecialHintData( + IN gcoHAL Hal, + OUT gctINT * Hint + ); +/* +** Deprecated(Don't use it), keep it here for external library(libgcu.so) +*/ +gceSTATUS +gcoHAL_Get3DEngine( + IN gcoHAL Hal, + OUT gco3D * Engine + ); +#endif /* gcdENABLE_3D */ + + +gceSTATUS +gcoHAL_GetProductName( + IN gcoHAL Hal, + OUT gctSTRING *ProductName, + OUT gctUINT *PID + ); + +gceSTATUS +gcoHAL_GetProductNameWithHardware( + IN gcoHARDWARE Hardware, + OUT gctSTRING *ProductName, + OUT gctUINT *PID + ); + +gceSTATUS +gcoHAL_SetFscaleValue( + IN gcoHAL Hal, + IN gctUINT CoreIndex, + IN gctUINT FscaleValue, + IN gctUINT ShaderFscaleValue + ); + +gceSTATUS +gcoHAL_GetFscaleValue( + OUT gctUINT * FscaleValue, + OUT gctUINT * MinFscaleValue, + OUT gctUINT * MaxFscaleValue + ); + +gceSTATUS +gcoHAL_SetBltNP2Texture( + gctBOOL enable + ); + +gceSTATUS +gcoHAL_ExportVideoMemory( + IN gctUINT32 Handle, + IN gctUINT32 Flags, + OUT gctINT32 * FD + ); + +gceSTATUS +gcoHAL_NameVideoMemory( + IN gctUINT32 Handle, + OUT gctUINT32 * Name + ); + +gceSTATUS +gcoHAL_ImportVideoMemory( + IN gctUINT32 Name, + OUT gctUINT32 * Handle + ); + +gceSTATUS +gcoHAL_GetVideoMemoryFd( + IN gctUINT32 Handle, + OUT gctINT * Fd + ); + +/* Verify whether the specified feature is available in hardware. */ +gceSTATUS +gcoHAL_IsFeatureAvailable( + IN gcoHAL Hal, + IN gceFEATURE Feature + ); + +gceSTATUS +gcoHAL_IsFeatureAvailableWithHardware( + IN gcoHARDWARE Hardware, + IN gceFEATURE Feature + ); + +gceSTATUS +gcoHAL_IsFeatureAvailable1( + IN gcoHAL Hal, + IN gceFEATURE Feature + ); + +/* Query the identity of the hardware. */ +gceSTATUS +gcoHAL_QueryChipIdentity( + IN gcoHAL Hal, + OUT gceCHIPMODEL* ChipModel, + OUT gctUINT32* ChipRevision, + OUT gctUINT32* ChipFeatures, + OUT gctUINT32* ChipMinorFeatures + ); + +gceSTATUS gcoHAL_QueryChipIdentityWithHardware( + IN gcoHARDWARE Hardware, + OUT gceCHIPMODEL* ChipModel, + OUT gctUINT32* ChipRevision + ); + +gceSTATUS gcoHAL_QueryChipIdentityEx( + IN gcoHAL Hal, + IN gctUINT32 SizeOfParam, + OUT gcsHAL_CHIPIDENTITY *ChipIdentity + ); + + +gceSTATUS +gcoHAL_QuerySuperTileMode( + OUT gctUINT32_PTR SuperTileMode + ); + +gceSTATUS +gcoHAL_QueryChipAxiBusWidth( + OUT gctBOOL * AXI128Bits + ); + +gceSTATUS +gcoHAL_QueryMultiGPUAffinityConfig( + IN gceHARDWARE_TYPE Type, + OUT gceMULTI_GPU_MODE *Mode, + OUT gctUINT32_PTR CoreIndex + ); + +gceSTATUS +gcoHAL_QuerySRAM( + IN gcoHAL Hal, + IN gcePOOL Type, + OUT gctUINT32 *Size, + OUT gctUINT32 *GPUVirtAddr, + OUT gctPHYS_ADDR_T *GPUPhysAddr, + OUT gctUINT32 *GPUPhysName, + OUT gctPHYS_ADDR_T *CPUPhysAddr + ); + +#ifdef LINUX +gctINT32 +gcoOS_EndRecordAllocation(void); +void +gcoOS_RecordAllocation(void); +void +gcoOS_AddRecordAllocation(gctSIZE_T Size); +#endif + +/* Query the amount of video memory. */ +gceSTATUS +gcoHAL_QueryVideoMemory( + IN gcoHAL Hal, + OUT gctUINT32 * InternalPhysName, + OUT gctSIZE_T * InternalSize, + OUT gctUINT32 * ExternalPhysName, + OUT gctSIZE_T * ExternalSize, + OUT gctUINT32 * ContiguousPhysName, + OUT gctSIZE_T * ContiguousSize + ); + +/* Map video memory. */ +gceSTATUS +gcoHAL_MapMemory( + IN gcoHAL Hal, + IN gctUINT32 PhysName, + IN gctSIZE_T NumberOfBytes, + OUT gctPOINTER * Logical + ); + +/* Unmap video memory. */ +gceSTATUS +gcoHAL_UnmapMemory( + IN gcoHAL Hal, + IN gctUINT32 PhysName, + IN gctSIZE_T NumberOfBytes, + IN gctPOINTER Logical + ); + +/* Schedule an unmap of a buffer mapped through its physical address. */ +gceSTATUS +gcoHAL_ScheduleUnmapMemory( + IN gcoHAL Hal, + IN gctUINT32 PhysName, + IN gctSIZE_T NumberOfBytes, + IN gctPOINTER Logical + ); + +/* Allocate video memory. */ +gceSTATUS +gcoOS_AllocateVideoMemory( + IN gcoOS Os, + IN gctBOOL InUserSpace, + IN gctBOOL InCacheable, + IN OUT gctSIZE_T * Bytes, + OUT gctUINT32 * Address, + OUT gctPOINTER * Logical, + OUT gctPOINTER * Handle + ); + +/* Free video memory. */ +gceSTATUS +gcoOS_FreeVideoMemory( + IN gcoOS Os, + IN gctPOINTER Handle + ); + +/* Lock video memory. */ +gceSTATUS +gcoOS_LockVideoMemory( + IN gcoOS Os, + IN gctPOINTER Handle, + IN gctBOOL InUserSpace, + IN gctBOOL InCacheable, + OUT gctUINT32 * Address, + OUT gctPOINTER * Logical + ); + +/* Commit the current command buffer. */ +gceSTATUS +gcoHAL_Commit( + IN gcoHAL Hal, + IN gctBOOL Stall + ); + +#if gcdENABLE_3D +/* Sencd fence command. */ +gceSTATUS +gcoHAL_SendFence( + IN gcoHAL Hal + ); +#endif /* gcdENABLE_3D */ + +/* Query the tile capabilities. */ +gceSTATUS +gcoHAL_QueryTiled( + IN gcoHAL Hal, + OUT gctINT32 * TileWidth2D, + OUT gctINT32 * TileHeight2D, + OUT gctINT32 * TileWidth3D, + OUT gctINT32 * TileHeight3D + ); + +gceSTATUS +gcoHAL_Compact( + IN gcoHAL Hal + ); + +#if VIVANTE_PROFILER_SYSTEM_MEMORY +gceSTATUS +gcoHAL_ProfileStart( + IN gcoHAL Hal + ); + +gceSTATUS +gcoHAL_ProfileEnd( + IN gcoHAL Hal, + IN gctCONST_STRING Title + ); +#endif + +/* Power Management */ +gceSTATUS +gcoHAL_SetPowerManagementState( + IN gcoHAL Hal, + IN gceCHIPPOWERSTATE State + ); + +gceSTATUS +gcoHAL_QueryPowerManagementState( + IN gcoHAL Hal, + OUT gceCHIPPOWERSTATE *State + ); + +/* Set the filter type for filter blit. */ +gceSTATUS +gcoHAL_SetFilterType( + IN gcoHAL Hal, + IN gceFILTER_TYPE FilterType + ); + +/* Call the kernel HAL layer. */ +gceSTATUS +gcoHAL_Call( + IN gcoHAL Hal, + IN OUT gcsHAL_INTERFACE_PTR Interface + ); + +/* Schedule an event. */ +gceSTATUS +gcoHAL_ScheduleEvent( + IN gcoHAL Hal, + IN OUT gcsHAL_INTERFACE_PTR Interface + ); + +/* Request a start/stop timestamp. */ +gceSTATUS +gcoHAL_SetTimer( + IN gcoHAL Hal, + IN gctUINT32 Index, + IN gctBOOL Start + ); + +/* Get Time delta from a Timer in microseconds. */ +gceSTATUS +gcoHAL_GetTimerTime( + IN gcoHAL Hal, + IN gctUINT32 Timer, + OUT gctINT32_PTR TimeDelta + ); + +/* set timeout value. */ +gceSTATUS +gcoHAL_SetTimeOut( + IN gcoHAL Hal, + IN gctUINT32 timeOut + ); + +gceSTATUS +gcoHAL_SetHardwareType( + IN gcoHAL Hal, + IN gceHARDWARE_TYPE HardwardType + ); + +gceSTATUS +gcoHAL_GetHardwareType( + IN gcoHAL Hal, + OUT gceHARDWARE_TYPE * HardwardType + ); + +gceSTATUS +gcoHAL_QueryChipCount( + IN gcoHAL Hal, + OUT gctINT32 * Count + ); + +gceSTATUS +gcoHAL_Query3DCoreCount( + IN gcoHAL Hal, + OUT gctUINT32 *Count + ); + +gceSTATUS +gcoHAL_QueryCluster( + IN gcoHAL Hal, + OUT gctINT32 *ClusterMinID, + OUT gctINT32 *ClusterMaxID, + OUT gctUINT32 *ClusterCount, + OUT gctUINT32 *ClusterIDWidth + ); + +gceSTATUS +gcoHAL_QueryCoreCount( + IN gcoHAL Hal, + IN gceHARDWARE_TYPE Type, + OUT gctUINT *Count, + OUT gctUINT_PTR ChipIDs + ); + +gceSTATUS +gcoHAL_QuerySeparated2D( + IN gcoHAL Hal + ); + +gceSTATUS +gcoHAL_QueryHybrid2D( + IN gcoHAL Hal + ); + +gceSTATUS +gcoHAL_Is3DAvailable( + IN gcoHAL Hal + ); + +/* Get pointer to gcoVG object. */ +gceSTATUS +gcoHAL_GetVGEngine( + IN gcoHAL Hal, + OUT gcoVG * Engine + ); + +gceSTATUS +gcoHAL_QueryChipLimits( + IN gcoHAL Hal, + IN gctINT32 Chip, + OUT gcsHAL_LIMITS *Limits); + +gceSTATUS +gcoHAL_QueryChipFeature( + IN gcoHAL Hal, + IN gctINT32 Chip, + IN gceFEATURE Feature); + +gceSTATUS +gcoHAL_SetCoreIndex( + IN gcoHAL Hal, + IN gctUINT32 Core + ); + +gceSTATUS +gcoHAL_GetCurrentCoreIndex( + IN gcoHAL Hal, + OUT gctUINT32 *Core + ); + +gceSTATUS +gcoHAL_ConvertCoreIndexGlobal( + IN gcoHAL Hal, + IN gceHARDWARE_TYPE Type, + IN gctUINT32 CoreCount, + IN gctUINT32 *LocalCoreIndexs, + OUT gctUINT32 *GlobalCoreIndexs + ); + +gceSTATUS +gcoHAL_ConvertCoreIndexLocal( + IN gcoHAL Hal, + IN gceHARDWARE_TYPE Type, + IN gctUINT32 CoreCount, + IN gctUINT32 *GlobalCoreIndexs, + OUT gctUINT32 *LocalCoreIndexs + ); + +gceSTATUS +gcoHAL_SelectChannel( + IN gcoHAL Hal, + IN gctBOOL Priority, + IN gctUINT32 ChannelId + ); + +gceSTATUS +gcoHAL_MCFESemaphore( + IN gctUINT32 SemaHandle, + IN gctBOOL SendSema + ); + +gceSTATUS +gcoHAL_AllocateMCFESemaphore( + OUT gctUINT32 * SemaHandle + ); + +gceSTATUS +gcoHAL_FreeMCFESemaphore( + IN gctUINT32 SemaHandle + ); + +/*----------------------------------------------------------------------------*/ +/*----- Shared Buffer --------------------------------------------------------*/ + +/* Create shared buffer. */ +gceSTATUS +gcoHAL_CreateShBuffer( + IN gctUINT32 Size, + OUT gctSHBUF * ShBuf + ); + +/* Destroy shared buffer. */ +gceSTATUS +gcoHAL_DestroyShBuffer( + IN gctSHBUF ShBuf + ); + +/* Map shared buffer to current process. */ +gceSTATUS +gcoHAL_MapShBuffer( + IN gctSHBUF ShBuf + ); + +/* Write user data to shared buffer. */ +gceSTATUS +gcoHAL_WriteShBuffer( + IN gctSHBUF ShBuf, + IN gctCONST_POINTER Data, + IN gctUINT32 ByteCount + ); + +/* Read user data from shared buffer. */ +gceSTATUS +gcoHAL_ReadShBuffer( + IN gctSHBUF ShBuf, + IN gctPOINTER Data, + IN gctUINT32 BytesCount, + OUT gctUINT32 * BytesRead + ); + +/* Config power management to be enabled or disabled. */ +gceSTATUS +gcoHAL_ConfigPowerManagement( + IN gctBOOL Enable, + OUT gctBOOL *OldValue + ); + +gceSTATUS +gcoHAL_AllocateVideoMemory( + IN gctUINT Alignment, + IN gceVIDMEM_TYPE Type, + IN gctUINT32 Flag, + IN gcePOOL Pool, + IN OUT gctSIZE_T * Bytes, + OUT gctUINT32_PTR Node + ); + +gceSTATUS +gcoHAL_LockVideoMemory( + IN gctUINT32 Node, + IN gctBOOL Cacheable, + IN gceENGINE engine, + OUT gctUINT32 * Address, + OUT gctPOINTER * Logical + ); + +gceSTATUS +gcoHAL_UnlockVideoMemory( + IN gctUINT32 Node, + IN gceVIDMEM_TYPE Type, + IN gceENGINE engine + ); + +gceSTATUS +gcoHAL_ReleaseVideoMemory( + IN gctUINT32 Node + ); + +#if gcdENABLE_3D || gcdENABLE_VG +/* Query the target capabilities. */ +gceSTATUS +gcoHAL_QueryTargetCaps( + IN gcoHAL Hal, + OUT gctUINT * MaxWidth, + OUT gctUINT * MaxHeight, + OUT gctUINT * MultiTargetCount, + OUT gctUINT * MaxSamples + ); +#endif + +gceSTATUS +gcoHAL_WrapUserMemory( + IN gcsUSER_MEMORY_DESC_PTR UserMemoryDesc, + IN gceVIDMEM_TYPE Type, + OUT gctUINT32_PTR Node + ); + +gceSTATUS +gcoHAL_QueryResetTimeStamp( + OUT gctUINT64_PTR ResetTimeStamp, + OUT gctUINT64_PTR ContextID + ); + +gceSTATUS +gcoHAL_WaitFence( + IN gctUINT32 Handle, + IN gctUINT32 TimeOut + ); + +#if gcdENABLE_2D +gceSTATUS +gcoHAL_AttachExternalMemory( + IN gcoHAL Hal, + IN gcsEXTERNAL_MEMORY_INFO * External, + OUT gctPOINTER * Handle, + OUT gctUINT32_PTR GPU2DAddress + ); + +gceSTATUS +gcoHAL_DetachExternalMemory( + IN gcoHAL Hal, + IN gctPOINTER * Handle + ); +#endif + +gceSTATUS +gcoHAL_ScheduleSignal( + IN gctSIGNAL Signal, + IN gctSIGNAL AuxSignal, + IN gctINT ProcessID, + IN gceKERNEL_WHERE FromWhere + ); + +gceSTATUS +gcoHAL_GetGraphicBufferFd( + IN gctUINT32 Node[3], + IN gctSHBUF ShBuf, + IN gctSIGNAL Signal, + OUT gctINT32 * Fd + ); + +gceSTATUS +gcoHAL_AlignToTile( + IN OUT gctUINT32 * Width, + IN OUT gctUINT32 * Height, + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format + ); + +/******************************************************************************\ +********************************** gcoOS Object ********************************* +\******************************************************************************/ +/* Lock PLS access */ +gceSTATUS +gcoOS_LockPLS( + void + ); + +/* Unlock PLS access */ +gceSTATUS +gcoOS_UnLockPLS( + void + ); + +/* Get PLS value for given key */ +gctPOINTER +gcoOS_GetPLSValue( + IN gcePLS_VALUE key + ); + +/* Set PLS value of a given key */ +void +gcoOS_SetPLSValue( + IN gcePLS_VALUE key, + OUT gctPOINTER value + ); + +/* Lock GL FE compiler access */ +gceSTATUS +gcoOS_LockGLFECompiler( + void + ); + +/* Unlock GL FE compiler access */ +gceSTATUS +gcoOS_UnLockGLFECompiler( + void + ); + +/* Lock CL FE compiler access */ +gceSTATUS +gcoOS_LockCLFECompiler( + void + ); + +/* Unlock CL FE compiler access */ +gceSTATUS +gcoOS_UnLockCLFECompiler( + void + ); + +gceSTATUS +gcoOS_GetTLS( + OUT gcsTLS_PTR * TLS + ); + +/* Copy the TLS from a source thread. */ +gceSTATUS +gcoOS_CopyTLS( + IN gcsTLS_PTR Source + ); + +/* Query the thread local storage. */ +gceSTATUS +gcoOS_QueryTLS( + OUT gcsTLS_PTR * TLS + ); + +/* Get access to driver tls. */ +gceSTATUS +gcoOS_GetDriverTLS( + IN gceTLS_KEY Key, + OUT gcsDRIVER_TLS_PTR * TLS + ); + +/* + * Set driver tls. + * May cause memory leak if 'destructor' not set. + */ +gceSTATUS +gcoOS_SetDriverTLS( + IN gceTLS_KEY Key, + IN gcsDRIVER_TLS * TLS + ); + +/* Destroy the objects associated with the current thread. */ +void +gcoOS_FreeThreadData( + void + ); + +/* Empty function for compatibility. */ +gceSTATUS +gcoOS_Construct( + IN gctPOINTER Context, + OUT gcoOS * Os + ); + +/* Empty function for compatibility. */ +gceSTATUS +gcoOS_Destroy( + IN gcoOS Os + ); + +/* Deprecated API: please use gcoHAL_GetBaseAddr() instead. +** This API was kept only for legacy BSP usage. +** +** Get the base address for the physical memory. +*/ +gceSTATUS +gcoOS_GetBaseAddress( + IN gcoOS Os, + OUT gctUINT32_PTR BaseAddress + ); + +/* Allocate memory from the heap. */ +gceSTATUS +gcoOS_Allocate( + IN gcoOS Os, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Memory + ); + +gceSTATUS +gcoOS_Realloc( + IN gcoOS Os, + IN gctSIZE_T Bytes, + IN gctSIZE_T OrgBytes, + OUT gctPOINTER * Memory + ); + +/* Get allocated memory size. */ +gceSTATUS +gcoOS_GetMemorySize( + IN gcoOS Os, + IN gctPOINTER Memory, + OUT gctSIZE_T_PTR MemorySize + ); + +/* Free allocated memory. */ +gceSTATUS +gcoOS_Free( + IN gcoOS Os, + IN gctPOINTER Memory + ); + +/* Allocate memory. */ +gceSTATUS +gcoOS_AllocateSharedMemory( + IN gcoOS Os, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Memory + ); + +/* Free memory. */ +gceSTATUS +gcoOS_FreeSharedMemory( + IN gcoOS Os, + IN gctPOINTER Memory + ); + +/* Allocate memory. */ +gceSTATUS +gcoOS_AllocateMemory( + IN gcoOS Os, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Memory + ); + +/* Realloc memory. */ +gceSTATUS +gcoOS_ReallocMemory( + IN gcoOS Os, + IN gctSIZE_T Bytes, + IN gctSIZE_T OrgBytes, + OUT gctPOINTER * Memory + ); + +/* Free memory. */ +gceSTATUS +gcoOS_FreeMemory( + IN gcoOS Os, + IN gctPOINTER Memory + ); + +/* Device I/O Control call to the kernel HAL layer. */ +gceSTATUS +gcoOS_DeviceControl( + IN gcoOS Os, + IN gctUINT32 IoControlCode, + IN gctPOINTER InputBuffer, + IN gctSIZE_T InputBufferSize, + IN gctPOINTER OutputBuffer, + IN gctSIZE_T OutputBufferSize + ); + +#define gcmOS_SAFE_FREE(os, mem) \ + gcoOS_Free(os, mem); \ + mem = gcvNULL + +#define gcmOS_SAFE_FREE_SHARED_MEMORY(os, mem) \ + gcoOS_FreeSharedMemory(os, mem); \ + mem = gcvNULL + +#define gcmkOS_SAFE_FREE(os, mem) \ + gckOS_Free(os, mem); \ + mem = gcvNULL + +#define gcdMAX_PATH 512 + +/* Open a file. */ +gceSTATUS +gcoOS_Open( + IN gcoOS Os, + IN gctCONST_STRING FileName, + IN gceFILE_MODE Mode, + OUT gctFILE * File + ); + +/* Close a file. */ +gceSTATUS +gcoOS_Close( + IN gcoOS Os, + IN gctFILE File + ); + +/* Remove a file. */ +gceSTATUS +gcoOS_Remove( + IN gcoOS Os, + IN gctCONST_STRING FileName + ); + +/* Read data from a file. */ +gceSTATUS +gcoOS_Read( + IN gcoOS Os, + IN gctFILE File, + IN gctSIZE_T ByteCount, + IN gctPOINTER Data, + OUT gctSIZE_T * ByteRead + ); + +/* Write data to a file. */ +gceSTATUS +gcoOS_Write( + IN gcoOS Os, + IN gctFILE File, + IN gctSIZE_T ByteCount, + IN gctCONST_POINTER Data + ); + +/* Flush data to a file. */ +gceSTATUS +gcoOS_Flush( + IN gcoOS Os, + IN gctFILE File + ); + +/* Close a file descriptor. */ +gceSTATUS +gcoOS_CloseFD( + IN gcoOS Os, + IN gctINT FD + ); + +/* Scan a file. */ +gceSTATUS +gcoOS_FscanfI( + IN gcoOS Os, + IN gctFILE File, + IN gctCONST_STRING Format, + OUT gctUINT *result + ); + +/* Dup file descriptor to another. */ +gceSTATUS +gcoOS_DupFD( + IN gcoOS Os, + IN gctINT FD, + OUT gctINT * FD2 + ); + +/* Lock a file. */ +gceSTATUS +gcoOS_LockFile( + IN gcoOS Os, + IN gctFILE File, + IN gctBOOL Shared, + IN gctBOOL Block + ); + +/* Unlock a file. */ +gceSTATUS +gcoOS_UnlockFile( + IN gcoOS Os, + IN gctFILE File + ); + +/* Create an endpoint for communication. */ +gceSTATUS +gcoOS_Socket( + IN gcoOS Os, + IN gctINT Domain, + IN gctINT Type, + IN gctINT Protocol, + OUT gctINT *SockFd + ); + +/* Close a socket. */ +gceSTATUS +gcoOS_CloseSocket( + IN gcoOS Os, + IN gctINT SockFd + ); + +/* Initiate a connection on a socket. */ +gceSTATUS +gcoOS_Connect( + IN gcoOS Os, + IN gctINT SockFd, + IN gctCONST_POINTER HostName, + IN gctUINT Port); + +/* Shut down part of connection on a socket. */ +gceSTATUS +gcoOS_Shutdown( + IN gcoOS Os, + IN gctINT SockFd, + IN gctINT How + ); + +/* Send a message on a socket. */ +gceSTATUS +gcoOS_Send( + IN gcoOS Os, + IN gctINT SockFd, + IN gctSIZE_T ByteCount, + IN gctCONST_POINTER Data, + IN gctINT Flags + ); + +/* Initiate a connection on a socket. */ +gceSTATUS +gcoOS_WaitForSend( + IN gcoOS Os, + IN gctINT SockFd, + IN gctINT Seconds, + IN gctINT MicroSeconds); + +/* Get environment variable value. */ +gceSTATUS +gcoOS_GetEnv( + IN gcoOS Os, + IN gctCONST_STRING VarName, + OUT gctSTRING * Value + ); + +/* Set environment variable value. */ +gceSTATUS +gcoOS_SetEnv( + IN gcoOS Os, + IN gctCONST_STRING VarName, + IN gctSTRING Value + ); + +/* Get current working directory. */ +gceSTATUS +gcoOS_GetCwd( + IN gcoOS Os, + IN gctINT SizeInBytes, + OUT gctSTRING Buffer + ); + +/* Get file status info. */ +gceSTATUS +gcoOS_Stat( + IN gcoOS Os, + IN gctCONST_STRING FileName, + OUT gctPOINTER Buffer + ); + +/* Set the current position of a file. */ +gceSTATUS +gcoOS_Seek( + IN gcoOS Os, + IN gctFILE File, + IN gctUINT32 Offset, + IN gceFILE_WHENCE Whence + ); + +/* Set the current position of a file. */ +gceSTATUS +gcoOS_SetPos( + IN gcoOS Os, + IN gctFILE File, + IN gctUINT32 Position + ); + +/* Get the current position of a file. */ +gceSTATUS +gcoOS_GetPos( + IN gcoOS Os, + IN gctFILE File, + OUT gctUINT32 * Position + ); + +/* Same as strstr. */ +gceSTATUS +gcoOS_StrStr( + IN gctCONST_STRING String, + IN gctCONST_STRING SubString, + OUT gctSTRING * Output + ); + +/* Find the last occurance of a character inside a string. */ +gceSTATUS +gcoOS_StrFindReverse( + IN gctCONST_STRING String, + IN gctINT8 Character, + OUT gctSTRING * Output + ); + +gceSTATUS +gcoOS_StrDup( + IN gcoOS Os, + IN gctCONST_STRING String, + OUT gctSTRING * Target + ); + +/* Copy a string. */ +gceSTATUS +gcoOS_StrCopySafe( + IN gctSTRING Destination, + IN gctSIZE_T DestinationSize, + IN gctCONST_STRING Source + ); + +/* Append a string. */ +gceSTATUS +gcoOS_StrCatSafe( + IN gctSTRING Destination, + IN gctSIZE_T DestinationSize, + IN gctCONST_STRING Source + ); + +/* Compare two strings. */ +gceSTATUS +gcoOS_StrCmp( + IN gctCONST_STRING String1, + IN gctCONST_STRING String2 + ); + +/* Compare characters of two strings. */ +gceSTATUS +gcoOS_StrNCmp( + IN gctCONST_STRING String1, + IN gctCONST_STRING String2, + IN gctSIZE_T Count + ); + +/* Convert string to float. */ +gceSTATUS +gcoOS_StrToFloat( + IN gctCONST_STRING String, + OUT gctFLOAT * Float + ); + +/* Convert hex string to integer. */ +gceSTATUS gcoOS_HexStrToInt( + IN gctCONST_STRING String, + OUT gctINT * Int + ); + +/* Convert hex string to float. */ +gceSTATUS +gcoOS_HexStrToFloat( + IN gctCONST_STRING String, + OUT gctFLOAT * Float + ); + +/* Convert string to integer. */ +gceSTATUS +gcoOS_StrToInt( + IN gctCONST_STRING String, + OUT gctINT * Int + ); + +gceSTATUS +gcoOS_MemCmp( + IN gctCONST_POINTER Memory1, + IN gctCONST_POINTER Memory2, + IN gctSIZE_T Bytes + ); + +gceSTATUS +gcoOS_PrintStrSafe( + OUT gctSTRING String, + IN gctSIZE_T StringSize, + IN OUT gctUINT * Offset, + IN gctCONST_STRING Format, + ... + ) +CHECK_PRINTF_FORMAT(4, 5); + +gceSTATUS +gcoOS_LoadLibrary( + IN gcoOS Os, + IN gctCONST_STRING Library, + OUT gctHANDLE * Handle + ); + +gceSTATUS +gcoOS_FreeLibrary( + IN gcoOS Os, + IN gctHANDLE Handle + ); + +gceSTATUS +gcoOS_GetProcAddress( + IN gcoOS Os, + IN gctHANDLE Handle, + IN gctCONST_STRING Name, + OUT gctPOINTER * Function + ); + +gceSTATUS +gcoOS_Compact( + IN gcoOS Os + ); + +gceSTATUS +gcoOS_AddSignalHandler ( + IN gceSignalHandlerType SignalHandlerType + ); + +#if VIVANTE_PROFILER_SYSTEM_MEMORY +gceSTATUS +gcoOS_ProfileStart( + IN gcoOS Os + ); + +gceSTATUS +gcoOS_ProfileEnd( + IN gcoOS Os, + IN gctCONST_STRING Title + ); + +gceSTATUS +gcoOS_SetProfileSetting( + IN gcoOS Os, + IN gctBOOL Enable, + IN gceProfilerMode ProfileMode, + IN gctCONST_STRING FileName + ); +#endif + +/* Get the amount of physical system memory */ +gceSTATUS +gcoOS_GetPhysicalSystemMemorySize( + OUT gctSIZE_T * PhysicalSystemMemorySize + ); + +/* Query the video memory. */ +gceSTATUS +gcoOS_QueryVideoMemory( + IN gcoOS Os, + OUT gctUINT32 * InternalPhysName, + OUT gctSIZE_T * InternalSize, + OUT gctUINT32 * ExternalPhysName, + OUT gctSIZE_T * ExternalSize, + OUT gctUINT32 * ContiguousPhysName, + OUT gctSIZE_T * ContiguousSize + ); + +gceSTATUS +gcoOS_QueryCurrentProcessName( + OUT gctSTRING Name, + IN gctSIZE_T Size + ); + + +/*----------------------------------------------------------------------------*/ +/*----- Atoms ----------------------------------------------------------------*/ + +/* Construct an atom. */ +gceSTATUS +gcoOS_AtomConstruct( + IN gcoOS Os, + OUT gcsATOM_PTR * Atom + ); + +/* Destroy an atom. */ +gceSTATUS +gcoOS_AtomDestroy( + IN gcoOS Os, + IN gcsATOM_PTR Atom + ); + +/* Get the 32-bit value protected by an atom. */ +gceSTATUS +gcoOS_AtomGet( + IN gcoOS Os, + IN gcsATOM_PTR Atom, + OUT gctINT32_PTR Value + ); + +/* Set the 32-bit value protected by an atom. */ +gceSTATUS +gcoOS_AtomSet( + IN gcoOS Os, + IN gcsATOM_PTR Atom, + IN gctINT32 Value + ); + +/* Increment an atom. */ +gceSTATUS +gcoOS_AtomIncrement( + IN gcoOS Os, + IN gcsATOM_PTR Atom, + OUT gctINT32_PTR OldValue + ); + +/* Decrement an atom. */ +gceSTATUS +gcoOS_AtomDecrement( + IN gcoOS Os, + IN gcsATOM_PTR Atom, + OUT gctINT32_PTR OldValue + ); + +gctHANDLE +gcoOS_GetCurrentProcessID( + void + ); + +gctHANDLE +gcoOS_GetCurrentThreadID( + void + ); + +/*----------------------------------------------------------------------------*/ +/*----- Time -----------------------------------------------------------------*/ + +/* Get the number of milliseconds since the system started. */ +gctUINT32 +gcoOS_GetTicks( + void + ); + +/* Get time in microseconds. */ +gceSTATUS +gcoOS_GetTime( + gctUINT64_PTR Time + ); + +/* Get CPU usage in microseconds. */ +gceSTATUS +gcoOS_GetCPUTime( + gctUINT64_PTR CPUTime + ); + +/* Get memory usage. */ +gceSTATUS +gcoOS_GetMemoryUsage( + gctUINT32_PTR MaxRSS, + gctUINT32_PTR IxRSS, + gctUINT32_PTR IdRSS, + gctUINT32_PTR IsRSS + ); + +/* Delay a number of milliseconds. */ +gceSTATUS +gcoOS_Delay(IN gcoOS Os, IN gctUINT32 Delay); + + +/* Delay a number of microseconds. */ +gceSTATUS +gcoOS_DelayUs(IN gcoOS Os, IN gctUINT32 Delay); + +/*----------------------------------------------------------------------------*/ +/*----- Threads --------------------------------------------------------------*/ + +#ifdef _WIN32 +/* Cannot include windows.h here becuase "near" and "far" + * which are used in gcsDEPTH_INFO, are defined to nothing in WinDef.h. + * So, use the real value of DWORD and WINAPI, instead. + * DWORD is unsigned long, and WINAPI is __stdcall. + * If these two are change in WinDef.h, the following two typdefs + * need to be changed, too. + */ +typedef unsigned long gctTHREAD_RETURN; +typedef unsigned long (__stdcall * gcTHREAD_ROUTINE)(void * Argument); +#else +typedef void * gctTHREAD_RETURN; +typedef void * (* gcTHREAD_ROUTINE)(void *); +#endif + +/* Create a new thread. */ +gceSTATUS +gcoOS_CreateThread( + IN gcoOS Os, + IN gcTHREAD_ROUTINE Worker, + IN gctPOINTER Argument, + OUT gctPOINTER * Thread + ); + +/* Close a thread. */ +gceSTATUS +gcoOS_CloseThread( + IN gcoOS Os, + IN gctPOINTER Thread + ); + +/*----------------------------------------------------------------------------*/ +/*----- Mutexes --------------------------------------------------------------*/ + +/* Create a new mutex. */ +gceSTATUS +gcoOS_CreateMutex( + IN gcoOS Os, + OUT gctPOINTER * Mutex + ); + +/* Delete a mutex. */ +gceSTATUS +gcoOS_DeleteMutex( + IN gcoOS Os, + IN gctPOINTER Mutex + ); + +/* Acquire a mutex. */ +gceSTATUS +gcoOS_AcquireMutex( + IN gcoOS Os, + IN gctPOINTER Mutex, + IN gctUINT32 Timeout + ); + +/* Release a mutex. */ +gceSTATUS +gcoOS_ReleaseMutex( + IN gcoOS Os, + IN gctPOINTER Mutex + ); + +/*----------------------------------------------------------------------------*/ +/*----- Signals --------------------------------------------------------------*/ + +/* Create a signal. */ +gceSTATUS +gcoOS_CreateSignal( + IN gcoOS Os, + IN gctBOOL ManualReset, + OUT gctSIGNAL * Signal + ); + +/* Destroy a signal. */ +gceSTATUS +gcoOS_DestroySignal( + IN gcoOS Os, + IN gctSIGNAL Signal + ); + +/* Signal a signal. */ +gceSTATUS +gcoOS_Signal( + IN gcoOS Os, + IN gctSIGNAL Signal, + IN gctBOOL State + ); + +/* Wait for a signal. */ +gceSTATUS +gcoOS_WaitSignal( + IN gcoOS Os, + IN gctSIGNAL Signal, + IN gctUINT32 Wait + ); + +/* Map a signal from another process */ +gceSTATUS +gcoOS_MapSignal( + IN gctSIGNAL RemoteSignal, + OUT gctSIGNAL * LocalSignal + ); + +/* Unmap a signal mapped from another process */ +gceSTATUS +gcoOS_UnmapSignal( + IN gctSIGNAL Signal + ); + +/*----------------------------------------------------------------------------*/ +/*----- Android Native Fence -------------------------------------------------*/ + +/* Create native fence. */ +gceSTATUS +gcoOS_CreateNativeFence( + IN gcoOS Os, + IN gctSIGNAL Signal, + OUT gctINT * FenceFD + ); + +/* (CPU) Wait on native fence. */ +gceSTATUS +gcoOS_ClientWaitNativeFence( + IN gcoOS Os, + IN gctINT FenceFD, + IN gctUINT32 Timeout + ); + +/* (GPU) Wait on native fence. */ +gceSTATUS +gcoOS_WaitNativeFence( + IN gcoOS Os, + IN gctINT FenceFD, + IN gctUINT32 Timeout + ); + +/*----------------------------------------------------------------------------*/ +/*----- Memory Access and Cache ----------------------------------------------*/ + +/* Write a register. */ +gceSTATUS +gcoOS_WriteRegister( + IN gcoOS Os, + IN gctUINT32 Address, + IN gctUINT32 Data + ); + +/* Read a register. */ +gceSTATUS +gcoOS_ReadRegister( + IN gcoOS Os, + IN gctUINT32 Address, + OUT gctUINT32 * Data + ); + +gceSTATUS +gcoOS_CacheClean( + IN gcoOS Os, + IN gctUINT32 Node, + IN gctPOINTER Logical, + IN gctSIZE_T Bytes + ); + +gceSTATUS +gcoOS_CacheFlush( + IN gcoOS Os, + IN gctUINT32 Node, + IN gctPOINTER Logical, + IN gctSIZE_T Bytes + ); + +gceSTATUS +gcoOS_CacheInvalidate( + IN gcoOS Os, + IN gctUINT32 Node, + IN gctPOINTER Logical, + IN gctSIZE_T Bytes + ); + +gceSTATUS +gcoOS_MemoryBarrier( + IN gcoOS Os, + IN gctPOINTER Logical + ); + +gceSTATUS +gcoOS_CPUPhysicalToGPUPhysical( + IN gctPHYS_ADDR_T CPUPhysical, + OUT gctPHYS_ADDR_T * GPUPhysical + ); + +gceSTATUS +gcoOS_QuerySystemInfo( + IN gcoOS Os, + OUT gcsSystemInfo *Info + ); + + +/*----------------------------------------------------------------------------*/ +/*----- Profile --------------------------------------------------------------*/ + +gceSTATUS +gckOS_GetProfileTick( + OUT gctUINT64_PTR Tick + ); + +gceSTATUS +gckOS_QueryProfileTickRate( + OUT gctUINT64_PTR TickRate + ); + +gctUINT32 +gckOS_ProfileToMS( + IN gctUINT64 Ticks + ); + +gceSTATUS +gcoOS_GetProfileTick( + OUT gctUINT64_PTR Tick + ); + +gceSTATUS +gcoOS_QueryProfileTickRate( + OUT gctUINT64_PTR TickRate + ); + +#if gcdSTATIC_LINK && defined(WIN32) +void gcoOS_ModuleConstructor( + void + ); + +void gcoOS_ModuleDestructor( + void + ); +#endif + +#define _gcmPROFILE_INIT(prefix, freq, start) \ + do { \ + prefix ## OS_QueryProfileTickRate(&(freq)); \ + prefix ## OS_GetProfileTick(&(start)); \ + } while (gcvFALSE) + +#define _gcmPROFILE_QUERY(prefix, start, ticks) \ + do { \ + prefix ## OS_GetProfileTick(&(ticks)); \ + (ticks) = ((ticks) > (start)) ? ((ticks) - (start)) \ + : (~0ull - (start) + (ticks) + 1); \ + } while (gcvFALSE) + +#if gcdENABLE_PROFILING +# define gcmkPROFILE_INIT(freq, start) _gcmPROFILE_INIT(gck, freq, start) +# define gcmkPROFILE_QUERY(start, ticks) _gcmPROFILE_QUERY(gck, start, ticks) +# define gcmPROFILE_INIT(freq, start) _gcmPROFILE_INIT(gco, freq, start) +# define gcmPROFILE_QUERY(start, ticks) _gcmPROFILE_QUERY(gco, start, ticks) +# define gcmPROFILE_ONLY(x) x +# define gcmPROFILE_ELSE(x) +# define gcmPROFILE_DECLARE_ONLY(x) x +# define gcmPROFILE_DECLARE_ELSE(x) typedef x +#else +# define gcmkPROFILE_INIT(start, freq) +# define gcmkPROFILE_QUERY(start, ticks) +# define gcmPROFILE_INIT(start, freq) +# define gcmPROFILE_QUERY(start, ticks) +# define gcmPROFILE_ONLY(x) +# define gcmPROFILE_ELSE(x) x +# define gcmPROFILE_DECLARE_ONLY(x) +# define gcmPROFILE_DECLARE_ELSE(x) x +#endif + +/******************************************************************************* +** gcoMATH object +*/ + +#define gcdPI 3.14159265358979323846f + +/* Kernel. */ +gctINT +gckMATH_ModuloInt( + IN gctINT X, + IN gctINT Y + ); + +/* User. */ +gctUINT32 +gcoMATH_Log2in5dot5( + IN gctINT X + ); + + +gctFLOAT +gcoMATH_UIntAsFloat( + IN gctUINT32 X + ); + +gctUINT32 +gcoMATH_FloatAsUInt( + IN gctFLOAT X + ); + +gctBOOL +gcoMATH_CompareEqualF( + IN gctFLOAT X, + IN gctFLOAT Y + ); + +gctUINT16 +gcoMATH_UInt8AsFloat16( + IN gctUINT8 X + ); + +gctUINT32 +gcoMATH_Float16ToFloat( + IN gctUINT16 In + ); + +gctUINT16 +gcoMATH_FloatToFloat16( + IN gctUINT32 In + ); + +gctUINT32 +gcoMATH_Float11ToFloat( + IN gctUINT32 In + ); + +gctUINT16 +gcoMATH_FloatToFloat11( + IN gctUINT32 In + ); + +gctUINT32 +gcoMATH_Float10ToFloat( + IN gctUINT32 In + ); + +gctUINT16 +gcoMATH_FloatToFloat10( + IN gctUINT32 In + ); + +gctUINT32 +gcoMATH_Float14ToFloat( + IN gctUINT16 In + ); + +/******************************************************************************\ +**************************** Coordinate Structures ***************************** +\******************************************************************************/ + +typedef struct _gcsPOINT +{ + gctINT32 x; + gctINT32 y; +} +gcsPOINT; + +typedef struct _gcsSIZE +{ + gctINT32 width; + gctINT32 height; +} +gcsSIZE; + +typedef struct _gcsRECT +{ + gctINT32 left; + gctINT32 top; + gctINT32 right; + gctINT32 bottom; +} +gcsRECT; + +typedef struct _gcsPIXEL +{ + union + { + struct + { + gctFLOAT r, g, b, a; + } f; + struct + { + gctINT32 r, g, b, a; + } i; + struct + { + gctUINT32 r, g, b, a; + } ui; + } color; + + gctFLOAT d; + gctUINT32 s; + +} gcsPIXEL; + +/******************************************************************************\ +********************************* gcoSURF Object ******************************** +\******************************************************************************/ + +/*----------------------------------------------------------------------------*/ +/*------------------------------- gcoSURF Common ------------------------------*/ + +/* Color format component parameters. */ +typedef struct _gcsFORMAT_COMPONENT +{ + gctUINT8 start; + gctUINT8 width; +} +gcsFORMAT_COMPONENT; + +/* RGBA color format class. */ +typedef struct _gcsFORMAT_CLASS_TYPE_RGBA +{ + gcsFORMAT_COMPONENT alpha; + gcsFORMAT_COMPONENT red; + gcsFORMAT_COMPONENT green; + gcsFORMAT_COMPONENT blue; +} +gcsFORMAT_CLASS_TYPE_RGBA; + +/* YUV color format class. */ +typedef struct _gcsFORMAT_CLASS_TYPE_YUV +{ + gcsFORMAT_COMPONENT y; + gcsFORMAT_COMPONENT u; + gcsFORMAT_COMPONENT v; +} +gcsFORMAT_CLASS_TYPE_YUV; + +/* Index color format class. */ +typedef struct _gcsFORMAT_CLASS_TYPE_INDEX +{ + gcsFORMAT_COMPONENT value; +} +gcsFORMAT_CLASS_TYPE_INDEX; + +/* Luminance color format class. */ +typedef struct _gcsFORMAT_CLASS_TYPE_LUMINANCE +{ + gcsFORMAT_COMPONENT alpha; + gcsFORMAT_COMPONENT value; +} +gcsFORMAT_CLASS_TYPE_LUMINANCE; + +/* Bump map color format class. */ +typedef struct _gcsFORMAT_CLASS_TYPE_BUMP +{ + gcsFORMAT_COMPONENT alpha; + gcsFORMAT_COMPONENT l; + gcsFORMAT_COMPONENT v; + gcsFORMAT_COMPONENT u; + gcsFORMAT_COMPONENT q; + gcsFORMAT_COMPONENT w; +} +gcsFORMAT_CLASS_TYPE_BUMP; + +/* Depth and stencil format class. */ +typedef struct _gcsFORMAT_CLASS_TYPE_DEPTH +{ + gcsFORMAT_COMPONENT depth; + gcsFORMAT_COMPONENT stencil; +} +gcsFORMAT_CLASS_TYPE_DEPTH; + +/* Intensity format class. */ +typedef struct _gcsFORMAT_CLASs_TYPE_INTENSITY +{ + gcsFORMAT_COMPONENT value; +} +gcsFORMAT_CLASs_TYPE_INTENSITY; + +typedef union _gcuPIXEL_FORMAT_CLASS +{ + gcsFORMAT_CLASS_TYPE_BUMP bump; + gcsFORMAT_CLASS_TYPE_RGBA rgba; + gcsFORMAT_CLASS_TYPE_YUV yuv; + gcsFORMAT_CLASS_TYPE_LUMINANCE lum; + gcsFORMAT_CLASS_TYPE_INDEX index; + gcsFORMAT_CLASS_TYPE_DEPTH depth; + gcsFORMAT_CLASs_TYPE_INTENSITY intensity; +} +gcuPIXEL_FORMAT_CLASS; + +/* Format parameters. */ +typedef struct _gcsSURF_FORMAT_INFO +{ + /* Name of the format */ + gctCONST_STRING formatName; + + /* Format code and class. */ + gceSURF_FORMAT format; + gceFORMAT_CLASS fmtClass; + + /* Format data type */ + gceFORMAT_DATATYPE fmtDataType; + + /* The size of one pixel in bits. */ + gctUINT8 bitsPerPixel; + + /* Pixel block dimensions. */ + gctUINT blockWidth; + gctUINT blockHeight; + + /* Pixel block size in bits. */ + gctUINT blockSize; + + /* Some formats are larger than what the GPU can support. */ + /* These formats are read in the number of layers specified. */ + gctUINT8 layers; + + /* The format is faked and software will interpret it differently + ** with HW. Most of them can't be blendable(PE) or filterable(TX). + */ + gctBOOL fakedFormat; + + /* Some formats have two neighbour pixels interleaved together. */ + /* To describe such format, set the flag to 1 and add another */ + /* like this one describing the odd pixel format. */ + gctBOOL interleaved; + + /* sRGB format. */ + gctBOOL sRGB; + + /* How GPU read from big-endian host memory */ + gceENDIAN_HINT endian; + + /* Format components. */ + gcuPIXEL_FORMAT_CLASS u; + + /* Format components. */ + gcuPIXEL_FORMAT_CLASS uOdd; + + /* Render format. */ + gceSURF_FORMAT closestRenderFormat; + /*gctCLOSEST_FORMAT dynamicClosestRenderFormat;*/ + gctUINT renderFormat; + const gceTEXTURE_SWIZZLE * pixelSwizzle; + + /* Texture format. */ + gceSURF_FORMAT closestTXFormat; + gctUINT txFormat; + const gceTEXTURE_SWIZZLE * txSwizzle; + gctBOOL txIntFilter; +} +gcsSURF_FORMAT_INFO; + +/* Frame buffer information. */ +typedef struct _gcsSURF_FRAMEBUFFER +{ + gctPOINTER logical; + gctUINT width, height; + gctINT stride; + gceSURF_FORMAT format; +} +gcsSURF_FRAMEBUFFER; + +/* Generic pixel component descriptors. */ +extern gcsFORMAT_COMPONENT gcvPIXEL_COMP_XXX8; +extern gcsFORMAT_COMPONENT gcvPIXEL_COMP_XX8X; +extern gcsFORMAT_COMPONENT gcvPIXEL_COMP_X8XX; +extern gcsFORMAT_COMPONENT gcvPIXEL_COMP_8XXX; + +/* Construct a new gcoSURF object. */ +gceSTATUS +gcoSURF_Construct( + IN gcoHAL Hal, + IN gctUINT Width, + IN gctUINT Height, + IN gctUINT Depth, + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format, + IN gcePOOL Pool, + OUT gcoSURF * Surface + ); + +/* Destroy an gcoSURF object. */ +gceSTATUS +gcoSURF_Destroy( + IN gcoSURF Surface + ); + +/* Map user-allocated surface. */ +gceSTATUS +gcoSURF_MapUserSurface( + IN gcoSURF Surface, + IN gctUINT Alignment, + IN gctPOINTER Logical, + IN gctPHYS_ADDR_T Physical + ); + +/* Wrapp surface with known logical/GPU address */ +gceSTATUS +gcoSURF_WrapSurface( + IN gcoSURF Surface, + IN gctUINT Alignment, + IN gctPOINTER Logical, + IN gctUINT32 Address + ); + + +/* Query vid mem node info. */ +gceSTATUS +gcoSURF_QueryVidMemNode( + IN gcoSURF Surface, + OUT gctUINT32 * Node, + OUT gcePOOL * Pool, + OUT gctSIZE_T_PTR Bytes, + OUT gctUINT32 * TsNode, + OUT gcePOOL * TsPool, + OUT gctSIZE_T_PTR TsBytes + ); + +/* Query vid mem Multi node info. */ +gceSTATUS +gcoSURF_QueryVidMemMultiNode( + IN gcoSURF Surface, + OUT gctUINT32 * Node, + OUT gcePOOL * Pool, + OUT gctSIZE_T_PTR Bytes, + OUT gctUINT32 * Node2, + OUT gcePOOL * Pool2, + OUT gctSIZE_T_PTR Bytes2, + OUT gctUINT32 * Node3, + OUT gcePOOL * Pool3, + OUT gctSIZE_T_PTR Bytes3 + ); + +/* Set the color type of the surface. */ +gceSTATUS +gcoSURF_SetColorType( + IN gcoSURF Surface, + IN gceSURF_COLOR_TYPE ColorType + ); + +/* Get the color type of the surface. */ +gceSTATUS +gcoSURF_GetColorType( + IN gcoSURF Surface, + OUT gceSURF_COLOR_TYPE *ColorType + ); + +/* Set the color space of the surface. */ +gceSTATUS +gcoSURF_SetColorSpace( + IN gcoSURF Surface, + IN gceSURF_COLOR_SPACE ColorSpace + ); + +/* Get the color space of the surface. */ +gceSTATUS +gcoSURF_GetColorSpace( + IN gcoSURF Surface, + OUT gceSURF_COLOR_SPACE *ColorSpace + ); + + +/* Set the surface ration angle. */ +gceSTATUS +gcoSURF_SetRotation( + IN gcoSURF Surface, + IN gceSURF_ROTATION Rotation + ); + +gceSTATUS +gcoSURF_IsValid( + IN gcoSURF Surface + ); + +#if gcdENABLE_3D +/* Verify and return the state of the tile status mechanism. */ +gceSTATUS +gcoSURF_IsTileStatusSupported( + IN gcoSURF Surface + ); + +/* Verify if surface has tile status enabled. */ +gceSTATUS +gcoSURF_IsTileStatusEnabled( + IN gcsSURF_VIEW *SurfView + ); + +/* Verify if surface is compressed. */ +gceSTATUS +gcoSURF_IsCompressed( + IN gcsSURF_VIEW *SurfView + ); + +/* Enable tile status for the specified surface on zero slot. */ +gceSTATUS +gcoSURF_EnableTileStatus( + IN gcsSURF_VIEW *Surface + ); + +/* Enable tile status for the specified surface on specified slot. */ +gceSTATUS +gcoSURF_EnableTileStatusEx( + IN gcsSURF_VIEW *surfView, + IN gctUINT RtIndex + ); + +/* Disable tile status for the specified surface. */ +gceSTATUS +gcoSURF_DisableTileStatus( + IN gcsSURF_VIEW *SurfView, + IN gctBOOL Decompress + ); + +/* Flush tile status cache for the specified surface. */ +gceSTATUS +gcoSURF_FlushTileStatus( + IN gcsSURF_VIEW *SurfView, + IN gctBOOL Decompress + ); +#endif /* gcdENABLE_3D */ + +/* Get surface size. */ +gceSTATUS +gcoSURF_GetSize( + IN gcoSURF Surface, + OUT gctUINT * Width, + OUT gctUINT * Height, + OUT gctUINT * Depth + ); + +/* Get surface information */ +gceSTATUS +gcoSURF_GetInfo( + IN gcoSURF Surface, + IN gceSURF_INFO_TYPE InfoType, + IN OUT gctINT32 *Value + ); + +/* Get surface aligned sizes. */ +gceSTATUS +gcoSURF_GetAlignedSize( + IN gcoSURF Surface, + OUT gctUINT * Width, + OUT gctUINT * Height, + OUT gctINT * Stride + ); + +/* Get alignments. */ +gceSTATUS +gcoSURF_GetAlignment( + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format, + OUT gctUINT * AddressAlignment, + OUT gctUINT * XAlignment, + OUT gctUINT * YAlignment + ); + +gceSTATUS +gcoSURF_AlignResolveRect( + IN gcoSURF Surf, + IN gcsPOINT_PTR RectOrigin, + IN gcsPOINT_PTR RectSize, + OUT gcsPOINT_PTR AlignedOrigin, + OUT gcsPOINT_PTR AlignedSize + ); + +/* Get surface type and format. */ +gceSTATUS +gcoSURF_GetFormat( + IN gcoSURF Surface, + OUT OPTIONAL gceSURF_TYPE * Type, + OUT OPTIONAL gceSURF_FORMAT * Format + ); + +/* Get surface information */ +gceSTATUS +gcoSURF_GetFormatInfo( + IN gcoSURF Surface, + OUT gcsSURF_FORMAT_INFO_PTR * formatInfo + ); + +/* Get Surface pack format */ +gceSTATUS +gcoSURF_GetPackedFormat( + IN gcoSURF Surface, + OUT gceSURF_FORMAT * Format + ); + +/* Get surface tiling. */ +gceSTATUS +gcoSURF_GetTiling( + IN gcoSURF Surface, + OUT gceTILING * Tiling + ); + +/* Get bottom buffer offset bytes. */ +gceSTATUS +gcoSURF_GetBottomBufferOffset( + IN gcoSURF Surface, + OUT gctUINT_PTR BottomBufferOffset + ); + +/* Lock the surface. */ +gceSTATUS +gcoSURF_Lock( + IN gcoSURF Surface, + IN OUT gctUINT32 * Address, + IN OUT gctPOINTER * Memory + ); + +/* Unlock the surface. */ +gceSTATUS +gcoSURF_Unlock( + IN gcoSURF Surface, + IN gctPOINTER Memory + ); + +/*. Query surface flags.*/ +gceSTATUS +gcoSURF_QueryFlags( + IN gcoSURF Surface, + IN gceSURF_FLAG Flag + ); + +gceSTATUS +gcoSURF_QueryHints( + IN gcoSURF Surface, + IN gceSURF_TYPE Hints + ); + +/* Return pixel format parameters; Info is required to be a pointer to an + * array of at least two items because some formats have up to two records + * of description. */ +gceSTATUS +gcoSURF_QueryFormat( + IN gceSURF_FORMAT Format, + OUT gcsSURF_FORMAT_INFO_PTR * Info + ); + +/* Compute the color pixel mask. */ +gceSTATUS +gcoSURF_ComputeColorMask( + IN gcsSURF_FORMAT_INFO_PTR Format, + OUT gctUINT32_PTR ColorMask + ); + +/* Flush the surface. */ +gceSTATUS +gcoSURF_Flush( + IN gcoSURF Surface + ); + +/* Fill surface from it's tile status buffer. */ +gceSTATUS +gcoSURF_FillFromTile( + IN gcsSURF_VIEW *SurView + ); + +/* Fill surface with a value. */ +gceSTATUS +gcoSURF_Fill( + IN gcoSURF Surface, + IN gcsPOINT_PTR Origin, + IN gcsSIZE_PTR Size, + IN gctUINT32 Value, + IN gctUINT32 Mask + ); + +/* Alpha blend two surfaces together. */ +gceSTATUS +gcoSURF_Blend( + IN gcoSURF SrcSurf, + IN gcoSURF DstSurf, + IN gcsPOINT_PTR SrcOrigin, + IN gcsPOINT_PTR DstOrigin, + IN gcsSIZE_PTR Size, + IN gceSURF_BLEND_MODE Mode + ); + +/* Create a new gcoSURF wrapper object. */ +gceSTATUS +gcoSURF_ConstructWrapper( + IN gcoHAL Hal, + OUT gcoSURF * Surface + ); + +/* Set surface flags.*/ +gceSTATUS +gcoSURF_SetFlags( + IN gcoSURF Surface, + IN gceSURF_FLAG Flag, + IN gctBOOL Value + ); + +/* Set the underlying buffer for the surface wrapper. */ +gceSTATUS +gcoSURF_SetBuffer( + IN gcoSURF Surface, + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format, + IN gctUINT Stride, + IN gctPOINTER Logical, + IN gctUINT64 Physical + ); + +/* Set the size of the surface in pixels and map the underlying buffer. */ +gceSTATUS +gcoSURF_SetWindow( + IN gcoSURF Surface, + IN gctUINT X, + IN gctUINT Y, + IN gctUINT Width, + IN gctUINT Height + ); + +/* Set the size of the surface in pixels and map the underlying buffer. */ +gceSTATUS +gcoSURF_SetImage( + IN gcoSURF Surface, + IN gctUINT X, + IN gctUINT Y, + IN gctUINT Width, + IN gctUINT Height, + IN gctUINT Depth + ); + +/* Set width/height alignment of the surface directly and calculate stride/size. This is only for dri backend now. Please be careful before use. */ +gceSTATUS +gcoSURF_SetAlignment( + IN gcoSURF Surface, + IN gctUINT Width, + IN gctUINT Height + ); + +/* Increase reference count of the surface. */ +gceSTATUS +gcoSURF_ReferenceSurface( + IN gcoSURF Surface + ); + +/* Get surface reference count. */ +gceSTATUS +gcoSURF_QueryReferenceCount( + IN gcoSURF Surface, + OUT gctINT32 * ReferenceCount + ); + +/* Set surface orientation. */ +gceSTATUS +gcoSURF_SetOrientation( + IN gcoSURF Surface, + IN gceORIENTATION Orientation + ); + +/* Query surface orientation. */ +gceSTATUS +gcoSURF_QueryOrientation( + IN gcoSURF Surface, + OUT gceORIENTATION * Orientation + ); + +gceSTATUS +gcoSURF_NODE_Cache( + IN gcsSURF_NODE_PTR Node, + IN gctPOINTER Logical, + IN gctSIZE_T Bytes, + IN gceCACHEOPERATION Operation + ); + +gceSTATUS +gcsSURF_NODE_SetHardwareAddress( + IN gcsSURF_NODE_PTR Node, + IN gctUINT32 Address + ); + +gceSTATUS +gcsSURF_NODE_GetHardwareAddress( + IN gcsSURF_NODE_PTR Node, + OUT gctUINT32_PTR Physical, + OUT gctUINT32_PTR Physical2, + OUT gctUINT32_PTR Physical3, + OUT gctUINT32_PTR PhysicalBottom + ); + +gctUINT32 +gcsSURF_NODE_GetHWAddress( + IN gcsSURF_NODE_PTR Node + ); + +/* Lock and unlock surface node */ +gceSTATUS +gcoSURF_LockNode( + IN gcsSURF_NODE_PTR Node, + OUT gctUINT32 * Address, + OUT gctPOINTER * Memory + ); + +gceSTATUS +gcoSURF_UnLockNode( + IN gcsSURF_NODE_PTR Node, + IN gceSURF_TYPE Type + ); + +/* Perform CPU cache operation on surface node */ +gceSTATUS +gcoSURF_NODE_CPUCacheOperation( + IN gcsSURF_NODE_PTR Node, + IN gceSURF_TYPE Type, + IN gctSIZE_T Offset, + IN gctSIZE_T Length, + IN gceCACHEOPERATION Operation + ); + +/* Perform CPU cache operation on surface */ +gceSTATUS +gcoSURF_CPUCacheOperation( + IN gcoSURF Surface, + IN gceCACHEOPERATION Operation + ); + + +gceSTATUS +gcoSURF_Swap( + IN gcoSURF Surface1, + IN gcoSURF Surface2 + ); + +gceSTATUS +gcoSURF_ResetSurWH( + IN gcoSURF Surface, + IN gctUINT oriw, + IN gctUINT orih, + IN gctUINT alignw, + IN gctUINT alignh, + IN gceSURF_FORMAT fmt +); + +/* Update surface timestamp. */ +gceSTATUS +gcoSURF_UpdateTimeStamp( + IN gcoSURF Surface + ); + +/* Query surface current timestamp. */ +gceSTATUS +gcoSURF_QueryTimeStamp( + IN gcoSURF Surface, + OUT gctUINT64 * TimeStamp + ); + +/* + * Allocate shared buffer for this surface, so that + * surface states can be shared across processes. + */ +gceSTATUS +gcoSURF_AllocShBuffer( + IN gcoSURF Surface, + OUT gctSHBUF * ShBuf + ); + +/* Bind shared buffer to this surface */ +gceSTATUS +gcoSURF_BindShBuffer( + IN gcoSURF Surface, + IN gctSHBUF ShBuf + ); + +/* Push surface shared states to shared buffer. */ +gceSTATUS +gcoSURF_PushSharedInfo( + IN gcoSURF Surface + ); + +/* Pop shared states from shared buffer. */ +gceSTATUS +gcoSURF_PopSharedInfo( + IN gcoSURF Surface + ); + +#if (gcdENABLE_3D || gcdENABLE_VG) +/* Copy surface. */ +gceSTATUS +gcoSURF_Copy( + IN gcoSURF Surface, + IN gcoSURF Source + ); + +/* Set number of samples for a gcoSURF object. */ +gceSTATUS +gcoSURF_SetSamples( + IN gcoSURF Surface, + IN gctUINT Samples + ); + +/* Get the number of samples per pixel. */ +gceSTATUS +gcoSURF_GetSamples( + IN gcoSURF Surface, + OUT gctUINT_PTR Samples + ); + +/* Append tile status buffer to user pool surface. */ +gceSTATUS +gcoSURF_AppendTileStatus( + IN gcoSURF Surface + ); +#endif + +gceSTATUS +gcoSURF_WrapUserMemory( + IN gcoHAL Hal, + IN gctUINT Width, + IN gctUINT Height, + IN gctUINT Stride, + IN gctUINT Depth, + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format, + IN gctUINT32 Handle, + IN gctUINT32 Flag, + OUT gcoSURF * Surface + ); + +gceSTATUS +gcoSURF_WrapUserMultiBuffer( + IN gcoHAL Hal, + IN gctUINT Width, + IN gctUINT Height, + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format, + IN gctUINT Stride[3], + IN gctUINT32 Handle[3], + IN gctUINT BufferOffset[3], + IN gctUINT32 Flag, + OUT gcoSURF * Surface + ); + +gceSTATUS +gcoSURF_UpdateMetadata( + IN gcoSURF Surface, + IN gctINT TsFD + ); + +#define MAX_SURF_MIX_SRC_NUM 64 +gceSTATUS +gcoSURF_MixSurfacesCPU( + IN gcoSURF TargetSurface, + IN gctUINT TargetSliceIndex, + IN gcoSURF *SourceSurface, + IN gctUINT *SourceSliceIndices, + IN gctFLOAT *Weights, + IN gctINT Count + ); + +/******************************************************************************\ +******************************* Hash Structure ****************************** +\******************************************************************************/ + +typedef struct _gcsHASH_MD5CTX +{ + gctBOOL bigEndian; + gctSIZE_T bytes; /* Number of bytes processed */ + gctUINT32 states[4]; + gctUINT8 buffer[64]; +} gcsHASH_MD5CTX; + +void gcsHASH_MD5Init( + gcsHASH_MD5CTX *ctx + ); +void gcsHASH_MD5Update( + gcsHASH_MD5CTX *ctx, + const void *data, + gctSIZE_T bytes + ); +void gcsHASH_MD5Final( + gcsHASH_MD5CTX *ctx, + gctUINT8 digest[16] + ); + + +/******************************************************************************\ +******************************* gcsRECT Structure ****************************** +\******************************************************************************/ + +/* Initialize rectangle structure. */ +gceSTATUS +gcsRECT_Set( + OUT gcsRECT_PTR Rect, + IN gctINT32 Left, + IN gctINT32 Top, + IN gctINT32 Right, + IN gctINT32 Bottom + ); + +/* Return the width of the rectangle. */ +gceSTATUS +gcsRECT_Width( + IN gcsRECT_PTR Rect, + OUT gctINT32 * Width + ); + +/* Return the height of the rectangle. */ +gceSTATUS +gcsRECT_Height( + IN gcsRECT_PTR Rect, + OUT gctINT32 * Height + ); + +/* Ensure that top left corner is to the left and above the right bottom. */ +gceSTATUS +gcsRECT_Normalize( + IN OUT gcsRECT_PTR Rect + ); + +/* Compare two rectangles. */ +gceSTATUS +gcsRECT_IsEqual( + IN gcsRECT_PTR Rect1, + IN gcsRECT_PTR Rect2, + OUT gctBOOL * Equal + ); + +/* Compare the sizes of two rectangles. */ +gceSTATUS +gcsRECT_IsOfEqualSize( + IN gcsRECT_PTR Rect1, + IN gcsRECT_PTR Rect2, + OUT gctBOOL * EqualSize + ); + +gceSTATUS +gcsRECT_RelativeRotation( + IN gceSURF_ROTATION Orientation, + IN OUT gceSURF_ROTATION *Relation); + +gceSTATUS + +gcsRECT_Rotate( + + IN OUT gcsRECT_PTR Rect, + + IN gceSURF_ROTATION Rotation, + + IN gceSURF_ROTATION toRotation, + + IN gctINT32 SurfaceWidth, + + IN gctINT32 SurfaceHeight + + ); + +/******************************************************************************\ +**************************** gcsBOUNDARY Structure ***************************** +\******************************************************************************/ + +typedef struct _gcsBOUNDARY +{ + gctINT x; + gctINT y; + gctINT width; + gctINT height; +} +gcsBOUNDARY; + +/******************************************************************************\ +********************************* gcoHEAP Object ******************************** +\******************************************************************************/ + +typedef struct _gcoHEAP * gcoHEAP; + +/* Construct a new gcoHEAP object. */ +gceSTATUS +gcoHEAP_Construct( + IN gcoOS Os, + IN gctSIZE_T AllocationSize, + OUT gcoHEAP * Heap + ); + +/* Destroy an gcoHEAP object. */ +gceSTATUS +gcoHEAP_Destroy( + IN gcoHEAP Heap + ); + +/* Allocate memory. */ +gceSTATUS +gcoHEAP_Allocate( + IN gcoHEAP Heap, + IN gctSIZE_T Bytes, + OUT gctPOINTER * Node + ); + +gceSTATUS +gcoHEAP_GetMemorySize( + IN gcoHEAP Heap, + IN gctPOINTER Memory, + OUT gctSIZE_T_PTR MemorySize + ); + +/* Free memory. */ +gceSTATUS +gcoHEAP_Free( + IN gcoHEAP Heap, + IN gctPOINTER Node + ); + +#if (VIVANTE_PROFILER_SYSTEM_MEMORY || gcdDEBUG) +/* Profile the heap. */ +gceSTATUS +gcoHEAP_ProfileStart( + IN gcoHEAP Heap + ); + +gceSTATUS +gcoHEAP_ProfileEnd( + IN gcoHEAP Heap, + IN gctCONST_STRING Title + ); +#endif + +/******************************************************************************\ +******************************* Debugging Macros ******************************* +\******************************************************************************/ + +void +gcoOS_SetDebugLevel( + IN gctUINT32 Level + ); + +void +gcoOS_GetDebugLevel( + OUT gctUINT32_PTR DebugLevel + ); + +void +gcoOS_GetDebugZone( + IN gctUINT32 Zone, + OUT gctUINT32_PTR DebugZone + ); + +void +gcoOS_SetDebugZone( + IN gctUINT32 Zone + ); + +void +gcoOS_SetDebugFile( + IN gctCONST_STRING FileName + ); + +void +gcoOS_EnableDebugDump( + IN gctBOOL Enable + ); + +gctFILE +gcoOS_ReplaceDebugFile( + IN gctFILE fp + ); + +/******************************************************************************* +** +** gcmFATAL +** +** Print a message to the debugger and execute a break point. +** +** ARGUMENTS: +** +** message Message. +** ... Optional arguments. +*/ + +void +gckOS_DebugFatal( + IN gctCONST_STRING Message, + ... + ); + +void +gcoOS_DebugFatal( + IN gctCONST_STRING Message, + ... + ); + +#if gcmIS_DEBUG(gcdDEBUG_FATAL) +# define gcmFATAL gcoOS_DebugFatal +# define gcmkFATAL gckOS_DebugFatal +#elif gcdHAS_ELLIPSIS +# define gcmFATAL(...) +# define gcmkFATAL(...) +#else + gcmINLINE static void + __dummy_fatal( + IN gctCONST_STRING Message, + ... + ) + { + } +# define gcmFATAL __dummy_fatal +# define gcmkFATAL __dummy_fatal +#endif + +#define gcmENUM2TEXT(e) case e: return #e + +/******************************************************************************* +** +** gcmTRACE +** +** Print a message to the debugfer if the correct level has been set. In +** retail mode this macro does nothing. +** +** ARGUMENTS: +** +** level Level of message. +** message Message. +** ... Optional arguments. +*/ +#define gcvLEVEL_NONE -1 +#define gcvLEVEL_ERROR 0 +#define gcvLEVEL_WARNING 1 +#define gcvLEVEL_INFO 2 +#define gcvLEVEL_VERBOSE 3 + +void +gckOS_DebugTrace( + IN gctUINT32 Level, + IN gctCONST_STRING Message, + ... + ) +CHECK_PRINTF_FORMAT(2, 3); + +void +gcoOS_DebugTrace( + IN gctUINT32 Level, + IN gctCONST_STRING Message, + ... + ) +CHECK_PRINTF_FORMAT(2, 3); + +#if gcmIS_DEBUG(gcdDEBUG_TRACE) +# define gcmTRACE gcoOS_DebugTrace +# define gcmkTRACE gckOS_DebugTrace +# define gcmkTRACE_N(Level, ArgumentSize, ...) \ + gckOS_DebugTrace(Level, __VA_ARGS__) +#elif gcdHAS_ELLIPSIS +# define gcmTRACE(...) +# define gcmkTRACE(...) +# define gcmkTRACE_N(...) +#else + gcmINLINE static void + __dummy_trace( + IN gctUINT32 Level, + IN gctCONST_STRING Message, + ... + ) + { + } + + gcmINLINE static void + __dummy_trace_n( + IN gctUINT32 Level, + IN gctUINT ArgumentSize, + IN gctCONST_STRING Message, + ... + ) + { + } + +# define gcmTRACE __dummy_trace +# define gcmkTRACE __dummy_trace +# define gcmkTRACE_N __dummy_trace_n +#endif + +/******************************************************************************* +** +** gcmTRACE_ZONE +** +** Print a message to the debugger if the correct level and zone has been +** set. In retail mode this macro does nothing. +** +** ARGUMENTS: +** +** Level Level of message. +** Zone Zone of message. +** Message Message. +** ... Optional arguments. +*/ + +void +gckOS_DebugTraceZone( + IN gctUINT32 Level, + IN gctUINT32 Zone, + IN gctCONST_STRING Message, + ... + ); + +void +gcoOS_DebugTraceZone( + IN gctUINT32 Level, + IN gctUINT32 Zone, + IN gctCONST_STRING Message, + ... + ); + +#if gcmIS_DEBUG(gcdDEBUG_TRACE) +# define gcmTRACE_ZONE gcoOS_DebugTraceZone +# define gcmkTRACE_ZONE gckOS_DebugTraceZone +# define gcmkTRACE_ZONE_N(Level, Zone, ArgumentSize, ...) \ + gckOS_DebugTraceZone(Level, Zone, __VA_ARGS__) +#elif gcdHAS_ELLIPSIS +# define gcmTRACE_ZONE(...) +# define gcmkTRACE_ZONE(...) +# define gcmkTRACE_ZONE_N(...) +#else + gcmINLINE static void + __dummy_trace_zone( + IN gctUINT32 Level, + IN gctUINT32 Zone, + IN gctCONST_STRING Message, + ... + ) + { + } + + gcmINLINE static void + __dummy_trace_zone_n( + IN gctUINT32 Level, + IN gctUINT32 Zone, + IN gctUINT ArgumentSize, + IN gctCONST_STRING Message, + ... + ) + { + } + +# define gcmTRACE_ZONE __dummy_trace_zone +# define gcmkTRACE_ZONE __dummy_trace_zone +# define gcmkTRACE_ZONE_N __dummy_trace_zone_n +#endif + + +/******************************************************************************* +** +** gcmDEBUG_ONLY +** +** Execute a statement or function only in DEBUG mode. +** +** ARGUMENTS: +** +** f Statement or function to execute. +*/ +#if gcmIS_DEBUG(gcdDEBUG_CODE) +# define gcmDEBUG_ONLY(f) f +#else +# define gcmDEBUG_ONLY(f) +#endif + + +/******************************************************************************* +** +** gcmSTACK_PUSH +** gcmSTACK_POP +** gcmSTACK_DUMP +** gcmSTACK_REMOVE +** +** Push or pop a function with entry arguments on the trace stack. +** +** ARGUMENTS: +** +** Function Name of function. +** Line Line number. +** Text Optional text. +** ... Optional arguments for text. +** +** Thread Thread id. +*/ +void +gcoOS_StackPush( + IN gctINT8_PTR Identity, + IN gctCONST_STRING Function, + IN gctINT Line, + IN gctCONST_STRING Text, + ... + ); + +void +gcoOS_StackPop( + IN gctINT8_PTR Identity, + IN gctCONST_STRING Function + ); + +void +gcoOS_StackDump( + void); + +void +gcoOS_StackRemove( + IN gctHANDLE Thread + ); + +#if gcmIS_DEBUG(gcdDEBUG_STACK) +# define gcmSTACK_PUSH gcoOS_StackPush +# define gcmSTACK_POP gcoOS_StackPop +# define gcmSTACK_DUMP gcoOS_StackDump +# define gcmSTACK_REMOVE gcoOS_StackRemove +#elif gcdHAS_ELLIPSIS +# define gcmSTACK_PUSH(...) +# define gcmSTACK_POP(...) +# define gcmSTACK_DUMP() +# define gcmSTACK_REMOVE(...) +#else + gcmINLINE static void + __dummy_stack_push( + IN gctCONST_STRING Function, + IN gctINT Line, + IN gctCONST_STRING Text, + ... + ) + { + } + + gcmINLINE static void + __dummy_stack_pop( + IN gctINT8_PTR Identity, + IN gctCONST_STRING Function + ); + + gcmINLINE static void + __dummy_stack_remove( + IN gctHANDLE Thread + ); + +# define gcmSTACK_PUSH __dummy_stack_push +# define gcmSTACK_POP(a,b) __dummy_stack_pop +# define gcmSTACK_DUMP() +# define gcmSTACK_REMOVE(a) __dummy_stack_remove +#endif + + +/******************************************************************************* +** +** gcmBINARY_TRACE +** +** Push or pop a function with entry arguments on the trace stack. +** +** ARGUMENTS: +** +** Function Name of function +** Line Line number +** Text Optional text +** ... Optional arguments for text. +*/ +void +gcoOS_BinaryTrace( + IN gctCONST_STRING Function, + IN gctINT Line, + IN gctCONST_STRING Text OPTIONAL, + ... + ); + +void +gckOS_BinaryTrace( + IN gctCONST_STRING Function, + IN gctINT Line, + IN gctCONST_STRING Text OPTIONAL, + ... + ); + +#if gcdBINARY_TRACE +# define gcmBINARY_TRACE gcoOS_BinaryTrace +# define gcmkBINARY_TRACE gckOS_BinaryTrace +#elif gcdHAS_ELLIPSIS +# define gcmBINARY_TRACE(Function, Line, Text, ...) +# define gcmkBINARY_TRACE(Function, Line, Text, ...) +#else + gcmINLINE static void + __dummy_binary_trace( + IN gctCONST_STRING Function, + IN gctINT Line, + IN gctCONST_STRING Text, + ) + { + } + +# define gcmBINARY_TRACE __dummy_binary_trace +# define gcmkBINARY_TRACE __dummy_binary_trace +#endif + + +/******************************************************************************* +** +** gcmSYSTRACE_BEGIN +** gcmSYSTRACE_END +** +** Systrace is a performance tunning tool on linux. +** +** ARGUMENTS: +** +** FuncName Function name +** Zone Systrace zone. Only specified zones are traced. +*/ + +void +gcoOS_SysTraceBegin( + IN gctUINT32 Zone, + IN gctCONST_STRING FuncName + ); + +void +gcoOS_SysTraceEnd( + IN gctUINT32 Zone + ); + +#if defined(LINUX) && gcdSYSTRACE +# define gcmSYSTRACE_BEGIN gcoOS_SysTraceBegin +# define gcmSYSTRACE_END gcoOS_SysTraceEnd +#elif gcdHAS_ELLIPSIS +# define gcmSYSTRACE_BEGIN(...) +# define gcmSYSTRACE_END(...) +#else + gcmINLINE static void + __dummy_systrace_begin( + IN gctUINT32 Zone, + IN gctCONST_STRING FuncName + ) + { + } + + gcmINLINE static void + __dummy_systrace_end( + IN gctUINT32 Zone + ) + { + } + +# define gcmSYSTRACE_BEGIN __dummy_systrace_begin +# define gcmSYSTRACE_END __dummy_systrace_end +#endif + + +/******************************************************************************\ +******************************** Logging Macros ******************************** +\******************************************************************************/ + +#define gcdHEADER_LEVEL gcvLEVEL_VERBOSE + +/* Always enable header/footer when systrace build is on */ +#if defined(LINUX) && gcdSYSTRACE +#undef gcdEMPTY_HEADER_FOOTER +#endif + +#ifndef gcdEMPTY_HEADER_FOOTER +#define gcdEMPTY_HEADER_FOOTER 0 +#endif + +#if gcdENABLE_PROFILING +void +gcoOS_ProfileDB( + IN gctCONST_STRING Function, + IN OUT gctBOOL_PTR Initialized + ); + +#define gcmHEADER() \ + gctINT8 __user__ = 1; \ + static gctBOOL __profile__initialized__ = gcvFALSE; \ + gcmSTACK_PUSH(&__user__, __FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcoOS_ProfileDB(__FUNCTION__, &__profile__initialized__) + +#define gcmHEADER_ARG(...) \ + gctINT8 __user__ = 1; \ + static gctBOOL __profile__initialized__ = gcvFALSE; \ + gcmSTACK_PUSH(&__user__, __FUNCTION__, __LINE__, Text, __VA_ARGS__); \ + gcoOS_ProfileDB(__FUNCTION__, &__profile__initialized__) + +#define gcmFOOTER() \ + gcmSTACK_POP(&__user__, __FUNCTION__); \ + gcoOS_ProfileDB(__FUNCTION__, gcvNULL) + +#define gcmFOOTER_NO() \ + gcmSTACK_POP(&__user__, __FUNCTION__); \ + gcoOS_ProfileDB(__FUNCTION__, gcvNULL) + +#define gcmFOOTER_ARG(...) \ + gcmSTACK_POP(&__user__, __FUNCTION__); \ + gcoOS_ProfileDB(__FUNCTION__, gcvNULL) + +#define gcmFOOTER_KILL() \ + gcmSTACK_POP(&__user__, __FUNCTION__); \ + gcoOS_ProfileDB(gcvNULL, gcvNULL) + +#else /* !gcdENABLE_PROFILING */ + +#if gcdEMPTY_HEADER_FOOTER +# define gcmHEADER() +#elif gcdHAS_ELLIPSIS +#define gcmHEADER() \ + gctINT8 __user__ = 1; \ + gctINT8_PTR __user_ptr__ = &__user__; \ + gcmSTACK_PUSH(__user_ptr__, __FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmSYSTRACE_BEGIN(_GC_OBJ_ZONE, __FUNCTION__); \ + gcmBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "++%s(%d)", __FUNCTION__, __LINE__) +#else + gcmINLINE static void + __dummy_header(void) + { + } +# define gcmHEADER __dummy_header +#endif + +#if gcdHAS_ELLIPSIS +#if gcdEMPTY_HEADER_FOOTER +# define gcmHEADER_ARG(Text, ...) +#else +# define gcmHEADER_ARG(Text, ...) \ + gctINT8 __user__ = 1; \ + gctINT8_PTR __user_ptr__ = &__user__; \ + gcmSTACK_PUSH(__user_ptr__, __FUNCTION__, __LINE__, Text, __VA_ARGS__); \ + gcmSYSTRACE_BEGIN(_GC_OBJ_ZONE, __FUNCTION__); \ + gcmBINARY_TRACE(__FUNCTION__, __LINE__, Text, __VA_ARGS__); \ + gcmTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "++%s(%d): " Text, __FUNCTION__, __LINE__, __VA_ARGS__) +#endif +#else + gcmINLINE static void + __dummy_header_arg( + IN gctCONST_STRING Text, + ... + ) + { + } +# define gcmHEADER_ARG __dummy_header_arg +#endif + +#if gcdEMPTY_HEADER_FOOTER +# define gcmFOOTER() +#elif gcdHAS_ELLIPSIS +# define gcmFOOTER() \ + gcmSTACK_POP(__user_ptr__, __FUNCTION__); \ + gcmSYSTRACE_END(_GC_OBJ_ZONE); \ + gcmBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d): status=%d(%s)", \ + __FUNCTION__, __LINE__, \ + status, gcoOS_DebugStatus2Name(status)); \ + *__user_ptr__ -= 1 +#else + gcmINLINE static void + __dummy_footer(void) + { + } +# define gcmFOOTER __dummy_footer +#endif + +#if gcdEMPTY_HEADER_FOOTER +# define gcmFOOTER_NO() +#elif gcdHAS_ELLIPSIS +#define gcmFOOTER_NO() \ + gcmSTACK_POP(__user_ptr__, __FUNCTION__); \ + gcmSYSTRACE_END(_GC_OBJ_ZONE); \ + gcmBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d)", __FUNCTION__, __LINE__); \ + *__user_ptr__ -= 1 +#else + gcmINLINE static void + __dummy_footer_no(void) + { + } +# define gcmFOOTER_NO __dummy_footer_no +#endif + +#if gcdEMPTY_HEADER_FOOTER +# define gcmFOOTER_KILL() +#elif gcdHAS_ELLIPSIS +#define gcmFOOTER_KILL() \ + gcmSTACK_POP(__user_ptr__, __FUNCTION__); \ + gcmSYSTRACE_END(_GC_OBJ_ZONE); \ + gcmBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d)", __FUNCTION__, __LINE__); \ + *__user_ptr__ -= 1 +#else + gcmINLINE static void + __dummy_footer_kill(void) + { + } +# define gcmFOOTER_KILL __dummy_footer_kill +#endif + +#if gcdHAS_ELLIPSIS +#if gcdEMPTY_HEADER_FOOTER +# define gcmFOOTER_ARG(Text, ...) +#else +# define gcmFOOTER_ARG(Text, ...) \ + gcmSTACK_POP(__user_ptr__, __FUNCTION__); \ + gcmSYSTRACE_END(_GC_OBJ_ZONE); \ + gcmBINARY_TRACE(__FUNCTION__, __LINE__, Text, __VA_ARGS__); \ + gcmTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d): " Text, __FUNCTION__, __LINE__, __VA_ARGS__); \ + *__user_ptr__ -= 1 +#endif +#else + gcmINLINE static void + __dummy_footer_arg( + IN gctCONST_STRING Text, + ... + ) + { + } +# define gcmFOOTER_ARG __dummy_footer_arg +#endif + +#endif /* gcdENABLE_PROFILING */ + +#if gcdHAS_ELLIPSIS +#define gcmkHEADER() \ + gctINT8 __kernel__ = 1; \ + gctINT8_PTR __kernel_ptr__ = &__kernel__; \ + gcmkBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmkTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "++%s(%d)", __FUNCTION__, __LINE__) +#else + gcmINLINE static void + __dummy_kheader(void) + { + } +# define gcmkHEADER __dummy_kheader +#endif + +#if gcdHAS_ELLIPSIS +# define gcmkHEADER_ARG(Text, ...) \ + gctINT8 __kernel__ = 1; \ + gctINT8_PTR __kernel_ptr__ = &__kernel__; \ + gcmkBINARY_TRACE(__FUNCTION__, __LINE__, Text, __VA_ARGS__); \ + gcmkTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "++%s(%d): " Text, __FUNCTION__, __LINE__, __VA_ARGS__) +#else + gcmINLINE static void + __dummy_kheader_arg( + IN gctCONST_STRING Text, + ... + ) + { + } +# define gcmkHEADER_ARG __dummy_kheader_arg +#endif + +#if gcdHAS_ELLIPSIS +#define gcmkFOOTER() \ + gcmkBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, status); \ + gcmkTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d): status=%d(%s)", \ + __FUNCTION__, __LINE__, status, gckOS_DebugStatus2Name(status)); \ + *__kernel_ptr__ -= 1 +#else + gcmINLINE static void + __dummy_kfooter(void) + { + } +# define gcmkFOOTER __dummy_kfooter +#endif + +#if gcdHAS_ELLIPSIS +#define gcmkFOOTER_NO() \ + gcmkBINARY_TRACE(__FUNCTION__, __LINE__, gcvNULL, gcvNULL); \ + gcmkTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d)", __FUNCTION__, __LINE__); \ + *__kernel_ptr__ -= 1 +#else + gcmINLINE static void + __dummy_kfooter_no(void) + { + } +# define gcmkFOOTER_NO __dummy_kfooter_no +#endif + +#if gcdHAS_ELLIPSIS +# define gcmkFOOTER_ARG(Text, ...) \ + gcmkBINARY_TRACE(__FUNCTION__, __LINE__, Text, __VA_ARGS__); \ + gcmkTRACE_ZONE(gcdHEADER_LEVEL, _GC_OBJ_ZONE, \ + "--%s(%d): " Text, \ + __FUNCTION__, __LINE__, __VA_ARGS__); \ + *__kernel_ptr__ -= 1 +#else + gcmINLINE static void + __dummy_kfooter_arg( + IN gctCONST_STRING Text, + ... + ) + { + } +# define gcmkFOOTER_ARG __dummy_kfooter_arg +#endif + +#define gcmOPT_VALUE(ptr) (((ptr) == gcvNULL) ? 0 : *(ptr)) +#define gcmOPT_VALUE_INDEX(ptr, index) (((ptr) == gcvNULL) ? 0 : ptr[index]) +#define gcmOPT_POINTER(ptr) (((ptr) == gcvNULL) ? gcvNULL : *(ptr)) +#define gcmOPT_STRING(ptr) (((ptr) == gcvNULL) ? "(nil)" : (ptr)) + +void +gckOS_Print( + IN gctCONST_STRING Message, + ... + ) +CHECK_PRINTF_FORMAT(1, 2); + +void +gcoOS_Print( + IN gctCONST_STRING Message, + ... + ) +CHECK_PRINTF_FORMAT(1, 2); + +#define gcmPRINT gcoOS_Print +#define gcmkPRINT gckOS_Print +#define gcmkPRINT_N(ArgumentSize, ...) gckOS_Print(__VA_ARGS__) + +#if gcdHAS_ELLIPSIS +# define gcmPRINT_ONCE(Text, ...) \ + { \ + static gctBOOL _once = gcvFALSE; \ + if (!_once) \ + { \ + gcmPRINT(Text, __VA_ARGS__); \ + _once = gcvTRUE; \ + } \ + } \ + +#else + gcmINLINE static void + __dummy_printonce_arg( + IN gctCONST_STRING Text, + ... + ) + { + } +# define gcmPRINT_ONCE __dummy_printonce_arg +#endif + +#if gcdFEATURE_SANITYCHECK +#define gcmFEATURE_CHECKED gcmPRINT_ONCE +#else +#define gcmFEATURE_CHECKED(Text, ...) +#endif + +#if gcdPRINT_VERSION +# define gcmPRINT_VERSION() do { \ + _gcmPRINT_VERSION(gcm); \ + gcmSTACK_DUMP(); \ + } while (0) +# define gcmkPRINT_VERSION() _gcmPRINT_VERSION(gcmk) +# define _gcmPRINT_VERSION(prefix) \ + prefix##TRACE(gcvLEVEL_ERROR, \ + "Vivante HAL version %s", \ + gcvVERSION_STRING) +#else +# define gcmPRINT_VERSION() do { gcmSTACK_DUMP(); } while (gcvFALSE) +# define gcmkPRINT_VERSION() +#endif + +void +gckOS_Dump( + IN gckOS Os, + IN gctCONST_STRING Format, + ... + ); + +void +gckOS_DumpBuffer( + IN gckOS Os, + IN gceDUMP_BUFFER_TYPE Type, + IN gctPOINTER Buffer, + IN gctUINT64 Address, + IN gctSIZE_T Size + ); + +#if gcdDUMP_IN_KERNEL +# define gcmkDUMP gckOS_Dump + +# define gcmkDUMP_BUFFER gckOS_DumpBuffer +#else +# define gcmkDUMP(...) +# define gcmkDUMP_BUFFER(...) +#endif + +/******************************************************************************* +** +** gcmDUMP_FRAMERATE +** +** Print average frame rate +** +*/ +gceSTATUS +gcoOS_DumpFrameRate( + void + ); +# define gcmDUMP_FRAMERATE gcoOS_DumpFrameRate + +/******************************************************************************* +** +** gcoOS_SetDumpFlag +** +** Dump print switch. +** +** ARGUMENTS: +** +** DumpState +** True to enable dump prints. +*/ + +gceSTATUS +gcoOS_SetDumpFlag( + IN gctBOOL DumpState + ); + +/******************************************************************************* +** +** gcmDUMP +** +** Print a dump message. +** +** ARGUMENTS: +** +** gctSTRING Message. +** +** ... Optional arguments. +*/ + +#if gcdDUMP +gceSTATUS +gcoOS_Dump( + IN gcoOS Os, + IN gctCONST_STRING String, + ... + ); +# define gcmDUMP gcoOS_Dump +#else +# define gcmDUMP(...) +#endif + +/******************************************************************************* +** +** gcmDUMP_BUFFER +** +** Print a buffer to the dump. +** +** ARGUMENTS: +** +** gctSTRING Tag +** Tag for dump. +** +** gctUINT32 Address +** GPU address of buffer. +** +** gctPOINTER Logical +** Logical address of buffer. +** +** gctUINT32 Offset +** Offset into buffer. +** +** gctSIZE_T Bytes +** Number of bytes. +*/ + +#if gcdDUMP +gceSTATUS +gcoOS_DumpBuffer( + IN gcoOS Os, + IN gceDUMP_BUFFER_TYPE Type, + IN gctUINT32 Address, + IN gctPOINTER Logical, + IN gctSIZE_T Offset, + IN gctSIZE_T Bytes + ); +# define gcmDUMP_BUFFER gcoOS_DumpBuffer +#else +# define gcmDUMP_BUFFER(...) +#endif + +#if gcdDUMP +void +gcoOS_DumpLock( + void + ); +# define gcmDUMP_LOCK gcoOS_DumpLock +#else +# define gcmDUMP_LOCK(...) +#endif + +#if gcdDUMP +void +gcoOS_DumpUnlock( + void + ); +# define gcmDUMP_UNLOCK gcoOS_DumpUnlock +#else +# define gcmDUMP_UNLOCK(...) +#endif + +/******************************************************************************* +** +** gcmDUMP_API +** +** Print a dump message for a high level API prefixed by the function name. +** +** ARGUMENTS: +** +** gctSTRING Message. +** +** ... Optional arguments. +*/ +gceSTATUS gcoOS_DumpApi(IN gctCONST_STRING String, ...); +#if gcdDUMP_API +# define gcmDUMP_API gcoOS_DumpApi +#else +# define gcmDUMP_API(...) +#endif + +/******************************************************************************* +** +** gcmDUMP_API_ARRAY +** +** Print an array of data. +** +** ARGUMENTS: +** +** gctUINT32_PTR Pointer to array. +** gctUINT32 Size. +*/ +gceSTATUS gcoOS_DumpArray(IN gctCONST_POINTER Data, IN gctUINT32 Size); +#if gcdDUMP_API +# define gcmDUMP_API_ARRAY gcoOS_DumpArray +#else +# define gcmDUMP_API_ARRAY(...) +#endif + +/******************************************************************************* +** +** gcmDUMP_API_ARRAY_TOKEN +** +** Print an array of data terminated by a token. +** +** ARGUMENTS: +** +** gctUINT32_PTR Pointer to array. +** gctUINT32 Termination. +*/ +gceSTATUS gcoOS_DumpArrayToken(IN gctCONST_POINTER Data, IN gctUINT32 Termination); +#if gcdDUMP_API +# define gcmDUMP_API_ARRAY_TOKEN gcoOS_DumpArrayToken +#else +# define gcmDUMP_API_ARRAY_TOKEN(...) +#endif + +/******************************************************************************* +** +** gcmDUMP_API_DATA +** +** Print an array of bytes. +** +** ARGUMENTS: +** +** gctCONST_POINTER Pointer to array. +** gctSIZE_T Size. +*/ +gceSTATUS gcoOS_DumpApiData(IN gctCONST_POINTER Data, IN gctSIZE_T Size); +#if gcdDUMP_API +# define gcmDUMP_API_DATA gcoOS_DumpApiData +#else +# define gcmDUMP_API_DATA(...) +#endif + +/******************************************************************************* +** gcmDUMP_2D_COMMAND +** +** Print the 2D command buffer. +** +** ARGUMENTS: +** +** gctUINT32_PTR Pointer to the command buffer. +** gctUINT32 Command buffer size. +*/ +gceSTATUS gcoOS_Dump2DCommand(IN gctUINT32_PTR Command, IN gctUINT32 Size); +#if gcdDUMP_2D +# define gcmDUMP_2D_COMMAND(cmd, size) \ + if (Hardware->newDump2DLevel > 1) \ + gcoOS_Dump2DCommand(cmd, size) +#else +# define gcmDUMP_2D_COMMAND(...) +#endif + +/******************************************************************************* +** gcmDUMP_2D_SURFACE +** +** Print the 2D surface memory. +** +** ARGUMENTS: +** +** gctBOOL Src. +** gctUINT32 Address. +*/ +gceSTATUS gcoOS_Dump2DSurface(IN gctBOOL Src, IN gctUINT32 Address); +#if gcdDUMP_2D +# define gcmDUMP_2D_SURFACE(src, addr) \ + if (Hardware->newDump2DLevel > 2) \ + gcoOS_Dump2DSurface(src, addr) +#else +# define gcmDUMP_2D_SURFACE(...) +#endif + +/******************************************************************************* +** gcmDUMP_ADD_MEMORY_INFO +** +** Record the memory info. +** +** ARGUMENTS: +** +** gctUINT32 Address. +** gctSIZE_T Size. +*/ +gceSTATUS gcfAddMemoryInfo(IN gctUINT32 GPUAddress, IN gctPOINTER Logical, IN gctUINT64 Physical, IN gctUINT32 Size); +#if gcdDUMP_2D +# define gcmDUMP_ADD_MEMORY_INFO gcfAddMemoryInfo +#else +# define gcmDUMP_ADD_MEMORY_INFO(...) +#endif + +/******************************************************************************* +** gcmDUMP_DEL_MEMORY_INFO +** +** Record the memory info. +** +** ARGUMENTS: +** +** gctUINT32 Address. +*/ +gceSTATUS gcfDelMemoryInfo(IN gctUINT32 Address); +#if gcdDUMP_2D +# define gcmDUMP_DEL_MEMORY_INFO gcfDelMemoryInfo +#else +# define gcmDUMP_DEL_MEMORY_INFO(...) +#endif + +/******************************************************************************* +** +** gcmTRACE_RELEASE +** +** Print a message to the shader debugger. +** +** ARGUMENTS: +** +** message Message. +** ... Optional arguments. +*/ + +#define gcmTRACE_RELEASE gcoOS_DebugShaderTrace + +void +gcoOS_DebugShaderTrace( + IN gctCONST_STRING Message, + ... + ); + +void +gcoOS_SetDebugShaderFiles( + IN gctCONST_STRING VSFileName, + IN gctCONST_STRING FSFileName + ); + +void +gcoOS_SetDebugShaderFileType( + IN gctUINT32 ShaderType + ); + +void +gcoOS_EnableDebugBuffer( + IN gctBOOL Enable + ); + +/******************************************************************************* +** +** gcmBREAK +** +** Break into the debugger. In retail mode this macro does nothing. +** +** ARGUMENTS: +** +** None. +*/ + +void +gcoOS_DebugBreak( + void + ); + +void +gckOS_DebugBreak( + void + ); + +#if gcmIS_DEBUG(gcdDEBUG_BREAK) +# define gcmBREAK gcoOS_DebugBreak +# define gcmkBREAK gckOS_DebugBreak +#else +# define gcmBREAK() +# define gcmkBREAK() +#endif + +/******************************************************************************* +** +** gcmASSERT +** +** Evaluate an expression and break into the debugger if the expression +** evaluates to false. In retail mode this macro does nothing. +** +** ARGUMENTS: +** +** exp Expression to evaluate. +*/ +#if gcmIS_DEBUG(gcdDEBUG_ASSERT) +# define _gcmASSERT(prefix, exp) \ + do \ + { \ + if (!(exp)) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ASSERT at %s(%d)", \ + __FUNCTION__, __LINE__); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + "(%s)", #exp); \ + prefix##BREAK(); \ + } \ + } \ + while (gcvFALSE) +# define gcmASSERT(exp) _gcmASSERT(gcm, exp) +# define gcmkASSERT(exp) _gcmASSERT(gcmk, exp) +#else +# define gcmASSERT(exp) +# define gcmkASSERT(exp) +#endif + +/******************************************************************************* +** +** gcmSTATIC_ASSERT +** +** Tests a software assertion at compile time. If the specific constant +** expression is false, the compiler displays the specified message and +** the compilation fails with an error, otherwise the declaration has +** no effect. +** Static assert is suitable for both user and kernel space. +** +** ARGUMENTS: +** +** exp Constant expression. +** message Error message displayed on assertion failure. +*/ +#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || (__GNUC__ > 4)) +# define gcmSTATIC_ASSERT(constExp, message) \ + do \ + { \ + _Static_assert((constExp), message); \ + } \ + while (0) + +#elif defined(_MSC_VER) && (_MSC_VER >= 1600) +# define gcmSTATIC_ASSERT(constExp, message) \ + static_assert((constExp), message) + +#else +# define gcmSTATIC_ASSERT(constExp, message) \ + do {} while (0) +#endif + +/******************************************************************************* +** +** gcmVERIFY +** +** Verify if an expression returns true. If the expression does not +** evaluates to true, an assertion will happen in debug mode. +** +** ARGUMENTS: +** +** exp Expression to evaluate. +*/ +#if gcmIS_DEBUG(gcdDEBUG_ASSERT) +# define gcmVERIFY(exp) gcmASSERT(exp) +# define gcmkVERIFY(exp) gcmkASSERT(exp) +#else +# define gcmVERIFY(exp) (void)exp +# define gcmkVERIFY(exp) (void)exp +#endif + +/******************************************************************************* +** +** gcmVERIFY_OK +** +** Verify a fucntion returns gcvSTATUS_OK. If the function does not return +** gcvSTATUS_OK, an assertion will happen in debug mode. +** +** ARGUMENTS: +** +** func Function to evaluate. +*/ + +void +gcoOS_Verify( + IN gceSTATUS status + ); + +void +gckOS_Verify( + IN gceSTATUS status + ); + +#if gcmIS_DEBUG(gcdDEBUG_ASSERT) +# define gcmVERIFY_OK(func) \ + do \ + { \ + gceSTATUS verifyStatus = func; \ + gcoOS_Verify(verifyStatus); \ + if (verifyStatus != gcvSTATUS_OK) \ + { \ + gcmTRACE(\ + gcvLEVEL_ERROR, \ + "gcmVERIFY_OK(%d): function returned %d", \ + __LINE__, verifyStatus \ + ); \ + } \ + gcmASSERT(verifyStatus == gcvSTATUS_OK); \ + } \ + while (gcvFALSE) +# define gcmkVERIFY_OK(func) \ + do \ + { \ + gceSTATUS verifyStatus = func; \ + if (verifyStatus != gcvSTATUS_OK) \ + { \ + gcmkTRACE(\ + gcvLEVEL_ERROR, \ + "gcmkVERIFY_OK(%d): function returned %d", \ + __LINE__, verifyStatus \ + ); \ + } \ + gckOS_Verify(verifyStatus); \ + gcmkASSERT(verifyStatus == gcvSTATUS_OK); \ + } \ + while (gcvFALSE) +#else +# define gcmVERIFY_OK(func) func +# define gcmkVERIFY_OK(func) func +#endif + +gctCONST_STRING +gcoOS_DebugStatus2Name( + gceSTATUS status + ); + +gctCONST_STRING +gckOS_DebugStatus2Name( + gceSTATUS status + ); + +/******************************************************************************* +** +** gcmERR_BREAK +** +** Executes a break statement on error. +** +** ASSUMPTIONS: +** +** 'status' variable of gceSTATUS type must be defined. +** +** ARGUMENTS: +** +** func Function to evaluate. +*/ +#define _gcmERR_BREAK(prefix, func){ \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ERR_BREAK: status=%d(%s) @ %s(%d)", \ + status, gcoOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + break; \ + } \ + do { } while (gcvFALSE); \ + } + +#define _gcmkERR_BREAK(prefix, func){ \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ERR_BREAK: status=%d(%s) @ %s(%d)", \ + status, gckOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + break; \ + } \ + do { } while (gcvFALSE); \ + } + +#define gcmERR_BREAK(func) _gcmERR_BREAK(gcm, func) +#define gcmkERR_BREAK(func) _gcmkERR_BREAK(gcmk, func) + +/******************************************************************************* +** +** gcmERR_RETURN +** +** Executes a return on error. +** +** ASSUMPTIONS: +** +** 'status' variable of gceSTATUS type must be defined. +** +** ARGUMENTS: +** +** func Function to evaluate. +*/ +#define _gcmERR_RETURN(prefix, func) \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ERR_RETURN: status=%d(%s) @ %s(%d)", \ + status, gcoOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + prefix##FOOTER(); \ + return status; \ + } \ + do { } while (gcvFALSE) +#define _gcmkERR_RETURN(prefix, func) \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ERR_RETURN: status=%d(%s) @ %s(%d)", \ + status, gckOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + prefix##FOOTER(); \ + return status; \ + } \ + do { } while (gcvFALSE) +#define gcmERR_RETURN(func) _gcmERR_RETURN(gcm, func) +#define gcmkERR_RETURN(func) _gcmkERR_RETURN(gcmk, func) + + +/******************************************************************************* +** +** gcmONERROR +** +** Jump to the error handler in case there is an error. +** +** ASSUMPTIONS: +** +** 'status' variable of gceSTATUS type must be defined. +** +** ARGUMENTS: +** +** func Function to evaluate. +*/ +#define _gcmONERROR(prefix, func) \ + do \ + { \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ONERROR: status=%d(%s) @ %s(%d)", \ + status, gcoOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + goto OnError; \ + } \ + } \ + while (gcvFALSE) +#define _gcmkONERROR(prefix, func) \ + do \ + { \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ONERROR: status=%d(%s) @ %s(%d)", \ + status, gckOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + goto OnError; \ + } \ + } \ + while (gcvFALSE) +#define gcmONERROR(func) _gcmONERROR(gcm, func) +#define gcmkONERROR(func) _gcmkONERROR(gcmk, func) + +#define gcmGET_INDEX_SIZE(type, size) \ + switch (type) \ + { \ + case gcvINDEX_8: \ + size = 1; \ + break; \ + case gcvINDEX_16: \ + size = 2; \ + break; \ + case gcvINDEX_32: \ + size = 4; \ + break; \ + default: \ + gcmONERROR(gcvSTATUS_INVALID_ARGUMENT); \ + } \ + +/******************************************************************************* +** +** gcmkSAFECASTSIZET +** +** Check wether value of a gctSIZE_T varible beyond the capability +** of 32bits GPU hardware. +** +** ASSUMPTIONS: +** +** +** +** ARGUMENTS: +** +** x A gctUINT32 variable +** y A gctSIZE_T variable +*/ +#define gcmkSAFECASTSIZET(x, y) \ + do \ + { \ + gctUINT32 tmp = (gctUINT32)(y); \ + if (gcmSIZEOF(gctSIZE_T) > gcmSIZEOF(gctUINT32)) \ + { \ + gcmkASSERT(tmp <= gcvMAXUINT32); \ + } \ + (x) = tmp; \ + } \ + while (gcvFALSE) + +#define gcmSAFECASTSIZET(x, y) \ + do \ + { \ + gctUINT32 tmp = (gctUINT32)(y); \ + if (gcmSIZEOF(gctSIZE_T) > gcmSIZEOF(gctUINT32)) \ + { \ + gcmASSERT(tmp <= gcvMAXUINT32); \ + } \ + (x) = tmp; \ + } \ + while (gcvFALSE) + +/******************************************************************************* +** +** gcmkSAFECASTPHYSADDRT +** +** Check whether value of a gctPHYS_ADDR_T variable beyond the capability +** of 32bits GPU hardware. +** +** ASSUMPTIONS: +** +** +** +** ARGUMENTS: +** +** x A gctUINT32 variable +** y A gctPHYS_ADDR_T variable +*/ +#define gcmkSAFECASTPHYSADDRT(x, y) \ + do \ + { \ + gctUINT32 tmp = (gctUINT32)(y); \ + if (gcmSIZEOF(gctPHYS_ADDR_T) > gcmSIZEOF(gctUINT32)) \ + { \ + gcmkASSERT(tmp <= gcvMAXUINT32); \ + } \ + (x) = tmp; \ + } \ + while (gcvFALSE) + +/******************************************************************************* +** +** gcmSAFECASTPHYSADDRT +** +** Check whether value of a gctPHYS_ADDR_T variable beyond the capability +** of 32bits GPU hardware. +** +** ASSUMPTIONS: +** +** +** +** ARGUMENTS: +** +** x A gctUINT32 variable +** y A gctPHYS_ADDR_T variable +*/ +#define gcmSAFECASTPHYSADDRT(x, y) \ + do \ + { \ + gctUINT32 tmp = (gctUINT32)(y); \ + if (gcmSIZEOF(gctPHYS_ADDR_T) > gcmSIZEOF(gctUINT32)) \ + { \ + gcmASSERT(tmp <= gcvMAXUINT32); \ + } \ + (x) = tmp; \ + } \ + while (gcvFALSE) + +/******************************************************************************* +** +** gcmVERIFY_LOCK +** +** Verifies whether the surface is locked. +** +** ARGUMENTS: +** +** surfaceInfo Pointer to the surface iniformational structure. +*/ +#define gcmVERIFY_LOCK(surfaceInfo) \ + if (!surfaceInfo->node.valid) \ + { \ + gcmONERROR(gcvSTATUS_MEMORY_UNLOCKED); \ + } \ + +/******************************************************************************* +** +** gcmVERIFY_NODE_LOCK +** +** Verifies whether the surface node is locked. +** +** ARGUMENTS: +** +** surfaceInfo Pointer to the surface iniformational structure. +*/ +#define gcmVERIFY_NODE_LOCK(surfaceNode) \ + if (!(surfaceNode)->valid) \ + { \ + status = gcvSTATUS_MEMORY_UNLOCKED; \ + break; \ + } \ + do { } while (gcvFALSE) + +/******************************************************************************* +** +** gcmBADOBJECT_BREAK +** +** Executes a break statement on bad object. +** +** ARGUMENTS: +** +** obj Object to test. +** t Expected type of the object. +*/ +#define gcmBADOBJECT_BREAK(obj, t) \ + if ((obj == gcvNULL) \ + || (((gcsOBJECT *)(obj))->type != t) \ + ) \ + { \ + status = gcvSTATUS_INVALID_OBJECT; \ + break; \ + } \ + do { } while (gcvFALSE) + +/******************************************************************************* +** +** gcmCHECK_STATUS +** +** Executes a break statement on error. +** +** ASSUMPTIONS: +** +** 'status' variable of gceSTATUS type must be defined. +** +** ARGUMENTS: +** +** func Function to evaluate. +*/ +#define _gcmCHECK_STATUS(prefix, func) \ + do \ + { \ + last = func; \ + if (gcmIS_ERROR(last)) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "CHECK_STATUS: status=%d(%s) @ %s(%d)", \ + last, gcoOS_DebugStatus2Name(last), __FUNCTION__, __LINE__); \ + status = last; \ + } \ + } \ + while (gcvFALSE) +#define _gcmkCHECK_STATUS(prefix, func) \ + do \ + { \ + last = func; \ + if (gcmIS_ERROR(last)) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "CHECK_STATUS: status=%d(%s) @ %s(%d)", \ + last, gckOS_DebugStatus2Name(last), __FUNCTION__, __LINE__); \ + status = last; \ + } \ + } \ + while (gcvFALSE) +#define gcmCHECK_STATUS(func) _gcmCHECK_STATUS(gcm, func) +#define gcmkCHECK_STATUS(func) _gcmkCHECK_STATUS(gcmk, func) + +/******************************************************************************* +** +** gcmVERIFY_ARGUMENT +** +** Assert if an argument does not apply to the specified expression. If +** the argument evaluates to false, gcvSTATUS_INVALID_ARGUMENT will be +** returned from the current function. In retail mode this macro does +** nothing. +** +** ARGUMENTS: +** +** arg Argument to evaluate. +*/ +# define _gcmVERIFY_ARGUMENT(prefix, arg) \ + do \ + { \ + if (!(arg)) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, #prefix "VERIFY_ARGUMENT failed:"); \ + prefix##ASSERT(arg); \ + prefix##FOOTER_ARG("status=%d", gcvSTATUS_INVALID_ARGUMENT); \ + return gcvSTATUS_INVALID_ARGUMENT; \ + } \ + } \ + while (gcvFALSE) +# define gcmVERIFY_ARGUMENT(arg) _gcmVERIFY_ARGUMENT(gcm, arg) +# define gcmkVERIFY_ARGUMENT(arg) _gcmVERIFY_ARGUMENT(gcmk, arg) + +/******************************************************************************* +** +** gcmDEBUG_VERIFY_ARGUMENT +** +** Works just like gcmVERIFY_ARGUMENT, but is only valid in debug mode. +** Use this to verify arguments inside non-public API functions. +*/ +#if gcdDEBUG +# define gcmDEBUG_VERIFY_ARGUMENT(arg) _gcmVERIFY_ARGUMENT(gcm, arg) +# define gcmkDEBUG_VERIFY_ARGUMENT(arg) _gcmkVERIFY_ARGUMENT(gcm, arg) +#else +# define gcmDEBUG_VERIFY_ARGUMENT(arg) +# define gcmkDEBUG_VERIFY_ARGUMENT(arg) +#endif + +/******************************************************************************* +** +** gcmVERIFY_ARGUMENT_RETURN +** +** Assert if an argument does not apply to the specified expression. If +** the argument evaluates to false, gcvSTATUS_INVALID_ARGUMENT will be +** returned from the current function. In retail mode this macro does +** nothing. +** +** ARGUMENTS: +** +** arg Argument to evaluate. +*/ +# define _gcmVERIFY_ARGUMENT_RETURN(prefix, arg, value) \ + do \ + { \ + if (!(arg)) \ + { \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "gcmVERIFY_ARGUMENT_RETURN failed:"); \ + prefix##ASSERT(arg); \ + prefix##FOOTER_ARG("value=%d", value); \ + return value; \ + } \ + } \ + while (gcvFALSE) +# define gcmVERIFY_ARGUMENT_RETURN(arg, value) \ + _gcmVERIFY_ARGUMENT_RETURN(gcm, arg, value) +# define gcmkVERIFY_ARGUMENT_RETURN(arg, value) \ + _gcmVERIFY_ARGUMENT_RETURN(gcmk, arg, value) + +#define MAX_LOOP_COUNT 0x7FFFFFFF + +/******************************************************************************\ +****************************** User Debug Option ****************************** +\******************************************************************************/ + +typedef struct _gcsUSER_DEBUG_OPTION +{ + gceDEBUG_MSG debugMsg; +} +gcsUSER_DEBUG_OPTION; + +gcsUSER_DEBUG_OPTION * +gcoHAL_GetUserDebugOption( + void + ); + +#if gcdHAS_ELLIPSIS +#define gcmUSER_DEBUG_MSG(level, ...) \ + do \ + { \ + if (level <= gcoHAL_GetUserDebugOption()->debugMsg) \ + { \ + gcoOS_Print(__VA_ARGS__); \ + } \ + } while (gcvFALSE) + +#define gcmUSER_DEBUG_ERROR_MSG(...) gcmUSER_DEBUG_MSG(gcvDEBUG_MSG_ERROR, "Error: " __VA_ARGS__) +#define gcmUSER_DEBUG_WARNING_MSG(...) gcmUSER_DEBUG_MSG(gcvDEBUG_MSG_WARNING, "Warring: " __VA_ARGS__) +#else +#define gcmUSER_DEBUG_MSG +#define gcmUSER_DEBUG_ERROR_MSG +#define gcmUSER_DEBUG_WARNING_MSG +#endif + +/******************************************************************************* +** +** A set of macros to aid state loading. +** +** ARGUMENTS: +** +** CommandBuffer Pointer to a gcoCMDBUF object. +** StateDelta Pointer to a gcsSTATE_DELTA state delta structure. +** Memory Destination memory pointer of gctUINT32_PTR type. +** PartOfContext Whether or not the state is a part of the context. +** FixedPoint Whether or not the state is of the fixed point format. +** Count Number of consecutive states to be loaded. +** Address State address. +** Data Data to be set to the state. +*/ + +/*----------------------------------------------------------------------------*/ + +#if gcmIS_DEBUG(gcdDEBUG_CODE) + +# define gcmSTORELOADSTATE(CommandBuffer, Memory, Address, Count) \ + CommandBuffer->lastLoadStatePtr = gcmPTR_TO_UINT64(Memory); \ + CommandBuffer->lastLoadStateAddress = Address; \ + CommandBuffer->lastLoadStateCount = Count + +# define gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address) \ + gcmASSERT(\ + (gctUINT) (Memory - gcmUINT64_TO_TYPE(CommandBuffer->lastLoadStatePtr, gctUINT32_PTR) - 1) \ + == \ + (gctUINT) (Address - CommandBuffer->lastLoadStateAddress) \ + ); \ + \ + gcmASSERT(CommandBuffer->lastLoadStateCount > 0); \ + \ + CommandBuffer->lastLoadStateCount -= 1 + +# define gcmVERIFYLOADSTATEDONE(CommandBuffer) \ + gcmASSERT(CommandBuffer->lastLoadStateCount == 0); + +# define gcmDEFINELOADSTATEBASE() \ + gctUINT32_PTR LoadStateBase; + +# define gcmSETLOADSTATEBASE(CommandBuffer, OutSide) \ + if (OutSide) \ + {\ + LoadStateBase = (gctUINT32_PTR)*OutSide; \ + }\ + else\ + {\ + LoadStateBase = (gctUINT_PTR)CommandBuffer->buffer;\ + } + + +# define gcmVERIFYLOADSTATEALIGNED(CommandBuffer, Memory) \ + gcmASSERT(((Memory - LoadStateBase) & 1) == 0); + +# define gcmUNSETLOADSTATEBASE() \ + LoadStateBase = LoadStateBase; + +#else + +# define gcmSTORELOADSTATE(CommandBuffer, Memory, Address, Count) +# define gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address) +# define gcmVERIFYLOADSTATEDONE(CommandBuffer) + +# define gcmDEFINELOADSTATEBASE() +# define gcmSETLOADSTATEBASE(CommandBuffer, OutSide) +# define gcmVERIFYLOADSTATEALIGNED(CommandBuffer, Memory) +# define gcmUNSETLOADSTATEBASE() + +#endif + +/*----------------------------------------------------------------------------*/ + +/* This style of dump is deprecated. */ +# define gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, Data) + +#define gcmDEFINESTATEBUFFER(CommandBuffer, StateDelta, Memory, ReserveSize) \ + gctSIZE_T ReserveSize; \ + gcoCMDBUF CommandBuffer; \ + gctUINT32_PTR Memory; \ + gcsSTATE_DELTA_PTR StateDelta; \ + gceENGINE CurrentEngine = gcvENGINE_RENDER + +#define gcmBEGINSTATEBUFFER(Hardware, CommandBuffer, StateDelta, Memory, ReserveSize) \ +{ \ + gcmONERROR(gcoBUFFER_Reserve(\ + Hardware->engine[CurrentEngine].buffer, ReserveSize, gcvTRUE, gcvCOMMAND_3D, &CommandBuffer \ + )); \ + \ + Memory = (gctUINT32_PTR) gcmUINT64_TO_PTR(CommandBuffer->lastReserve); \ + \ + StateDelta = Hardware->delta; \ + \ +} + +#define gcmENDSTATEBUFFER(Hardware, CommandBuffer, Memory, ReserveSize) \ +{ \ + gcmASSERT(\ + gcmUINT64_TO_TYPE(CommandBuffer->lastReserve, gctUINT8_PTR) + ReserveSize \ + == \ + (gctUINT8_PTR) Memory \ + ); \ +} + +/*----------------------------------------------------------------------------*/ + +#define gcmBEGINSTATEBATCH(CommandBuffer, Memory, FixedPoint, Address, Count) \ +{ \ + gcmASSERT(((Memory - gcmUINT64_TO_TYPE(CommandBuffer->lastReserve, gctUINT32_PTR)) & 1) == 0); \ + gcmASSERT((gctUINT32)Count <= 1024); \ + \ + gcmVERIFYLOADSTATEDONE(CommandBuffer); \ + \ + gcmSTORELOADSTATE(CommandBuffer, Memory, Address, Count); \ + \ + *Memory++ \ + = gcmSETFIELDVALUE(0, AQ_COMMAND_LOAD_STATE_COMMAND, OPCODE, LOAD_STATE) \ + | gcmSETFIELD (0, AQ_COMMAND_LOAD_STATE_COMMAND, FLOAT, FixedPoint) \ + | gcmSETFIELD (0, AQ_COMMAND_LOAD_STATE_COMMAND, COUNT, Count) \ + | gcmSETFIELD (0, AQ_COMMAND_LOAD_STATE_COMMAND, ADDRESS, Address); \ +} + +#define gcmENDSTATEBATCH(CommandBuffer, Memory) \ +{ \ + gcmVERIFYLOADSTATEDONE(CommandBuffer); \ + \ + gcmASSERT(((Memory - gcmUINT64_TO_TYPE(CommandBuffer->lastReserve, gctUINT32_PTR)) & 1) == 0); \ +} + +/*----------------------------------------------------------------------------*/ + +#define gcmSETSTATEDATA(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address); \ + \ + gcmSAFECASTSIZET(__temp_data32__, Data); \ + \ + *Memory++ = __temp_data32__; \ + \ + gcoHARDWARE_UpdateDelta(\ + StateDelta, Address, 0, __temp_data32__ \ + ); \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + +#define gcmSETSTATEDATAWITHMASK(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address); \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcoHARDWARE_UpdateDelta(\ + StateDelta, Address, Mask, __temp_data32__ \ + ); \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + + +#define gcmSETCTRLSTATE(StateDelta, CommandBuffer, Memory, Address, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address); \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcmDUMPSTATEDATA(StateDelta, gcvFALSE, Address, __temp_data32__); \ +} + +#define gcmSETFILLER(CommandBuffer, Memory) \ +{ \ + gcmVERIFYLOADSTATEDONE(CommandBuffer); \ + \ + *(gctUINT32_PTR)Memory = 0x18000000; \ + Memory += 1; \ +} + +/*----------------------------------------------------------------------------*/ + +#define gcmSETSINGLESTATE(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gcmBEGINSTATEBATCH(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATA(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data); \ + gcmENDSTATEBATCH(CommandBuffer, Memory); \ +} + +#define gcmSETSINGLESTATEWITHMASK(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gcmBEGINSTATEBATCH(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATAWITHMASK(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data); \ + gcmENDSTATEBATCH(CommandBuffer, Memory); \ +} + + +#define gcmSETSINGLECTRLSTATE(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gcmBEGINSTATEBATCH(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETCTRLSTATE(StateDelta, CommandBuffer, Memory, Address, Data); \ + gcmENDSTATEBATCH(CommandBuffer, Memory); \ +} + + + +#define gcmSETSEMASTALLPIPE(StateDelta, CommandBuffer, Memory, Data) \ +{ \ + gcmSETSINGLECTRLSTATE(StateDelta, CommandBuffer, Memory, gcvFALSE, 0x0E02, Data); \ + \ + *Memory++ = gcmSETFIELDVALUE(0, STALL_COMMAND, OPCODE, STALL); \ + \ + *Memory++ = Data; \ + \ + gcmDUMP(gcvNULL, "#[stall 0x%08X 0x%08X]", \ + gcmSETFIELDVALUE(0, AQ_SEMAPHORE, SOURCE, FRONT_END), \ + gcmSETFIELDVALUE(0, AQ_SEMAPHORE, DESTINATION, PIXEL_ENGINE)); \ +} + +/******************************************************************************* +** +** gcmSETSTARTDECOMMAND +** +** Form a START_DE command. +** +** ARGUMENTS: +** +** Memory Destination memory pointer of gctUINT32_PTR type. +** Count Number of the rectangles. +*/ + +#define gcmSETSTARTDECOMMAND(Memory, Count) \ +{ \ + *Memory++ \ + = gcmSETFIELDVALUE(0, AQ_COMMAND_START_DE_COMMAND, OPCODE, START_DE) \ + | gcmSETFIELD (0, AQ_COMMAND_START_DE_COMMAND, COUNT, Count) \ + | gcmSETFIELD (0, AQ_COMMAND_START_DE_COMMAND, DATA_COUNT, 0); \ + \ + *Memory++ = 0xDEADDEED; \ +} + +/***************************************** +** Temp command buffer macro +*/ +#define gcmDEFINESTATEBUFFER_NEW(CommandBuffer, StateDelta, Memory) \ + gcmDEFINELOADSTATEBASE() \ + gcsTEMPCMDBUF CommandBuffer = gcvNULL; \ + gctUINT32_PTR Memory; \ + gcsSTATE_DELTA_PTR StateDelta; \ + gceENGINE CurrentEngine = gcvENGINE_RENDER + + +#define gcmBEGINSTATEBUFFER_NEW(Hardware, CommandBuffer, StateDelta, Memory, OutSide) \ +{ \ + if (OutSide) \ + {\ + Memory = (gctUINT32_PTR)*OutSide; \ + }\ + else \ + {\ + gcmONERROR(gcoBUFFER_StartTEMPCMDBUF(\ + Hardware->engine[CurrentEngine].buffer, Hardware->engine[CurrentEngine].queue, &CommandBuffer \ + ));\ + \ + Memory = (gctUINT32_PTR)(CommandBuffer->buffer); \ + \ + }\ + StateDelta = Hardware->tempDelta; \ + \ + gcmSETLOADSTATEBASE(CommandBuffer,OutSide);\ +} + +#define gcmENDSTATEBUFFER_NEW(Hardware, CommandBuffer, Memory, OutSide) \ +{ \ + if (OutSide) \ + {\ + *OutSide = Memory; \ + }\ + else \ + {\ + CommandBuffer->currentByteSize = (gctUINT32)((gctUINT8_PTR)Memory - \ + (gctUINT8_PTR)CommandBuffer->buffer); \ + \ + gcmONERROR(gcoBUFFER_EndTEMPCMDBUF(Hardware->engine[CurrentEngine].buffer, gcvFALSE));\ + if (Hardware->constructType != gcvHARDWARE_2D) \ + { \ + gcoHARDWARE_UpdateTempDelta(Hardware);\ + } \ + }\ + gcmUNSETLOADSTATEBASE()\ +} + +#define gcmDEFINECTRLSTATEBUFFER(CommandBuffer, Memory) \ + gcmDEFINELOADSTATEBASE() \ + gcsTEMPCMDBUF CommandBuffer = gcvNULL; \ + gctUINT32_PTR Memory; \ + gceENGINE CurrentEngine = gcvENGINE_RENDER + +#define gcmBEGINCTRLSTATEBUFFER(Hardware, CommandBuffer, Memory, OutSide) \ +{ \ + if (OutSide) \ + { \ + Memory = (gctUINT32_PTR)*OutSide; \ + } \ + else \ + { \ + gcmONERROR(gcoBUFFER_StartTEMPCMDBUF(\ + Hardware->engine[CurrentEngine].buffer, \ + Hardware->engine[CurrentEngine].queue, &CommandBuffer \ + )); \ + \ + Memory = (gctUINT32_PTR)(CommandBuffer->buffer); \ + } \ + gcmSETLOADSTATEBASE(CommandBuffer,OutSide); \ +} + +/*----------------------------------------------------------------------------*/ + +#define gcmBEGINSTATEBATCH_NEW(CommandBuffer, Memory, FixedPoint, Address, Count) \ +{ \ + gcmVERIFYLOADSTATEALIGNED(CommandBuffer,Memory);\ + gcmASSERT((gctUINT32)Count <= 1024); \ + \ + *Memory++ \ + = gcmSETFIELDVALUE(0, AQ_COMMAND_LOAD_STATE_COMMAND, OPCODE, LOAD_STATE) \ + | gcmSETFIELD (0, AQ_COMMAND_LOAD_STATE_COMMAND, FLOAT, FixedPoint) \ + | gcmSETFIELD (0, AQ_COMMAND_LOAD_STATE_COMMAND, COUNT, Count) \ + | gcmSETFIELD (0, AQ_COMMAND_LOAD_STATE_COMMAND, ADDRESS, Address); \ +} + +#define gcmENDSTATEBATCH_NEW(CommandBuffer, Memory) \ + gcmVERIFYLOADSTATEALIGNED(CommandBuffer,Memory); + +/*----------------------------------------------------------------------------*/ + +#define gcmSETSTATEDATA_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + gcmSAFECASTSIZET(__temp_data32__, Data); \ + \ + *Memory++ = __temp_data32__; \ + \ + gcoHARDWARE_UpdateDelta(\ + StateDelta, Address, 0, __temp_data32__ \ + ); \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + +#define gcmSETSTATEDATAWITHMASK_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcoHARDWARE_UpdateDelta(\ + StateDelta, Address, Mask, __temp_data32__ \ + ); \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + + +#define gcmSETCTRLSTATE_NEW(StateDelta, CommandBuffer, Memory, Address, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcmDUMPSTATEDATA(StateDelta, gcvFALSE, Address, __temp_data32__); \ +} + +#define gcmSETFILLER_NEW(CommandBuffer, Memory) \ +{ \ + *(gctUINT32_PTR)Memory = 0x18000000; \ + Memory += 1; \ +} + +/*----------------------------------------------------------------------------*/ + +#define gcmSETSINGLESTATE_DUMMY(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ + { \ + gctUINT32 __temp_data32__; \ + __temp_data32__ = Data ; \ + gcmVERIFYLOADSTATEALIGNED(CommandBuffer, Memory); \ + *Memory++ = \ + (gctUINT32)(0) | (0xFFFF & Address); \ + *Memory++ = __temp_data32__; \ + gcmENDSTATEBATCH_NEW(CommandBuffer, Memory); \ +} + +#define gcmSETSINGLESTATE_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gcmBEGINSTATEBATCH_NEW(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATA_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data); \ + gcmENDSTATEBATCH_NEW(CommandBuffer, Memory); \ +} + +#define gcmSETSINGLESTATEWITHMASK_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gcmBEGINSTATEBATCH_NEW(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATAWITHMASK_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data); \ + gcmENDSTATEBATCH_NEW(CommandBuffer, Memory); \ +} + + +#define gcmSETSINGLECTRLSTATE_NEW(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gcmBEGINSTATEBATCH_NEW(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETCTRLSTATE_NEW(StateDelta, CommandBuffer, Memory, Address, Data); \ + gcmENDSTATEBATCH_NEW(CommandBuffer, Memory); \ +} + + + +#define gcmSETSEMASTALLPIPE_NEW(StateDelta, CommandBuffer, Memory, Data) \ +{ \ + gcmSETSINGLECTRLSTATE_NEW(StateDelta, CommandBuffer, Memory, gcvFALSE, 0x0E02, Data); \ + \ + *Memory++ = gcmSETFIELDVALUE(0, STALL_COMMAND, OPCODE, STALL); \ + \ + *Memory++ = Data; \ + \ + gcmDUMP(gcvNULL, "#[stall 0x%08X 0x%08X]", \ + gcmSETFIELDVALUE(0, AQ_SEMAPHORE, SOURCE, FRONT_END), \ + gcmSETFIELDVALUE(0, AQ_SEMAPHORE, DESTINATION, PIXEL_ENGINE)); \ +} + +#define gcmSETSTARTDECOMMAND_NEW(CommandBuffer, Memory, Count) \ +{ \ + *Memory++ \ + = gcmSETFIELDVALUE(0, AQ_COMMAND_START_DE_COMMAND, OPCODE, START_DE) \ + | gcmSETFIELD (0, AQ_COMMAND_START_DE_COMMAND, COUNT, Count) \ + | gcmSETFIELD (0, AQ_COMMAND_START_DE_COMMAND, DATA_COUNT, 0); \ + \ + *Memory++ = 0xDEADDEED; \ + \ +} + +#define gcmSETSTATEDATA_NEW_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + +#define gcmSETSTATEDATAWITHMASK_NEW_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + +#define gcmSETSINGLESTATE_NEW_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gcmBEGINSTATEBATCH_NEW(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATA_NEW_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data); \ + gcmENDSTATEBATCH_NEW(CommandBuffer, Memory); \ +} + +#define gcmSETSINGLESTATEWITHMASK_NEW_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gcmBEGINSTATEBATCH_NEW(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATAWITHMASK_NEW_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data); \ + gcmENDSTATEBATCH_NEW(CommandBuffer, Memory); \ +} + +#define gcmSETSTATEDATA_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address); \ + \ + gcmSAFECASTSIZET(__temp_data32__, Data); \ + \ + *Memory++ = __temp_data32__; \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + +#define gcmSETSTATEDATAWITHMASK_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gctUINT32 __temp_data32__; \ + \ + gcmVERIFYLOADSTATE(CommandBuffer, Memory, Address); \ + \ + __temp_data32__ = Data; \ + \ + *Memory++ = __temp_data32__; \ + \ + gcmDUMPSTATEDATA(StateDelta, FixedPoint, Address, __temp_data32__); \ +} + +#define gcmSETSINGLESTATE_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data) \ +{ \ + gcmBEGINSTATEBATCH(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATA_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Data); \ + gcmENDSTATEBATCH(CommandBuffer, Memory); \ +} + +#define gcmSETSINGLESTATEWITHMASK_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data) \ +{ \ + gcmBEGINSTATEBATCH(CommandBuffer, Memory, FixedPoint, Address, 1); \ + gcmSETSTATEDATAWITHMASK_FAST(StateDelta, CommandBuffer, Memory, FixedPoint, \ + Address, Mask, Data); \ + gcmENDSTATEBATCH(CommandBuffer, Memory); \ +} + +#define gcmDEFINESTATEBUFFER_NEW_FAST(CommandBuffer, Memory) \ + gcmDEFINELOADSTATEBASE() \ + gcsTEMPCMDBUF CommandBuffer = gcvNULL; \ + gctUINT32_PTR Memory; + +#define gcmDEFINESTATEBUFFER_FAST(CommandBuffer, Memory, ReserveSize) \ + gctSIZE_T ReserveSize; \ + gcoCMDBUF CommandBuffer; \ + gctUINT32_PTR Memory; + +#define gcmBEGINSTATEBUFFER_FAST(Hardware, CommandBuffer, Memory, ReserveSize) \ +{ \ + gcmONERROR(gcoBUFFER_Reserve(\ + Hardware->engine[gcvENGINE_RENDER].buffer, ReserveSize, gcvTRUE, &CommandBuffer \ + )); \ + \ + Memory = (gctUINT32_PTR) gcmUINT64_TO_PTR(CommandBuffer->lastReserve); \ + \ +} + +#define gcmBEGINSTATEBUFFER_NEW_FAST(Hardware, CommandBuffer, Memory, OutSide) \ +{ \ + if (OutSide) \ + {\ + Memory = (gctUINT32_PTR)*OutSide; \ + }\ + else \ + {\ + gcmONERROR(gcoBUFFER_StartTEMPCMDBUF(\ + Hardware->engine[gcvENGINE_RENDER].buffer, Hardware->engine[gcvENGINE_RENDER].queue, &CommandBuffer \ + ));\ + \ + Memory = (gctUINT32_PTR)(CommandBuffer->buffer); \ + \ + }\ + \ + gcmSETLOADSTATEBASE(CommandBuffer,OutSide);\ +} + +#define gcmENDSTATEBUFFER_NEW_FAST(Hardware, CommandBuffer, Memory, OutSide) \ +{ \ + if (OutSide) \ + {\ + *OutSide = Memory; \ + }\ + else \ + {\ + CommandBuffer->currentByteSize = (gctUINT32)((gctUINT8_PTR)Memory - \ + (gctUINT8_PTR)CommandBuffer->buffer); \ + \ + gcmONERROR(gcoBUFFER_EndTEMPCMDBUF(Hardware->engine[gcvENGINE_RENDER].buffer, gcvFALSE));\ + }\ + gcmUNSETLOADSTATEBASE()\ +} + +/******************************************************************************* +** +** gcmCONFIGUREUNIFORMS +** +** Configure uniforms according to chip and numConstants. +*/ +#if !gcdENABLE_UNIFIED_CONSTANT +#define gcmCONFIGUREUNIFORMS(ChipModel, ChipRevision, NumConstants, \ + UnifiedConst, VsConstBase, PsConstBase, VsConstMax, PsConstMax, ConstMax) \ +{ \ + if (ChipModel == gcv2000 && (ChipRevision == 0x5118 || ChipRevision == 0x5140)) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + ConstMax = 320; \ + } \ + else if (NumConstants == 320) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + ConstMax = 320; \ + } \ + /* All GC1000 series chips can only support 64 uniforms for ps on non-unified const mode. */ \ + else if (NumConstants > 256 && ChipModel == gcv1000) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + ConstMax = 320; \ + } \ + else if (NumConstants > 256) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 256; \ + ConstMax = 512; \ + } \ + else if (NumConstants == 256) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 256; \ + ConstMax = 512; \ + } \ + else \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 168; \ + PsConstMax = 64; \ + ConstMax = 232; \ + } \ +} +#else +#define gcmCONFIGUREUNIFORMS(ChipModel, ChipRevision, Halti5Avail, SmallBatch, NumConstants, \ + UnifiedConst, VsConstBase, PsConstBase, VsConstMax, PsConstMax, ConstMax) \ +{ \ + if (NumConstants > 256) \ + { \ + UnifiedConst = gcvTRUE; \ + if (SmallBatch) \ + { \ + VsConstBase = 0xD000; \ + PsConstBase = 0xD000; \ + } \ + else if (Halti5Avail) \ + { \ + VsConstBase = 0xD000; \ + PsConstBase = 0xD800; \ + } \ + else \ + {\ + VsConstBase = 0xC000; \ + PsConstBase = 0xC000; \ + }\ + if ((ChipModel == gcv880) && ((ChipRevision & 0xfff0) == 0x5120)) \ + { \ + VsConstMax = 512; \ + PsConstMax = 64; \ + ConstMax = 576; \ + } \ + else \ + { \ + VsConstMax = gcmMIN(512, NumConstants - 64); \ + PsConstMax = gcmMIN(512, NumConstants - 64); \ + ConstMax = NumConstants; \ + } \ + } \ + else if (NumConstants == 256) \ + { \ + if (ChipModel == gcv2000 && (ChipRevision == 0x5118 || ChipRevision == 0x5140)) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + ConstMax = 320; \ + } \ + else \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 256; \ + PsConstMax = 256; \ + ConstMax = 512; \ + } \ + } \ + else \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstBase = 0x1400; \ + PsConstBase = 0x1C00; \ + VsConstMax = 168; \ + PsConstMax = 64; \ + ConstMax = 232; \ + } \ +} +#endif + +/******************************************************************************* +** +** gcmCONFIGUREUNIFORMS2 +** only fix clang build error +** +** Configure uniforms according to chip and numConstants. +*/ +#if !gcdENABLE_UNIFIED_CONSTANT +#define gcmCONFIGUREUNIFORMS2(ChipModel, ChipRevision, NumConstants, \ + UnifiedConst, VsConstMax, PsConstMax) \ +{ \ + if (ChipModel == gcv2000 && (ChipRevision == 0x5118 || ChipRevision == 0x5140)) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + } \ + else if (NumConstants == 320) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + } \ + /* All GC1000 series chips can only support 64 uniforms for ps on non-unified const mode. */ \ + else if (NumConstants > 256 && ChipModel == gcv1000) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + } \ + else if (NumConstants > 256) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 256; \ + } \ + else if (NumConstants == 256) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 256; \ + } \ + else \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 168; \ + PsConstMax = 64; \ + } \ +} +#else +#define gcmCONFIGUREUNIFORMS2(ChipModel, ChipRevision, Halti5Avail, SmallBatch, NumConstants, \ + UnifiedConst, VsConstMax, PsConstMax) \ +{ \ + if (NumConstants > 256) \ + { \ + UnifiedConst = gcvTRUE; \ + if ((ChipModel == gcv880) && ((ChipRevision & 0xfff0) == 0x5120)) \ + { \ + VsConstMax = 512; \ + PsConstMax = 64; \ + } \ + else \ + { \ + VsConstMax = gcmMIN(512, NumConstants - 64); \ + PsConstMax = gcmMIN(512, NumConstants - 64); \ + } \ + } \ + else if (NumConstants == 256) \ + { \ + if (ChipModel == gcv2000 && (ChipRevision == 0x5118 || ChipRevision == 0x5140)) \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 64; \ + } \ + else \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 256; \ + PsConstMax = 256; \ + } \ + } \ + else \ + { \ + UnifiedConst = gcvFALSE; \ + VsConstMax = 168; \ + PsConstMax = 64; \ + } \ +} +#endif + +#define gcmAnyTileStatusEnableForFullMultiSlice(SurfView, anyTsEnableForMultiSlice)\ +{\ + gctUINT i = 0; \ + for (; i < (SurfView->surf->requestD); i++)\ + {\ + if ((SurfView->surf->tileStatusNode.pool != gcvPOOL_UNKNOWN) && \ + (SurfView->surf->tileStatusDisabled[i] == gcvFALSE))\ + {\ + *anyTsEnableForMultiSlice = gcvTRUE;\ + break;\ + }\ + }\ +}\ + +#define gcmAnyTileStatusEnableForMultiSlice(SurfView, anyTsEnableForMultiSlice)\ +{\ + gctUINT i = SurfView->firstSlice; \ + for (; i < (SurfView->firstSlice + SurfView->numSlices); i++)\ + {\ + if ((SurfView->surf->tileStatusNode.pool != gcvPOOL_UNKNOWN) && \ + (SurfView->surf->tileStatusDisabled[i] == gcvFALSE))\ + {\ + *anyTsEnableForMultiSlice = gcvTRUE;\ + break;\ + }\ + }\ +}\ + +#define gcmCanTileStatusEnabledForMultiSlice(SurfView, canTsEnabled)\ +{\ + if (SurfView->numSlices > 1)\ + {\ + if (SurfView->surf->tileStatusNode.pool != gcvPOOL_UNKNOWN) \ + {\ + gctUINT i = 0;\ + for (; i < SurfView->numSlices; i++)\ + {\ + if (SurfView->surf->tileStatusDisabled[i] == gcvTRUE)\ + {\ + *canTsEnabled = gcvFALSE;\ + break;\ + }\ + if (SurfView->surf->fcValue[i] != SurfView->surf->fcValue[0])\ + {\ + *canTsEnabled = gcvFALSE;\ + break;\ + }\ + \ + if (SurfView->surf->fcValueUpper[i] != SurfView->surf->fcValueUpper[0])\ + {\ + *canTsEnabled = gcvFALSE;\ + break;\ + }\ + }\ + }\ + else\ + {\ + *canTsEnabled = gcvFALSE;\ + }\ + }\ + else\ + {\ + if ((SurfView->surf->tileStatusNode.pool == gcvPOOL_UNKNOWN) || (SurfView->surf->tileStatusDisabled[SurfView->firstSlice] == gcvTRUE))\ + {\ + *canTsEnabled = gcvFALSE;\ + }\ + }\ +}\ + + +#define gcmCONFIGUSC(prefix, featureUSC, featureSeparateLS, featureComputeOnly, \ + featureTS, featureGS, featureUSCFullCacheFix, featureL1CacheSize, featureUSCMaxPages, \ + attribCacheRatio, L1CacheRatio) \ +{ \ + attribCacheRatio = 0x2; \ + \ + if (featureUSC) \ + { \ + if (featureSeparateLS) \ + { \ + L1CacheRatio = 0x0; \ + } \ + else \ + { \ + gctUINT L1cacheSize; \ + \ + if (featureComputeOnly) \ + { \ + L1cacheSize = featureL1CacheSize; \ + } \ + else \ + { \ + gctUINT attribBufSizeInKB; \ + if (featureTS) \ + { \ + /* GS/TS must be bundled. */ \ + prefix##ASSERT(featureGS); \ + featureGS = featureGS; \ + attribBufSizeInKB = 42; \ + } \ + else \ + { \ + prefix##ASSERT(!featureGS); \ + attribBufSizeInKB = 8; \ + } \ + if (attribBufSizeInKB < featureUSCMaxPages) \ + { \ + L1cacheSize = featureUSCMaxPages - attribBufSizeInKB; \ + } \ + else \ + { \ + attribBufSizeInKB -= 2; \ + L1cacheSize = 2; \ + } \ + } \ + prefix##ASSERT(L1cacheSize); \ + if (L1cacheSize >= featureL1CacheSize) \ + { \ + L1CacheRatio = 0x0; \ + prefix##ASSERT(featureUSCFullCacheFix); \ + featureUSCFullCacheFix = featureUSCFullCacheFix; \ + } \ + else \ + { \ + static const gctINT s_uscCacheRatio[] = \ + { \ + 100000,/* 1.0f */ \ + 50000, /* 0.5f */ \ + 25000, /* 0.25f */ \ + 12500, /* 0.125f */ \ + 62500, /* 0.0625f */ \ + 3125, /* 0.03125f */ \ + 75000, /* 0.75f */ \ + 0, /*0.0f */ \ + }; \ + gctINT maxL1cacheSize = L1cacheSize * 100000; \ + gctINT delta = 2147483647; /* start with very big delta */ \ + gctINT i = 0; \ + gctINT curIndex = -1; \ + for (; i < gcmCOUNTOF(s_uscCacheRatio); ++i) \ + { \ + gctINT curL1cacheSize = featureL1CacheSize * s_uscCacheRatio[i]; \ + \ + if ((maxL1cacheSize >= curL1cacheSize) && \ + ((maxL1cacheSize - curL1cacheSize) < delta)) \ + { \ + curIndex = i; \ + delta = maxL1cacheSize - curL1cacheSize; \ + } \ + } \ + prefix##ASSERT(-1 != curIndex); \ + L1CacheRatio = curIndex; \ + } \ + } \ + } \ +} \ + +#define gcmCONFIGUSC2(prefix, featureUSC, featureSeparateLS, featureComputeOnly, \ + featureTS, featureL1CacheSize, featureUSCMaxPages, \ + attribCacheRatio, L1CacheRatio) \ +{ \ + attribCacheRatio = 0x2; \ + \ + if (featureUSC) \ + { \ + if (featureSeparateLS) \ + { \ + L1CacheRatio = 0x0; \ + } \ + else \ + { \ + gctUINT L1cacheSize; \ + \ + if (featureComputeOnly) \ + { \ + L1cacheSize = featureL1CacheSize; \ + } \ + else \ + { \ + gctUINT attribBufSizeInKB; \ + if (featureTS) \ + { \ + /* GS/TS must be bundled. */ \ + attribBufSizeInKB = 42; \ + } \ + else \ + { \ + attribBufSizeInKB = 8; \ + } \ + if (attribBufSizeInKB < featureUSCMaxPages) \ + { \ + L1cacheSize = featureUSCMaxPages - attribBufSizeInKB; \ + } \ + else \ + { \ + attribBufSizeInKB -= 2; \ + L1cacheSize = 2; \ + } \ + } \ + prefix##ASSERT(L1cacheSize); \ + if (L1cacheSize >= featureL1CacheSize) \ + { \ + L1CacheRatio = 0x0; \ + } \ + else \ + { \ + static const gctINT s_uscCacheRatio[] = \ + { \ + 100000,/* 1.0f */ \ + 50000, /* 0.5f */ \ + 25000, /* 0.25f */ \ + 12500, /* 0.125f */ \ + 62500, /* 0.0625f */ \ + 3125, /* 0.03125f */ \ + 75000, /* 0.75f */ \ + 0, /*0.0f */ \ + }; \ + gctINT maxL1cacheSize = L1cacheSize * 100000; \ + gctINT delta = 2147483647; /* start with very big delta */ \ + gctINT i = 0; \ + gctINT curIndex = -1; \ + for (; i < gcmCOUNTOF(s_uscCacheRatio); ++i) \ + { \ + gctINT curL1cacheSize = featureL1CacheSize * s_uscCacheRatio[i]; \ + \ + if ((maxL1cacheSize >= curL1cacheSize) && \ + ((maxL1cacheSize - curL1cacheSize) < delta)) \ + { \ + curIndex = i; \ + delta = maxL1cacheSize - curL1cacheSize; \ + } \ + } \ + prefix##ASSERT(-1 != curIndex); \ + L1CacheRatio = curIndex; \ + } \ + } \ + } \ +} \ + +#if VIVANTE_PROFILER_SYSTEM_MEMORY +typedef struct _memory_profile_info +{ + struct + { + gctUINT64 currentSize; + gctUINT64 peakSize; + gctUINT64 total_allocate; + gctUINT64 total_free; + gctUINT32 total_allocateCount; + gctUINT32 total_freeCount; + } system_memory, gpu_memory; +} memory_profile_info; + +gceSTATUS +gcoOS_GetMemoryProfileInfo( + size_t size, + struct _memory_profile_info *info + ); + +gceSTATUS gcoOS_DumpMemoryProfile(void); +gceSTATUS gcoOS_InitMemoryProfile(void); +gceSTATUS gcoOS_DeInitMemoryProfile(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_base_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_debug_zones.h b/include_v6.4.3.p4.6/gc_hal_debug_zones.h new file mode 100644 index 0000000..6d56d0c --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_debug_zones.h @@ -0,0 +1,329 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_debug_zones_h_ +#define __gc_hal_debug_zones_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ + ************************ Debug Zone Pattern Summary *************************** + * A debug zone is an unsigned integer of 32 bit (Bit 31- Bit 0). * + * Bit 31 to 28 defines API, which is 0 for HAL API and has value of 1 - 14 * + * for Khronos API. Value 15 (0xF) is reserved for gcdZONE_NONE. * + * Bit 27 to 0 defines subzones of each API. Value 0xFFFFFFF is resevered for * + * gcdZONE_ALL. * + * * +\******************************************************************************/ + +/* Retrieve API bits 31 to 28 */ +#define gcmZONE_GET_API(zone) ((zone) >> 28) + +/* Retrieve Subzone bits 27 to 0 */ +#define gcmZONE_GET_SUBZONES(zone) ((zone) << 4) + +/******************************************************************************\ +******************************** HAL Zone ************************************** +\******************************************************************************/ + +#define gcdZONE_API_HAL ((gctUINT32) 0 << 28) + +/******************************************************************************\ +******************************** HAL Subzones ********************************** +\******************************************************************************/ + +/* Subzones Kernel and User have in common */ +#define gcvZONE_OS (1 << 0) +#define gcvZONE_HARDWARE (1 << 1) +#define gcvZONE_HEAP (1 << 2) +#define gcvZONE_SIGNAL (1 << 3) + +/* Subzones of HAL Kernel */ +#define gcvZONE_KERNEL (1 << 4) +#define gcvZONE_VIDMEM (1 << 5) +#define gcvZONE_COMMAND (1 << 6) +#define gcvZONE_DRIVER (1 << 7) +#define gcvZONE_CMODEL (1 << 8) +#define gcvZONE_MMU (1 << 9) +#define gcvZONE_EVENT (1 << 10) +#define gcvZONE_DEVICE (1 << 11) +#define gcvZONE_DATABASE (1 << 12) +#define gcvZONE_INTERRUPT (1 << 13) +#define gcvZONE_POWER (1 << 14) +#define gcvZONE_ASYNC_COMMAND (1 << 15) +#define gcvZONE_ALLOCATOR (1 << 16) + +/* Subzones of HAL User */ +#define gcdZONE_HAL_API (1 << 4) +#define gcdZONE_BUFFER (1 << 5) +#define gcdZONE_VGBUFFER (1 << 6) +#define gcdZONE_SURFACE (1 << 7) +#define gcdZONE_INDEX (1 << 8) +#define gcdZONE_STREAM (1 << 9) +#define gcdZONE_TEXTURE (1 << 10) +#define gcdZONE_2D (1 << 11) +#define gcdZONE_3D (1 << 12) +#define gcdZONE_COMPILER (1 << 13) +#define gcdZONE_MEM (1 << 14) +#define gcdZONE_VERTEXARRAY (1 << 15) +#define gcdZONE_CL (1 << 16) +#define gcdZONE_VG (1 << 17) +#define gcdZONE_VX (1 << 18) +#define gcdZONE_UTILITY (1 << 19) +#define gcdZONE_RECT (1 << 20) +#define gcdZONE_BUFOBJ (1 << 21) +#define gcdZONE_PROFILER (1 << 22) +#define gcdZONE_SHADER (1 << 23) + + +/******************************************************************************\ +******************************** Khronos API Zones ***************************** +\******************************************************************************/ + +#define gcdZONE_API_EGL ((gctUINT32) 1 << 28) +#define gcdZONE_API_ES11 ((gctUINT32) 2 << 28) +#define gcdZONE_API_ES30 ((gctUINT32) 3 << 28) +#define gcdZONE_API_GL40 ((gctUINT32) 4 << 28) +#define gcdZONE_API_VG3D ((gctUINT32) 5 << 28) +#define gcdZONE_API_CL ((gctUINT32) 6 << 28) +#define gcdZONE_API_VX ((gctUINT32) 7 << 28) +#define gcdZONE_API_VG ((gctUINT32) 8 << 28) + +/******************************************************************************\ +************************* Subzones of Khronos API Zones ************************ +\******************************************************************************/ + +/* Subzones of EGL API */ +#define gcdZONE_EGL_API (gcdZONE_API_EGL | (1 << 0)) +#define gcdZONE_EGL_SURFACE (gcdZONE_API_EGL | (1 << 1)) +#define gcdZONE_EGL_CONTEXT (gcdZONE_API_EGL | (1 << 2)) +#define gcdZONE_EGL_CONFIG (gcdZONE_API_EGL | (1 << 3)) +#define gcdZONE_EGL_OS (gcdZONE_API_EGL | (1 << 4)) /* unused */ +#define gcdZONE_EGL_IMAGE (gcdZONE_API_EGL | (1 << 5)) +#define gcdZONE_EGL_SWAP (gcdZONE_API_EGL | (1 << 6)) +#define gcdZONE_EGL_INIT (gcdZONE_API_EGL | (1 << 7)) +#define gcdZONE_EGL_SYNC (gcdZONE_API_EGL | (1 << 8)) +#define gcdZONE_EGL_COMPOSE (gcdZONE_API_EGL | (1 << 9)) /* unused */ +#define gcdZONE_EGL_RENDER_THREAD (gcdZONE_API_EGL | (1 << 10)) /* unused */ + +/* Subzones of ES11 API */ +#define gcdZONE_ES11_BUFFER (gcdZONE_API_ES11 | (1 << 0)) +#define gcdZONE_ES11_CLEAR (gcdZONE_API_ES11 | (1 << 1)) +#define gcdZONE_ES11_CLIP (gcdZONE_API_ES11 | (1 << 2)) +#define gcdZONE_ES11_CONTEXT (gcdZONE_API_ES11 | (1 << 3)) +#define gcdZONE_ES11_DRAW (gcdZONE_API_ES11 | (1 << 4)) +#define gcdZONE_ES11_ENABLE (gcdZONE_API_ES11 | (1 << 5)) +#define gcdZONE_ES11_EXTENTION (gcdZONE_API_ES11 | (1 << 6)) +#define gcdZONE_ES11_FOG (gcdZONE_API_ES11 | (1 << 7)) +#define gcdZONE_ES11_FRAGMENT (gcdZONE_API_ES11 | (1 << 8)) +#define gcdZONE_ES11_LIGHT (gcdZONE_API_ES11 | (1 << 9)) +#define gcdZONE_ES11_MATRIX (gcdZONE_API_ES11 | (1 << 10)) +#define gcdZONE_ES11_PIXEL (gcdZONE_API_ES11 | (1 << 11)) +#define gcdZONE_ES11_POLIGON (gcdZONE_API_ES11 | (1 << 12)) +#define gcdZONE_ES11_LINE (gcdZONE_API_ES11 | (1 << 13)) /* unused */ +#define gcdZONE_ES11_QUERY (gcdZONE_API_ES11 | (1 << 14)) +#define gcdZONE_ES11_TEXTURE (gcdZONE_API_ES11 | (1 << 15)) +#define gcdZONE_ES11_STATES (gcdZONE_API_ES11 | (1 << 16)) +#define gcdZONE_ES11_STREAM (gcdZONE_API_ES11 | (1 << 17)) +#define gcdZONE_ES11_VIEWPORT (gcdZONE_API_ES11 | (1 << 18)) +#define gcdZONE_ES11_SHADER (gcdZONE_API_ES11 | (1 << 19)) +#define gcdZONE_ES11_HASH (gcdZONE_API_ES11 | (1 << 20)) +#define gcdZONE_ES11_TRACE (gcdZONE_API_ES11 | (1 << 21)) + +/* Subzones of ES30 API */ +#define gcdZONE_ES30_TRACE (gcdZONE_API_ES30 | (1 << 0)) +#define gcdZONE_ES30_BUFFER (gcdZONE_API_ES30 | (1 << 1)) +#define gcdZONE_ES30_CLEAR (gcdZONE_API_ES30 | (1 << 2)) +#define gcdZONE_ES30_CODEC (gcdZONE_API_ES30 | (1 << 3)) +#define gcdZONE_ES30_CONTEXT (gcdZONE_API_ES30 | (1 << 4)) +#define gcdZONE_ES30_DEPTH (gcdZONE_API_ES30 | (1 << 5)) +#define gcdZONE_ES30_DEVICE (gcdZONE_API_ES30 | (1 << 6)) +#define gcdZONE_ES30_DRAW (gcdZONE_API_ES30 | (1 << 7)) +#define gcdZONE_ES30_FBO (gcdZONE_API_ES30 | (1 << 8)) +#define gcdZONE_ES30_PIXEL (gcdZONE_API_ES30 | (1 << 9)) +#define gcdZONE_ES30_SHADER (gcdZONE_API_ES30 | (1 << 10)) +#define gcdZONE_ES30_STATE (gcdZONE_API_ES30 | (1 << 11)) +#define gcdZONE_ES30_TEXTURE (gcdZONE_API_ES30 | (1 << 12)) +#define gcdZONE_ES30_UTILS (gcdZONE_API_ES30 | (1 << 13)) +#define gcdZONE_ES30_PROFILER (gcdZONE_API_ES30 | (1 << 14)) +#define gcdZONE_ES30_CORE (gcdZONE_API_ES30 | (1 << 15)) + +/* Subzones of GL40 API */ +#define gcdZONE_GL40_TRACE (gcdZONE_API_GL40 | (1 << 0)) +#define gcdZONE_GL40_BUFFER (gcdZONE_API_GL40 | (1 << 1)) +#define gcdZONE_GL40_CLEAR (gcdZONE_API_GL40 | (1 << 2)) /* unused */ +#define gcdZONE_GL40_CODEC (gcdZONE_API_GL40 | (1 << 3)) +#define gcdZONE_GL40_CONTEXT (gcdZONE_API_GL40 | (1 << 4)) +#define gcdZONE_GL40_DEPTH (gcdZONE_API_GL40 | (1 << 5)) +#define gcdZONE_GL40_DEVICE (gcdZONE_API_GL40 | (1 << 6)) +#define gcdZONE_GL40_DRAW (gcdZONE_API_GL40 | (1 << 7)) +#define gcdZONE_GL40_FBO (gcdZONE_API_GL40 | (1 << 8)) +#define gcdZONE_GL40_PIXEL (gcdZONE_API_GL40 | (1 << 9)) +#define gcdZONE_GL40_SHADER (gcdZONE_API_GL40 | (1 << 10)) +#define gcdZONE_GL40_STATE (gcdZONE_API_GL40 | (1 << 11)) +#define gcdZONE_GL40_TEXTURE (gcdZONE_API_GL40 | (1 << 12)) +#define gcdZONE_GL40_UTILS (gcdZONE_API_GL40 | (1 << 13)) +#define gcdZONE_GL40_PROFILER (gcdZONE_API_GL40 | (1 << 14)) +#define gcdZONE_GL40_CORE (gcdZONE_API_GL40 | (1 << 15)) +#define gcdZONE_GL40_FIXVERTEX (gcdZONE_API_GL40 | (1 << 16)) +#define gcdZONE_GL40_FIXFRAG (gcdZONE_API_GL40 | (1 << 17)) +#define gcdZONE_GL40_HASH (gcdZONE_API_GL40 | (1 << 18)) + +/* Subzones of VG3D API */ +#define gcdZONE_VG3D_CONTEXT (gcdZONE_API_VG3D | (1 << 0)) +#define gcdZONE_VG3D_DUMP (gcdZONE_API_VG3D | (1 << 1)) +#define gcdZONE_VG3D_EGL (gcdZONE_API_VG3D | (1 << 2)) +#define gcdZONE_VG3D_FONT (gcdZONE_API_VG3D | (1 << 3)) +#define gcdZONE_VG3D_HARDWARE (gcdZONE_API_VG3D | (1 << 4)) +#define gcdZONE_VG3D_IMAGE (gcdZONE_API_VG3D | (1 << 5)) +#define gcdZONE_VG3D_MASK (gcdZONE_API_VG3D | (1 << 6)) +#define gcdZONE_VG3D_MATRIX (gcdZONE_API_VG3D | (1 << 7)) +#define gcdZONE_VG3D_OBJECT (gcdZONE_API_VG3D | (1 << 8)) +#define gcdZONE_VG3D_PAINT (gcdZONE_API_VG3D | (1 << 9)) +#define gcdZONE_VG3D_PATH (gcdZONE_API_VG3D | (1 << 10)) +#define gcdZONE_VG3D_PROFILER (gcdZONE_API_VG3D | (1 << 11)) +#define gcdZONE_VG3D_SCANLINE (gcdZONE_API_VG3D | (1 << 12)) +#define gcdZONE_VG3D_SHADER (gcdZONE_API_VG3D | (1 << 13)) +#define gcdZONE_VG3D_TESSELLATOR (gcdZONE_API_VG3D | (1 << 14)) +#define gcdZONE_VG3D_VGU (gcdZONE_API_VG3D | (1 << 15)) + +/* Subzones of VG11 API */ +#define gcdZONE_VG_ARC (gcdZONE_API_VG | (1 << 0)) +#define gcdZONE_VG_CONTEXT (gcdZONE_API_VG | (1 << 1)) +#define gcdZONE_VG_DEBUG (gcdZONE_API_VG | (1 << 2)) +#define gcdZONE_VG_FILTER (gcdZONE_API_VG | (1 << 3)) +#define gcdZONE_VG_FORMAT (gcdZONE_API_VG | (1 << 4)) +#define gcdZONE_VG_IMAGE (gcdZONE_API_VG | (1 << 5)) +#define gcdZONE_VG_MAIN (gcdZONE_API_VG | (1 << 6)) +#define gcdZONE_VG_MASK (gcdZONE_API_VG | (1 << 7)) +#define gcdZONE_VG_MATRIX (gcdZONE_API_VG | (1 << 8)) +#define gcdZONE_VG_MEMORYMGR (gcdZONE_API_VG | (1 << 9)) +#define gcdZONE_VG_OBJECT (gcdZONE_API_VG | (1 << 10)) +#define gcdZONE_VG_PAINT (gcdZONE_API_VG | (1 << 11)) +#define gcdZONE_VG_PATH (gcdZONE_API_VG | (1 << 12)) +#define gcdZONE_VG_STATE (gcdZONE_API_VG | (1 << 13)) +#define gcdZONE_VG_STROKE (gcdZONE_API_VG | (1 << 14)) +#define gcdZONE_VG_TEXT (gcdZONE_API_VG | (1 << 15)) +#define gcdZONE_VG_VGU (gcdZONE_API_VG | (1 << 16)) + +/* Subzones of CL API */ +#define gcdZONE_CL_COMMAND (gcdZONE_API_CL | (1 << 0)) +#define gcdZONE_CL_CONTEXT (gcdZONE_API_CL | (1 << 1)) +#define gcdZONE_CL_DEVICE (gcdZONE_API_CL | (1 << 2)) +#define gcdZONE_CL_ENQUEUE (gcdZONE_API_CL | (1 << 3)) +#define gcdZONE_CL_EVENT (gcdZONE_API_CL | (1 << 4)) +#define gcdZONE_CL_EXT (gcdZONE_API_CL | (1 << 5)) +#define gcdZONE_CL_GL (gcdZONE_API_CL | (1 << 6)) +#define gcdZONE_CL_KERNEL (gcdZONE_API_CL | (1 << 7)) +#define gcdZONE_CL_MEM (gcdZONE_API_CL | (1 << 8)) +#define gcdZONE_CL_PLATFORM (gcdZONE_API_CL | (1 << 9)) +#define gcdZONE_CL_PROFILER (gcdZONE_API_CL | (1 << 10)) +#define gcdZONE_CL_PROGRAM (gcdZONE_API_CL | (1 << 11)) +#define gcdZONE_CL_SAMPLER (gcdZONE_API_CL | (1 << 12)) + +/* Subzones of VX API */ +#define gcdZONE_VX_ARRAY (gcdZONE_API_VX | (1 << 0)) +#define gcdZONE_VX_BINARY (gcdZONE_API_VX | (1 << 1)) +#define gcdZONE_VX_CONTEXT (gcdZONE_API_VX | (1 << 2)) +#define gcdZONE_VX_CONV (gcdZONE_API_VX | (1 << 3)) +#define gcdZONE_VX_DELAY (gcdZONE_API_VX | (1 << 4)) +#define gcdZONE_VX_DIST (gcdZONE_API_VX | (1 << 5)) +#define gcdZONE_VX_GPULAYER (gcdZONE_API_VX | (1 << 6)) +#define gcdZONE_VX_GRAPH (gcdZONE_API_VX | (1 << 7)) +#define gcdZONE_VX_IMAGE (gcdZONE_API_VX | (1 << 8)) +#define gcdZONE_VX_INTERFACE (gcdZONE_API_VX | (1 << 9)) +#define gcdZONE_VX_KERNEL (gcdZONE_API_VX | (1 << 10)) +#define gcdZONE_VX_LAYER (gcdZONE_API_VX | (1 << 11)) +#define gcdZONE_VX_LUT (gcdZONE_API_VX | (1 << 12)) +#define gcdZONE_VX_MATRIX (gcdZONE_API_VX | (1 << 13)) +#define gcdZONE_VX_MEMORY (gcdZONE_API_VX | (1 << 14)) +#define gcdZONE_VX_METAFMT (gcdZONE_API_VX | (1 << 15)) +#define gcdZONE_VX_NODE (gcdZONE_API_VX | (1 << 16)) +#define gcdZONE_VX_OBJARRAY (gcdZONE_API_VX | (1 << 17)) +#define gcdZONE_VX_PARAM (gcdZONE_API_VX | (1 << 18)) +#define gcdZONE_VX_PROGRAM (gcdZONE_API_VX | (1 << 19)) +#define gcdZONE_VX_PYRAMID (gcdZONE_API_VX | (1 << 20)) +#define gcdZONE_VX_REF (gcdZONE_API_VX | (1 << 21)) +#define gcdZONE_VX_REMAP (gcdZONE_API_VX | (1 << 22)) +#define gcdZONE_VX_SCALAR (gcdZONE_API_VX | (1 << 23)) +#define gcdZONE_VX_TARGET (gcdZONE_API_VX | (1 << 24)) +#define gcdZONE_VX_TENSOR (gcdZONE_API_VX | (1 << 25)) +#define gcdZONE_VX_THRESHOLD (gcdZONE_API_VX | (1 << 26)) +#define gcdZONE_VX_OTHERS (gcdZONE_API_VX | (1 << 27)) + +/******************************************************************************\ +******************************** Utility Zones ********************************* +\******************************************************************************/ + +/* Value for Disabling All Subzones */ +#define gcdZONE_NONE 0xF0000000 + +/* Value for Enabling All Subzones */ +#define gcdZONE_ALL 0x0FFFFFFF + + +/******************************************************************************\ +*********************************** END **************************************** +\******************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_debug_zones_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_driver.h b/include_v6.4.3.p4.6/gc_hal_driver.h new file mode 100644 index 0000000..1ae5d0f --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_driver.h @@ -0,0 +1,59 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#include "shared/gc_hal_driver_shared.h" + + + diff --git a/include_v6.4.3.p4.6/gc_hal_driver_vg.h b/include_v6.4.3.p4.6/gc_hal_driver_vg.h new file mode 100644 index 0000000..090b1a2 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_driver_vg.h @@ -0,0 +1,59 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#include "shared/gc_hal_driver_vg_shared.h" + + + diff --git a/include_v6.4.3.p4.6/gc_hal_drm.h b/include_v6.4.3.p4.6/gc_hal_drm.h new file mode 100644 index 0000000..76ae9d8 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_drm.h @@ -0,0 +1,216 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_drm_h_ +#define __gc_hal_drm_h_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/* creation flag bits. */ +#define DRM_VIV_GEM_CONTIGUOUS (1u << 0) +#define DRM_VIV_GEM_CACHED (1u << 1) +#define DRM_VIV_GEM_SECURE (1u << 2) +#define DRM_VIV_GEM_CMA_LIMIT (1u << 3) + +struct drm_viv_gem_create { + __u64 size; + __u32 flags; + __u32 handle; +}; + +struct drm_viv_gem_lock { + __u32 handle; + __u32 cacheable; + __u64 logical; +}; + +struct drm_viv_gem_unlock { + __u32 handle; +}; + + +#define DRM_VIV_GEM_CLEAN_CACHE 0x01 +#define DRM_VIV_GEM_INVALIDATE_CACHE 0x02 +#define DRM_VIV_GEM_FLUSH_CACHE 0x03 +#define DRM_VIV_GEM_MEMORY_BARRIER 0x04 + +struct drm_viv_gem_cache { + __u32 handle; + __u32 op; + __u64 logical; + __u64 bytes; +}; + + +#define DRM_VIV_GEM_PARAM_POOL 0x00 +#define DRM_VIV_GEM_PARAM_SIZE 0x01 + +struct drm_viv_gem_query { + __u32 handle; + __u32 param; + __u64 value; +}; + + +struct drm_viv_gem_timestamp { + __u32 handle; + /* inc count, 0 for query current. */ + __u32 inc; + /* output inc'ed timestamp. */ + __u64 timestamp; +}; + + +/* basic tiling mode. */ +#define DRM_VIV_GEM_TILING_LINEAR 0x01 +#define DRM_VIV_GEM_TILING_TILED 0x02 +#define DRM_VIV_GEM_TILING_SUPERTILED 0x04 +#define DRM_VIV_GEM_TILING_MINORTILED 0x08 + +/* tiling mode modifiers. */ +#define DRM_VIV_GEM_TILING_SPLIT 0x10 +#define DRM_VIV_GEM_TILING_X_MAJOR 0x20 +#define DRM_VIV_GEM_TILING_Y_MAJOR 0x40 +#define DRM_VIV_GEM_TILING_SWAP 0x80 + +/* ts mode. */ +#define DRM_VIV_GEM_TS_NONE 0x00 +#define DRM_VIV_GEM_TS_DISABLED 0x01 +#define DRM_VIV_GEM_TS_NORMAL 0x02 +#define DRM_VIV_GEM_TS_COMPRESSED 0x03 + +/* ts cache mode. */ +#define DRM_VIV_GEM_TS_CACHE_MODE_64B 0x00 +#define DRM_VIV_GEM_TS_CACHE_MODE_128B 0x01 +#define DRM_VIV_GEM_TS_CACHE_MODE_256B 0x02 + +struct drm_viv_gem_set_tiling { + __u32 handle; + __u32 tiling_mode; + + __u32 ts_mode; + __u32 ts_cache_mode; + __u64 clear_value; +}; + +struct drm_viv_gem_get_tiling { + __u32 handle; + __u32 tiling_mode; + + __u32 ts_mode; + __u32 ts_cache_mode; + __u64 clear_value; +}; + + +struct drm_viv_gem_attach_aux { + __u32 handle; + __u32 ts_handle; +}; + + +struct drm_viv_gem_ref_node { + __u32 handle; + + /* output. */ + __u32 node; + __u32 ts_node; +}; + + +#define DRM_VIV_GEM_CREATE 0x00 +#define DRM_VIV_GEM_LOCK 0x01 +#define DRM_VIV_GEM_UNLOCK 0x02 +#define DRM_VIV_GEM_CACHE 0x03 +#define DRM_VIV_GEM_QUERY 0x04 +#define DRM_VIV_GEM_TIMESTAMP 0x05 +#define DRM_VIV_GEM_SET_TILING 0x06 +#define DRM_VIV_GEM_GET_TILING 0x07 +#define DRM_VIV_GEM_ATTACH_AUX 0x08 +#define DRM_VIV_GEM_REF_NODE 0x09 +#define DRM_VIV_NUM_IOCTLS 0x0A + +#define DRM_IOCTL_VIV_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_CREATE, struct drm_viv_gem_create) +#define DRM_IOCTL_VIV_GEM_LOCK DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_LOCK, struct drm_viv_gem_lock) +#define DRM_IOCTL_VIV_GEM_UNLOCK DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_UNLOCK, struct drm_viv_gem_unlock) +#define DRM_IOCTL_VIV_GEM_CACHE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_CACHE, struct drm_viv_gem_cache) +#define DRM_IOCTL_VIV_GEM_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_QUERY, struct drm_viv_gem_query) +#define DRM_IOCTL_VIV_GEM_TIMESTAMP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_TIMESTAMP, struct drm_viv_gem_timestamp) +#define DRM_IOCTL_VIV_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_SET_TILING, struct drm_viv_gem_set_tiling) +#define DRM_IOCTL_VIV_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_GET_TILING, struct drm_viv_gem_get_tiling) +#define DRM_IOCTL_VIV_GEM_ATTACH_AUX DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_ATTACH_AUX, struct drm_viv_gem_attach_aux) +#define DRM_IOCTL_VIV_GEM_REF_NODE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIV_GEM_REF_NODE, struct drm_viv_gem_ref_node) + +#ifdef __KERNEL__ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) +#define drm_gem_object_unreference_unlocked drm_gem_object_put +#define drm_dev_unref drm_dev_put +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,4,0) +#define drm_gem_object_unreference_unlocked drm_gem_object_put_unlocked +#define drm_dev_unref drm_dev_put +#endif +#endif + +#if defined(__cplusplus) +} +#endif + +#endif /* __gc_hal_drm_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_dump.h b/include_v6.4.3.p4.6/gc_hal_dump.h new file mode 100644 index 0000000..f64c0fe --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_dump.h @@ -0,0 +1,146 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_dump_h_ +#define __gc_hal_dump_h_ + +/* + gcdDUMP_KEY + + Set this to a string that appears in 'cat /proc//cmdline'. E.g. 'camera'. + HAL will create dumps for the processes matching this key. +*/ +#ifndef gcdDUMP_KEY +# define gcdDUMP_KEY "process" +#endif + +/* + gcdDUMP_PATH + + The dump file location. Some processes cannot write to the sdcard. + Try apps' data dir, e.g. /data/data/com.android.launcher +*/ +#ifndef gcdDUMP_PATH +#if defined(ANDROID) +# define gcdDUMP_PATH "/mnt/sdcard/" +#else +# define gcdDUMP_PATH "./" +#endif +#endif + +/* + gcdDUMP_FILE_IN_KERNEL + + Default dump file for gcdDUMP_IN_KERNEL. + The file will be writen globally in kernel side. + Can be overwriten in runtime by debugfs:/gc/dump/dump_file + + 2 pseudo files: + [dmesg]: means dump to kernel debug message. + [ignored]: means dump ignored, nothing will be dumpped. + */ +#ifndef gcdDUMP_FILE_IN_KERNEL +# define gcdDUMP_FILE_IN_KERNEL "[dmesg]" +#endif + +/* + gcdDUMP_VERIFY_PER_DRAW + + Sub feature of gcdDUMP. + When set to 1, verify RT and images(if used) for every single draw to ease simulation debug. + Only valid for ES3 driver for now. +*/ +#ifndef gcdDUMP_VERIFY_PER_DRAW +# define gcdDUMP_VERIFY_PER_DRAW 0 +#endif + +/* Standalone dump features below. */ + +/* + gcdDUMP_FRAMERATE + When set to a value other than zero, averaqe frame rate will be dumped. + The value set is the starting frame that the average will be calculated. + This is needed because sometimes first few frames are too slow to be included + in the average. Frame count starts from 1. +*/ +#ifndef gcdDUMP_FRAMERATE +# define gcdDUMP_FRAMERATE 0 +#endif + + +/* + gcdDUMP_FRAME_TGA + + When set to a value other than 0, a dump of the frame specified by the value, + will be done into frame.tga. Frame count starts from 1. + */ +#ifndef gcdDUMP_FRAME_TGA +# define gcdDUMP_FRAME_TGA 0 +#endif + +/* + gcdDUMP_AHB_ACCESS + + When set to 1, a dump of all AHB register access will be printed to kernel + message. +*/ +#ifndef gcdDUMP_AHB_ACCESS +# define gcdDUMP_AHB_ACCESS 0 +#endif + +#endif /* __gc_hal_dump_h_ */ + + + diff --git a/include_v6.4.3.p4.6/gc_hal_eglplatform.h b/include_v6.4.3.p4.6/gc_hal_eglplatform.h new file mode 100644 index 0000000..1b95e49 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_eglplatform.h @@ -0,0 +1,554 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_eglplatform_h_ +#define __gc_hal_eglplatform_h_ + +#include "gc_hal_types.h" +#include "gc_hal_base.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +#if defined(_WIN32) +#include + +typedef HDC HALNativeDisplayType; +typedef HWND HALNativeWindowType; +typedef HBITMAP HALNativePixmapType; + +typedef struct __BITFIELDINFO +{ + BITMAPINFO bmi; + RGBQUAD bmiColors[2]; +} +BITFIELDINFO; + +#include "gc_hal_eglplatform_type.h" + +/******************************************************************************* +** Display. ******************************************************************** +*/ + +gceSTATUS +gcoOS_GetDisplay( + OUT HALNativeDisplayType * Display, + IN gctPOINTER Context + ); + +gceSTATUS +gcoOS_GetDisplayByIndex( + IN gctINT DisplayIndex, + OUT HALNativeDisplayType * Display, + IN gctPOINTER Context + ); + +gceSTATUS +gcoOS_GetDisplayInfo( + IN HALNativeDisplayType Display, + OUT gctINT * Width, + OUT gctINT * Height, + OUT gctSIZE_T * Physical, + OUT gctINT * Stride, + OUT gctINT * BitsPerPixel + ); + + + +gceSTATUS +gcoOS_GetDisplayInfoEx( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctUINT DisplayInfoSize, + OUT halDISPLAY_INFO * DisplayInfo + ); + +gceSTATUS +gcoOS_GetDisplayVirtual( + IN HALNativeDisplayType Display, + OUT gctINT * Width, + OUT gctINT * Height + ); + +gceSTATUS +gcoOS_GetDisplayBackbuffer( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + OUT gctPOINTER * context, + OUT gcoSURF * surface, + OUT gctUINT * Offset, + OUT gctINT * X, + OUT gctINT * Y + ); + +gceSTATUS +gcoOS_SetDisplayVirtual( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctUINT Offset, + IN gctINT X, + IN gctINT Y + ); + +gceSTATUS +gcoOS_SetDisplayVirtualEx( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctPOINTER Context, + IN gcoSURF Surface, + IN gctUINT Offset, + IN gctINT X, + IN gctINT Y + ); + +gceSTATUS +gcoOS_CancelDisplayBackbuffer( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctPOINTER Context, + IN gcoSURF Surface, + IN gctUINT Offset, + IN gctINT X, + IN gctINT Y + ); + +gceSTATUS +gcoOS_SetSwapInterval( + IN HALNativeDisplayType Display, + IN gctINT Interval +); + +gceSTATUS +gcoOS_SetSwapIntervalEx( + IN HALNativeDisplayType Display, + IN gctINT Interval, + IN gctPOINTER localDisplay); + +gceSTATUS +gcoOS_GetSwapInterval( + IN HALNativeDisplayType Display, + IN gctINT_PTR Min, + IN gctINT_PTR Max +); + +gceSTATUS +gcoOS_DisplayBufferRegions( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctINT NumRects, + IN gctINT_PTR Rects + ); + +gceSTATUS +gcoOS_DestroyDisplay( + IN HALNativeDisplayType Display + ); + +gceSTATUS +gcoOS_InitLocalDisplayInfo( + IN HALNativeDisplayType Display, + IN OUT gctPOINTER * localDisplay + ); + +gceSTATUS +gcoOS_DeinitLocalDisplayInfo( + IN HALNativeDisplayType Display, + IN OUT gctPOINTER * localDisplay + ); + +gceSTATUS +gcoOS_GetDisplayInfoEx2( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctPOINTER localDisplay, + IN gctUINT DisplayInfoSize, + OUT halDISPLAY_INFO * DisplayInfo + ); + +gceSTATUS +gcoOS_GetDisplayBackbufferEx( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctPOINTER localDisplay, + OUT gctPOINTER * context, + OUT gcoSURF * surface, + OUT gctUINT * Offset, + OUT gctINT * X, + OUT gctINT * Y + ); + +gceSTATUS +gcoOS_IsValidDisplay( + IN HALNativeDisplayType Display + ); + +gceSTATUS +gcoOS_GetNativeVisualId( + IN HALNativeDisplayType Display, + OUT gctINT* nativeVisualId + ); + +gctBOOL +gcoOS_SynchronousFlip( + IN HALNativeDisplayType Display + ); + +/******************************************************************************* +** Windows. ******************************************************************** +*/ + +gceSTATUS +gcoOS_CreateWindow( + IN HALNativeDisplayType Display, + IN gctINT X, + IN gctINT Y, + IN gctINT Width, + IN gctINT Height, + OUT HALNativeWindowType * Window + ); + +gceSTATUS +gcoOS_GetWindowInfo( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + OUT gctINT * X, + OUT gctINT * Y, + OUT gctINT * Width, + OUT gctINT * Height, + OUT gctINT * BitsPerPixel, + OUT gctUINT * Offset + ); + +gceSTATUS +gcoOS_DestroyWindow( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window + ); + +gceSTATUS +gcoOS_DrawImage( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctINT Left, + IN gctINT Top, + IN gctINT Right, + IN gctINT Bottom, + IN gctINT Width, + IN gctINT Height, + IN gctINT BitsPerPixel, + IN gctPOINTER Bits + ); + +gceSTATUS +gcoOS_GetImage( + IN HALNativeWindowType Window, + IN gctINT Left, + IN gctINT Top, + IN gctINT Right, + IN gctINT Bottom, + OUT gctINT * BitsPerPixel, + OUT gctPOINTER * Bits + ); + +gceSTATUS +gcoOS_GetWindowInfoEx( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + OUT gctINT * X, + OUT gctINT * Y, + OUT gctINT * Width, + OUT gctINT * Height, + OUT gctINT * BitsPerPixel, + OUT gctUINT * Offset, + OUT gceSURF_FORMAT * Format, + OUT gceSURF_TYPE * Type + ); + +gceSTATUS +gcoOS_DrawImageEx( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctINT Left, + IN gctINT Top, + IN gctINT Right, + IN gctINT Bottom, + IN gctINT Width, + IN gctINT Height, + IN gctINT BitsPerPixel, + IN gctPOINTER Bits, + IN gceSURF_FORMAT Format + ); + +/* + * Possiable types: + * gcvSURF_BITMAP + * gcvSURF_RENDER_TARGET + * gcvSURF_RENDER_TARGET_NO_COMPRESSION + * gcvSURF_RENDER_TARGET_NO_TILE_STATUS + */ +gceSTATUS +gcoOS_SetWindowFormat( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gceSURF_TYPE Type, + IN gceSURF_FORMAT Format + ); + + +/******************************************************************************* +** Pixmaps. ******************************************************************** +*/ + +gceSTATUS +gcoOS_CreatePixmap( + IN HALNativeDisplayType Display, + IN gctINT Width, + IN gctINT Height, + IN gctINT BitsPerPixel, + OUT HALNativePixmapType * Pixmap + ); + +gceSTATUS +gcoOS_GetPixmapInfo( + IN HALNativeDisplayType Display, + IN HALNativePixmapType Pixmap, + OUT gctINT * Width, + OUT gctINT * Height, + OUT gctINT * BitsPerPixel, + OUT gctINT * Stride, + OUT gctPOINTER * Bits + ); + +gceSTATUS +gcoOS_DrawPixmap( + IN HALNativeDisplayType Display, + IN HALNativePixmapType Pixmap, + IN gctINT Left, + IN gctINT Top, + IN gctINT Right, + IN gctINT Bottom, + IN gctINT Width, + IN gctINT Height, + IN gctINT BitsPerPixel, + IN gctPOINTER Bits + ); + +gceSTATUS +gcoOS_DestroyPixmap( + IN HALNativeDisplayType Display, + IN HALNativePixmapType Pixmap + ); + +gceSTATUS +gcoOS_GetPixmapInfoEx( + IN HALNativeDisplayType Display, + IN HALNativePixmapType Pixmap, + OUT gctINT * Width, + OUT gctINT * Height, + OUT gctINT * BitsPerPixel, + OUT gctINT * Stride, + OUT gctPOINTER * Bits, + OUT gceSURF_FORMAT * Format + ); + +gceSTATUS +gcoOS_CopyPixmapBits( + IN HALNativeDisplayType Display, + IN HALNativePixmapType Pixmap, + IN gctUINT DstWidth, + IN gctUINT DstHeight, + IN gctINT DstStride, + IN gceSURF_FORMAT DstFormat, + OUT gctPOINTER DstBits + ); + +/******************************************************************************* +** OS relative. **************************************************************** +*/ +gceSTATUS +gcoOS_LoadEGLLibrary( + OUT gctHANDLE * Handle + ); + +gceSTATUS +gcoOS_FreeEGLLibrary( + IN gctHANDLE Handle + ); + +gceSTATUS +gcoOS_ShowWindow( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window + ); + +gceSTATUS +gcoOS_HideWindow( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window + ); + +gceSTATUS +gcoOS_SetWindowTitle( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + IN gctCONST_STRING Title + ); + +gceSTATUS +gcoOS_CapturePointer( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window + ); + +gceSTATUS +gcoOS_GetEvent( + IN HALNativeDisplayType Display, + IN HALNativeWindowType Window, + OUT halEvent * Event + ); + +gceSTATUS +gcoOS_CreateClientBuffer( + IN gctINT Width, + IN gctINT Height, + IN gctINT Format, + IN gctINT Type, + OUT gctPOINTER * ClientBuffer + ); + +gceSTATUS +gcoOS_GetClientBufferInfo( + IN gctPOINTER ClientBuffer, + OUT gctINT * Width, + OUT gctINT * Height, + OUT gctINT * Stride, + OUT gctPOINTER * Bits + ); + +gceSTATUS +gcoOS_DestroyClientBuffer( + IN gctPOINTER ClientBuffer + ); + +gceSTATUS +gcoOS_DestroyContext( + IN gctPOINTER Display, + IN gctPOINTER Context + ); + +gceSTATUS +gcoOS_CreateContext( + IN gctPOINTER LocalDisplay, + IN gctPOINTER Context + ); + +gceSTATUS +gcoOS_MakeCurrent( + IN gctPOINTER LocalDisplay, + IN HALNativeWindowType DrawDrawable, + IN HALNativeWindowType ReadDrawable, + IN gctPOINTER Context, + IN gcoSURF ResolveTarget + ); + +gceSTATUS +gcoOS_CreateDrawable( + IN gctPOINTER LocalDisplay, + IN HALNativeWindowType Drawable + ); + +gceSTATUS +gcoOS_DestroyDrawable( + IN gctPOINTER LocalDisplay, + IN HALNativeWindowType Drawable + ); +gceSTATUS +gcoOS_SwapBuffers( + IN gctPOINTER LocalDisplay, + IN HALNativeWindowType Drawable, + IN gcoSURF RenderTarget, + IN gcoSURF ResolveTarget, + IN gctPOINTER ResolveBits, + OUT gctUINT *Width, + OUT gctUINT *Height + ); + +gceSTATUS +gcoOS_ResizeWindow( + IN gctPOINTER localDisplay, + IN HALNativeWindowType Drawable, + IN gctUINT Width, + IN gctUINT Height + ); + +gceSTATUS +gcoOS_RSForSwap( + IN gctPOINTER localDisplay, + IN HALNativeWindowType Drawable, + IN gctPOINTER resolve + ); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_eglplatform_h_ */ + + + diff --git a/include_v6.4.3.p4.6/gc_hal_eglplatform_type.h b/include_v6.4.3.p4.6/gc_hal_eglplatform_type.h new file mode 100644 index 0000000..4882df8 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_eglplatform_type.h @@ -0,0 +1,184 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_eglplatform_type_h_ +#define __gc_hal_eglplatform_type_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Structure that defined keyboard mapping. */ +typedef struct _halKeyMap +{ + /* Normal key. */ + halKeys normal; + + /* Extended key. */ + halKeys extended; +} +halKeyMap; + +/* Event structure. */ +typedef struct _halEvent +{ + /* Event type. */ + halEventType type; + + /* Event data union. */ + union _halEventData + { + /* Event data for keyboard. */ + struct _halKeyboard + { + /* Scancode. */ + halKeys scancode; + + /* ASCII characte of the key pressed. */ + char key; + + /* Flag whether the key was pressed (1) or released (0). */ + char pressed; + } + keyboard; + + /* Event data for pointer. */ + struct _halPointer + { + /* Current pointer coordinate. */ + int x; + int y; + } + pointer; + + /* Event data for mouse buttons. */ + struct _halButton + { + /* Left button state. */ + int left; + + /* Middle button state. */ + int middle; + + /* Right button state. */ + int right; + + /* Current pointer coordinate. */ + int x; + int y; + } + button; + } + data; +} +halEvent; + +/* VFK_DISPLAY_INFO structure defining information returned by + vdkGetDisplayInfoEx. */ +typedef struct _halDISPLAY_INFO +{ + /* The size of the display in pixels. */ + int width; + int height; + + /* The stride of the dispay. -1 is returned if the stride is not known + ** for the specified display.*/ + int stride; + + /* The color depth of the display in bits per pixel. */ + int bitsPerPixel; + + /* The logical pointer to the display memory buffer. NULL is returned + ** if the pointer is not known for the specified display. */ + void * logical; + + /* The physical address of the display memory buffer. ~0 is returned + ** if the address is not known for the specified display. */ + unsigned long physical; + + /* Can be wraped as surface. */ + int wrapFB; + + /* FB_MULTI_BUFFER support */ + int multiBuffer; + int backBufferY; + + /* Tiled buffer / tile status support. */ + int tiledBuffer; + int tileStatus; + int compression; + + /* The color info of the display. */ + unsigned int alphaLength; + unsigned int alphaOffset; + unsigned int redLength; + unsigned int redOffset; + unsigned int greenLength; + unsigned int greenOffset; + unsigned int blueLength; + unsigned int blueOffset; + + /* Display flip support. */ + int flip; +} +halDISPLAY_INFO; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_eglplatform_type_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_engine.h b/include_v6.4.3.p4.6/gc_hal_engine.h new file mode 100644 index 0000000..b4c3d16 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_engine.h @@ -0,0 +1,2811 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_engine_h_ +#define __gc_hal_engine_h_ + +#include "gc_hal_types.h" +#include "gc_hal_enum.h" + + +#if gcdENABLE_3D && gcdENABLE_VG +#include "gc_hal_engine_vg.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _gcsSURF_RESOLVE_ARGS +{ + gceHAL_ARG_VERSION version; + + union _gcsSURF_RESOLVE_ARGS_UNION + { + + struct _gcsSURF_RESOLVE_ARG_v2 + { + gctBOOL yInverted; + gctBOOL directCopy; + gctBOOL resample; + gctBOOL bUploadTex; /* used for upload tex.*/ + gctBOOL visualizeDepth; /* convert depth to visible color */ + gcsPOINT srcOrigin; + gcsPOINT dstOrigin; + gcsPOINT rectSize; + gctUINT numSlices; + gceENGINE engine; /* 3DBlit engine */ + gctBOOL gpuOnly; /* need only try HW path.*/ + + gctBOOL dump; /* need dump for verify */ + gctBOOL srcSwizzle; /* src surface format swizzle infomation */ + gctBOOL dstSwizzle; /* dst surface format swizzle infomation */ + gctBOOL srcCompressed; /* src compressed format*/ + gctBOOL dstCompressed; /* dst compressed format*/ + } v2; + } uArgs; +} +gcsSURF_RESOLVE_ARGS; + +typedef struct _gscBUFFER_VIEW +{ + gctUINT32 cmd; +}gcsBUFFER_VIEW, *gcsBUFFER_VIEW_PTR; + +typedef struct _gcsIMAGE_VIEW +{ + gctUINT32 cmd; +}gcsIMAGE_VIEW, *gcsIMAGE_VIEW_PTR; + +#if gcdENABLE_3D +/******************************************************************************\ +****************************** Object Declarations ***************************** +\******************************************************************************/ + +typedef struct _gcoSTREAM * gcoSTREAM; +typedef struct _gcoVERTEX * gcoVERTEX; +typedef struct _gcoTEXTURE * gcoTEXTURE; +typedef struct _gcoINDEX * gcoINDEX; +typedef struct _gcsVERTEX_ATTRIBUTES * gcsVERTEX_ATTRIBUTES_PTR; +typedef struct _gcoVERTEXARRAY * gcoVERTEXARRAY; +typedef struct _gcoBUFOBJ * gcoBUFOBJ; + +#define gcdATTRIBUTE_COUNT 32 +#define gcdVERTEXARRAY_POOL_CAPACITY 32 + +#define gcvPORGRAM_STAGE_GPIPE (gcvPROGRAM_STAGE_VERTEX_BIT | \ + gcvPROGRAM_STAGE_TCS_BIT | \ + gcvPROGRAM_STAGE_TES_BIT | \ + gcvPROGRAM_STAGE_GEOMETRY_BIT) + +/******************************************************************************\ +********************************* gcoHAL Object ********************************* +\******************************************************************************/ + +gceSTATUS +gcoHAL_QueryShaderCaps( + IN gcoHAL Hal, + OUT gctUINT * UnifiedUniforms, + OUT gctUINT * VertUniforms, + OUT gctUINT * FragUniforms, + OUT gctUINT * Varyings, + OUT gctUINT * ShaderCoreCount, + OUT gctUINT * ThreadCount, + OUT gctUINT * VertInstructionCount, + OUT gctUINT * FragInstructionCount + ); + +gceSTATUS +gcoHAL_QuerySamplerBase( + IN gcoHAL Hal, + OUT gctUINT32 * VertexCount, + OUT gctINT_PTR VertexBase, + OUT gctUINT32 * FragmentCount, + OUT gctINT_PTR FragmentBase + ); + +gceSTATUS +gcoHAL_QueryUniformBase( + IN gcoHAL Hal, + OUT gctUINT32 * VertexBase, + OUT gctUINT32 * FragmentBase + ); + +gceSTATUS +gcoHAL_QueryTextureCaps( + IN gcoHAL Hal, + OUT gctUINT * MaxWidth, + OUT gctUINT * MaxHeight, + OUT gctUINT * MaxDepth, + OUT gctBOOL * Cubic, + OUT gctBOOL * NonPowerOfTwo, + OUT gctUINT * VertexSamplers, + OUT gctUINT * PixelSamplers + ); + +gceSTATUS +gcoHAL_QueryTextureMaxAniso( + IN gcoHAL Hal, + OUT gctUINT * MaxAnisoValue + ); + +gceSTATUS +gcoHAL_QueryStreamCaps( + IN gcoHAL Hal, + OUT gctUINT32 * MaxAttributes, + OUT gctUINT32 * MaxStreamStride, + OUT gctUINT32 * NumberOfStreams, + OUT gctUINT32 * Alignment, + OUT gctUINT32 * MaxAttribOffset + ); + +/******************************************************************************\ +********************************* gcoSURF Object ******************************** +\******************************************************************************/ + +/*----------------------------------------------------------------------------*/ +/*--------------------------------- gcoSURF 3D --------------------------------*/ +typedef struct _gcsSURF_BLIT_ARGS +{ + gcoSURF srcSurface; + gctINT srcX, srcY, srcZ; + gctINT srcWidth, srcHeight, srcDepth; + gcoSURF dstSurface; + gctINT dstX, dstY, dstZ; + gctINT dstWidth, dstHeight, dstDepth; + gctBOOL xReverse; + gctBOOL yReverse; + gctBOOL scissorTest; + gcsRECT scissor; + gctUINT flags; + gctUINT srcNumSlice, dstNumSlice; + gctBOOL needDecode; +} +gcsSURF_BLIT_ARGS; + +typedef struct _gcsSURF_CLEAR_ARGS +{ + /* + ** Color to fill the color portion of the framebuffer when clear + ** is called. + */ + struct { + gcuVALUE r; + gcuVALUE g; + gcuVALUE b; + gcuVALUE a; + /* Color has multiple value type so we must specify it. */ + gceVALUE_TYPE valueType; + } color; + + gcuVALUE depth; + gctUINT stencil; + + gctUINT8 stencilMask; /* stencil bit-wise mask */ + gctBOOL depthMask; /* Depth Write Mask */ + gctUINT8 colorMask; /* 4-bit channel Mask: ABGR:MSB->LSB */ + gcsRECT_PTR clearRect; /* NULL means full clear */ + gceCLEAR flags; /* clear flags */ + + gctUINT32 offset; /* Offset in surface to cube/array/3D, obsolete in v2 version */ + +} gcsSURF_CLEAR_ARGS, *gcsSURF_CLEAR_ARGS_PTR; + + +typedef struct _gscSURF_BLITDRAW_BLIT +{ + gcoSURF srcSurface; + gcoSURF dstSurface; + gcsRECT srcRect; + gcsRECT dstRect; + gceTEXTURE_FILTER filterMode; + gctBOOL xReverse; + gctBOOL yReverse; + gctBOOL scissorEnabled; + gcsRECT scissor; +}gscSURF_BLITDRAW_BLIT; + +typedef gceSTATUS (* gctSPLIT_DRAW_FUNC_PTR)( + IN gctPOINTER gc, + IN gctPOINTER instantDraw, + IN gctPOINTER splitDrawInfo + ); + +typedef struct _gcsSPLIT_DRAW_INFO +{ + gceSPLIT_DRAW_TYPE splitDrawType; + gctSPLIT_DRAW_FUNC_PTR splitDrawFunc; + + union _gcsSPLIT_DRAW_UNION + { + /* This path will split many draw.*/ + struct __gcsSPLIT_DRAW_INFO_TCS + { + gctPOINTER indexPtr; + gctUINT indexPerPatch; + }info_tcs; + + /* This path split into two draw at most. + ** es11 path follow the old code, es30 path + ** add more info parameter to record + */ + struct __gcsSPLIT_DRAW_INFO_INDEX_FETCH + { + gctSIZE_T instanceCount; + gctSIZE_T splitCount; + gcePRIMITIVE splitPrimMode; + gctSIZE_T splitPrimCount; + }info_index_fetch; + }u; +} gcsSPLIT_DRAW_INFO, +*gcsSPLIT_DRAW_INFO_PTR; + +typedef struct _gscSURF_BLITDRAW_ARGS +{ + /* always the fist member */ + gceHAL_ARG_VERSION version; + + union _gcsSURF_BLITDRAW_ARGS_UNION + { + struct _gscSURF_BLITDRAW_ARG_v1 + { + /* Whether it's clear or blit operation, can be extended. */ + gceBLIT_TYPE type; + + union _gscSURF_BLITDRAW_UNION + { + gscSURF_BLITDRAW_BLIT blit; + + struct _gscSURF_BLITDRAW_CLEAR + { + gcsSURF_CLEAR_ARGS clearArgs; + gcoSURF rtSurface; + gcoSURF dsSurface; + } clear; + } u; + } v1; + } uArgs; +} +gcsSURF_BLITDRAW_ARGS; + +typedef struct _gcsSURF_BLITBLT_ARGS +{ + gctCONST_POINTER buf; + gceSURF_FORMAT format; + gctUINT32 stride; + gcoSURF dstSurf; + gcsPOINT dstOrigin; + gcsPOINT rectSize; + gctUINT32 dstOffset; +} +gcsSURF_BLITBLT_ARGS; + + +/* CPU Blit with format (including linear <-> tile) conversion*/ +gceSTATUS +gcoSURF_BlitCPU( + gcsSURF_BLIT_ARGS* args + ); + +/* Copy a rectangular area with format conversion. */ +gceSTATUS +gcoSURF_CopyPixels( + IN gcsSURF_VIEW *SrcView, + IN gcsSURF_VIEW *DstView, + IN gcsSURF_RESOLVE_ARGS *Args + ); + +/* Clear surface function. */ +gceSTATUS +gcoSURF_Clear( + IN gcsSURF_VIEW *SurfView, + IN gcsSURF_CLEAR_ARGS_PTR ClearArgs + ); + +/* Preserve pixels from source. */ +gceSTATUS +gcoSURF_Preserve( + IN gcoSURF SrcSurf, + IN gcoSURF DstSurf, + IN gcsRECT_PTR MaskRect + ); + +/* TO BE REMOVED */ +gceSTATUS +depr_gcoSURF_Resolve( + IN gcoSURF SrcSurface, + IN gcoSURF DestSurface, + IN gctUINT32 DestAddress, + IN gctPOINTER DestBits, + IN gctINT DestStride, + IN gceSURF_TYPE DestType, + IN gceSURF_FORMAT DestFormat, + IN gctUINT DestWidth, + IN gctUINT DestHeight + ); + +gceSTATUS +depr_gcoSURF_ResolveRect( + IN gcoSURF SrcSurface, + IN gcoSURF DstSurface, + IN gctUINT32 DstAddress, + IN gctPOINTER DstBits, + IN gctINT DstStride, + IN gceSURF_TYPE DstType, + IN gceSURF_FORMAT DstFormat, + IN gctUINT DstWidth, + IN gctUINT DstHeight, + IN gcsPOINT_PTR SrcOrigin, + IN gcsPOINT_PTR gcoSURF, + IN gcsPOINT_PTR RectSize + ); + +/* Resample surface. */ +gceSTATUS +gcoSURF_Resample( + IN gcoSURF SrcSurf, + IN gcoSURF DstSurf, + IN gctBOOL sRGBDecode + ); + +/* Resolve rectangular area of a surface. */ +gceSTATUS +gcoSURF_ResolveRect( + IN gcsSURF_VIEW *SrcView, + IN gcsSURF_VIEW *DstView, + IN gcsSURF_RESOLVE_ARGS *Args + ); + +gceSTATUS +gcoSURF_GetResolveAlignment( + IN gcoSURF Surface, + OUT gctUINT *originX, + OUT gctUINT *originY, + OUT gctUINT *sizeX, + OUT gctUINT *sizeY + ); + +gceSTATUS +gcoSURF_IsHWResolveable( + IN gcoSURF SrcSurf, + IN gcoSURF DstSurf, + IN gcsPOINT_PTR SrcOrigin, + IN gcsPOINT_PTR DstOrigin, + IN gcsPOINT_PTR RectSize + ); + +/* Set surface resolvability. */ +gceSTATUS +gcoSURF_SetResolvability( + IN gcoSURF Surface, + IN gctBOOL Resolvable + ); + +gceSTATUS +gcoSURF_IsRenderable( + IN gcoSURF Surface + ); + +gceSTATUS +gcoSURF_IsFormatRenderableAsRT( + IN gcoSURF Surface + ); + +gceSTATUS +gcoBUFOBJ_GetFence( + IN gcoBUFOBJ BufObj, + IN gceFENCE_TYPE Type + ); + +gceSTATUS +gcoBUFOBJ_WaitFence( + IN gcoBUFOBJ BufObj, + IN gceFENCE_TYPE Type + ); + +gceSTATUS +gcoBUFOBJ_IsFenceEnabled( + IN gcoBUFOBJ BufObj + ); + +gceSTATUS +gcoSURF_GetFence( + IN gcoSURF Surface, + IN gceFENCE_TYPE Type + ); + +gceSTATUS +gcoSURF_WaitFence( + IN gcoSURF Surface + ); + +gceSTATUS +gcoSTREAM_GetFence( + IN gcoSTREAM stream + ); + +gceSTATUS +gcoSTREAM_WaitFence( + IN gcoSTREAM stream + ); + +gceSTATUS +gcoINDEX_GetFence( + IN gcoINDEX Index + ); + +gceSTATUS +gcoINDEX_WaitFence( + IN gcoINDEX Index, + IN gceFENCE_TYPE Type + ); + +gceSTATUS +gcoSURF_DrawBlit( + gcsSURF_VIEW *SrcView, + gcsSURF_VIEW *DstView, + gscSURF_BLITDRAW_BLIT *Args + ); + +gceSTATUS +gcoSURF_DrawBlitDepth( + gcsSURF_VIEW *SrcView, + gcsSURF_VIEW *DstView, + gscSURF_BLITDRAW_BLIT *Args +); + +gceSTATUS +gcoSURF_ComputeBlit( + gcsSURF_VIEW* SrcView, + gcsSURF_VIEW* DstView, + gscSURF_BLITDRAW_BLIT* Args +); + +/******************************************************************************\ +******************************** gcoINDEX Object ******************************* +\******************************************************************************/ + +/* Construct a new gcoINDEX object. */ +gceSTATUS +gcoINDEX_Construct( + IN gcoHAL Hal, + OUT gcoINDEX * Index + ); + +/* Destroy a gcoINDEX object. */ +gceSTATUS +gcoINDEX_Destroy( + IN gcoINDEX Index + ); + +/* Lock index in memory. */ +gceSTATUS +gcoINDEX_Lock( + IN gcoINDEX Index, + OUT gctUINT32 * Address, + OUT gctPOINTER * Memory + ); + +/* Unlock index that was previously locked with gcoINDEX_Lock. */ +gceSTATUS +gcoINDEX_Unlock( + IN gcoINDEX Index + ); + +/* Upload index data into the memory. */ +gceSTATUS +gcoINDEX_Load( + IN gcoINDEX Index, + IN gceINDEX_TYPE IndexType, + IN gctUINT32 IndexCount, + IN gctPOINTER IndexBuffer + ); + +/* Bind an index object to the hardware. */ +gceSTATUS +gcoINDEX_Bind( + IN gcoINDEX Index, + IN gceINDEX_TYPE Type + ); + +/* Bind an index object to the hardware. */ +gceSTATUS +gcoINDEX_BindOffset( + IN gcoINDEX Index, + IN gceINDEX_TYPE Type, + IN gctUINT32 Offset + ); + +/* Free existing index buffer. */ +gceSTATUS +gcoINDEX_Free( + IN gcoINDEX Index + ); + +/* Upload data into an index buffer. */ +gceSTATUS +gcoINDEX_Upload( + IN gcoINDEX Index, + IN gctCONST_POINTER Buffer, + IN gctSIZE_T Bytes + ); + +/* Upload data into an index buffer starting at an offset. */ +gceSTATUS +gcoINDEX_UploadOffset( + IN gcoINDEX Index, + IN gctSIZE_T Offset, + IN gctCONST_POINTER Buffer, + IN gctSIZE_T Bytes + ); + +/*Merge index2 to index1 from 0, index2 must subset of inex1*/ +gceSTATUS +gcoINDEX_Merge( + IN gcoINDEX Index1, + IN gcoINDEX Index2 + ); + +/*check if index buffer is enough for this draw*/ +gctBOOL +gcoINDEX_CheckRange( + IN gcoINDEX Index, + IN gceINDEX_TYPE Type, + IN gctINT Count, + IN gctUINT32 Indices + ); + +/* Query the index capabilities. */ +gceSTATUS +gcoINDEX_QueryCaps( + OUT gctBOOL * Index8, + OUT gctBOOL * Index16, + OUT gctBOOL * Index32, + OUT gctUINT * MaxIndex + ); + +/* Determine the index range in the current index buffer. */ +gceSTATUS +gcoINDEX_GetIndexRange( + IN gcoINDEX Index, + IN gceINDEX_TYPE Type, + IN gctSIZE_T Offset, + IN gctUINT32 Count, + OUT gctUINT32 * MinimumIndex, + OUT gctUINT32 * MaximumIndex + ); + +/* Dynamic buffer management. */ +gceSTATUS +gcoINDEX_SetDynamic( + IN gcoINDEX Index, + IN gctSIZE_T Bytes, + IN gctUINT Buffers + ); + +gceSTATUS +gcoCLHardware_Construct(void); +/******************************************************************************\ +********************************** gco3D Object ********************************* +\******************************************************************************/ + +/* Construct a new gco3D object. */ +gceSTATUS +gco3D_Construct( + IN gcoHAL Hal, + IN gctBOOL Robust, + OUT gco3D * Engine + ); + +/* Destroy an gco3D object. */ +gceSTATUS +gco3D_Destroy( + IN gco3D Engine + ); + +/* Set 3D API type. */ +gceSTATUS +gco3D_SetAPI( + IN gco3D Engine, + IN gceAPI ApiType + ); + +/* Get 3D API type. */ +gceSTATUS +gco3D_GetAPI( + IN gco3D Engine, + OUT gceAPI * ApiType + ); + +gceSTATUS +gco3D_SetTarget( + IN gco3D Engine, + IN gctUINT32 TargetIndex, + IN gcsSURF_VIEW *SurfView, + IN gctUINT32 LayerIndex + ); + +gceSTATUS +gco3D_UnsetTarget( + IN gco3D Engine, + IN gctUINT32 TargetIndex, + IN gcoSURF Surface + ); + +gceSTATUS +gco3D_SetPSOutputMapping( + IN gco3D Engine, + IN gctINT32 * psOutputMapping + ); + +gceSTATUS +gco3D_SetRenderLayered( + IN gco3D Engine, + IN gctBOOL Enable, + IN gctUINT MaxLayers + ); + +gceSTATUS +gco3D_SetShaderLayered( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_IsProgramSwitched( + IN gco3D Engine + ); + +/* Set depth buffer. */ +gceSTATUS +gco3D_SetDepth( + IN gco3D Engine, + IN gcsSURF_VIEW *SurfView + ); + +/* Unset depth buffer. */ +gceSTATUS +gco3D_UnsetDepth( + IN gco3D Engine, + IN gcoSURF Surface + ); + +/* Set viewport. */ +gceSTATUS +gco3D_SetViewport( + IN gco3D Engine, + IN gctINT32 Left, + IN gctINT32 Top, + IN gctINT32 Right, + IN gctINT32 Bottom + ); + +/* Set scissors. */ +gceSTATUS +gco3D_SetScissors( + IN gco3D Engine, + IN gctINT32 Left, + IN gctINT32 Top, + IN gctINT32 Right, + IN gctINT32 Bottom + ); + +/* Set clear color. */ +gceSTATUS +gco3D_SetClearColor( + IN gco3D Engine, + IN gctUINT8 Red, + IN gctUINT8 Green, + IN gctUINT8 Blue, + IN gctUINT8 Alpha + ); + +/* Set fixed point clear color. */ +gceSTATUS +gco3D_SetClearColorX( + IN gco3D Engine, + IN gctFIXED_POINT Red, + IN gctFIXED_POINT Green, + IN gctFIXED_POINT Blue, + IN gctFIXED_POINT Alpha + ); + +/* Set floating point clear color. */ +gceSTATUS +gco3D_SetClearColorF( + IN gco3D Engine, + IN gctFLOAT Red, + IN gctFLOAT Green, + IN gctFLOAT Blue, + IN gctFLOAT Alpha + ); + +/* Set fixed point clear depth. */ +gceSTATUS +gco3D_SetClearDepthX( + IN gco3D Engine, + IN gctFIXED_POINT Depth + ); + +/* Set floating point clear depth. */ +gceSTATUS +gco3D_SetClearDepthF( + IN gco3D Engine, + IN gctFLOAT Depth + ); + +/* Set clear stencil. */ +gceSTATUS +gco3D_SetClearStencil( + IN gco3D Engine, + IN gctUINT32 Stencil + ); + +/* Set shading mode. */ +gceSTATUS +gco3D_SetShading( + IN gco3D Engine, + IN gceSHADING Shading + ); + +/* Set blending mode. */ +gceSTATUS +gco3D_EnableBlending( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set blending function. */ +gceSTATUS +gco3D_SetBlendFunction( + IN gco3D Engine, + IN gceBLEND_UNIT Unit, + IN gceBLEND_FUNCTION FunctionRGB, + IN gceBLEND_FUNCTION FunctionAlpha + ); + +/* Set blending mode. */ +gceSTATUS +gco3D_SetBlendMode( + IN gco3D Engine, + IN gceBLEND_MODE ModeRGB, + IN gceBLEND_MODE ModeAlpha + ); + +/* Set blending mode for separate rt control */ +gceSTATUS +gco3D_EnableBlendingIndexed( + IN gco3D Engine, + IN gctUINT Index, + IN gctBOOL Enable + ); + +/* Set blending function for separate rt control */ +gceSTATUS +gco3D_SetBlendFunctionIndexed( + IN gco3D Engine, + IN gctUINT Index, + IN gceBLEND_UNIT Unit, + IN gceBLEND_FUNCTION FunctionRGB, + IN gceBLEND_FUNCTION FunctionAlpha + ); + +/* Set blending mode for separate rt control*/ +gceSTATUS +gco3D_SetBlendModeIndexed( + IN gco3D Engine, + IN gctUINT Index, + IN gceBLEND_MODE ModeRGB, + IN gceBLEND_MODE ModeAlpha + ); + +/* Set blending color. */ +gceSTATUS +gco3D_SetBlendColor( + IN gco3D Engine, + IN gctUINT Red, + IN gctUINT Green, + IN gctUINT Blue, + IN gctUINT Alpha + ); + +/* Set fixed point blending color. */ +gceSTATUS +gco3D_SetBlendColorX( + IN gco3D Engine, + IN gctFIXED_POINT Red, + IN gctFIXED_POINT Green, + IN gctFIXED_POINT Blue, + IN gctFIXED_POINT Alpha + ); + +/* Set floating point blending color. */ +gceSTATUS +gco3D_SetBlendColorF( + IN gco3D Engine, + IN gctFLOAT Red, + IN gctFLOAT Green, + IN gctFLOAT Blue, + IN gctFLOAT Alpha + ); + +/* Set culling mode. */ +gceSTATUS +gco3D_SetCulling( + IN gco3D Engine, + IN gceCULL Mode + ); + +/* Enable point size */ +gceSTATUS +gco3D_SetPointSizeEnable( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set point sprite */ +gceSTATUS +gco3D_SetPointSprite( + IN gco3D Engine, + IN gctBOOL Enable + ); + + +/* Enable/Disable primitive-id. */ +gceSTATUS +gco3D_SetPrimitiveIdEnable( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set fill mode. */ +gceSTATUS +gco3D_SetFill( + IN gco3D Engine, + IN gceFILL Mode + ); + +/* Set depth compare mode. */ +gceSTATUS +gco3D_SetDepthCompare( + IN gco3D Engine, + IN gceCOMPARE Compare + ); + +/* Enable depth writing. */ +gceSTATUS +gco3D_EnableDepthWrite( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set depth mode. */ +gceSTATUS +gco3D_SetDepthMode( + IN gco3D Engine, + IN gceDEPTH_MODE Mode + ); + +/* Set depth range. */ +gceSTATUS +gco3D_SetDepthRangeX( + IN gco3D Engine, + IN gceDEPTH_MODE Mode, + IN gctFIXED_POINT Near, + IN gctFIXED_POINT Far + ); + +/* Set depth range. */ +gceSTATUS +gco3D_SetDepthRangeF( + IN gco3D Engine, + IN gceDEPTH_MODE Mode, + IN gctFLOAT Near, + IN gctFLOAT Far + ); + +/* Set last pixel enable */ +gceSTATUS +gco3D_SetLastPixelEnable( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set depth Bias and Scale */ +gceSTATUS +gco3D_SetDepthScaleBiasX( + IN gco3D Engine, + IN gctFIXED_POINT DepthScale, + IN gctFIXED_POINT DepthBias + ); + +gceSTATUS +gco3D_SetDepthScaleBiasF( + IN gco3D Engine, + IN gctFLOAT DepthScale, + IN gctFLOAT DepthBias + ); + +/* Set depth near and far clipping plane. */ +gceSTATUS +gco3D_SetDepthPlaneF( + IN gco3D Engine, + IN gctFLOAT Near, + IN gctFLOAT Far + ); + +/* Enable or disable dithering. */ +gceSTATUS +gco3D_EnableDither( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set color write enable bits. */ +gceSTATUS +gco3D_SetColorWrite( + IN gco3D Engine, + IN gctUINT8 Enable + ); + +/* Set color write enable bits for separate rt control */ +gceSTATUS +gco3D_SetColorWriteIndexed( + IN gco3D Engine, + IN gctUINT Index, + IN gctUINT8 Enable + ); + +/* Enable or disable early depth. */ +gceSTATUS +gco3D_SetEarlyDepth( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Deprecated: Enable or disable all early depth operations. */ +gceSTATUS +gco3D_SetAllEarlyDepthModes( + IN gco3D Engine, + IN gctBOOL Disable + ); + + +gceSTATUS +gco3D_SetEarlyDepthFromAPP( + IN gco3D Engine, + IN gctBOOL EarlyDepthFromAPP + ); + +gceSTATUS +gco3D_SetRADepthWrite( + IN gco3D Engine, + IN gctBOOL Disable, + IN gctBOOL psReadZ, + IN gctBOOL psReadW + ); + +gceSTATUS +gco3D_SetPatchVertices( + IN gco3D Engine, + IN gctINT PatchVertices + ); + + +/* Switch dynamic early mode */ +gceSTATUS +gco3D_SwitchDynamicEarlyDepthMode( + IN gco3D Engine + ); + +/* Set dynamic early mode */ +gceSTATUS +gco3D_DisableDynamicEarlyDepthMode( + IN gco3D Engine, + IN gctBOOL Disable + ); + +/* Enable or disable depth-only mode. */ +gceSTATUS +gco3D_SetDepthOnly( + IN gco3D Engine, + IN gctBOOL Enable + ); + +typedef struct _gcsSTENCIL_INFO * gcsSTENCIL_INFO_PTR; +typedef struct _gcsSTENCIL_INFO +{ + gceSTENCIL_MODE mode; + + gctUINT8 maskFront; + gctUINT8 maskBack; + gctUINT8 writeMaskFront; + gctUINT8 writeMaskBack; + + gctUINT8 referenceFront; + + gceCOMPARE compareFront; + gceSTENCIL_OPERATION passFront; + gceSTENCIL_OPERATION failFront; + gceSTENCIL_OPERATION depthFailFront; + + gctUINT8 referenceBack; + gceCOMPARE compareBack; + gceSTENCIL_OPERATION passBack; + gceSTENCIL_OPERATION failBack; + gceSTENCIL_OPERATION depthFailBack; +} +gcsSTENCIL_INFO; + +/* Set stencil mode. */ +gceSTATUS +gco3D_SetStencilMode( + IN gco3D Engine, + IN gceSTENCIL_MODE Mode + ); + +/* Set stencil mask. */ +gceSTATUS +gco3D_SetStencilMask( + IN gco3D Engine, + IN gctUINT8 Mask + ); + +/* Set stencil back mask. */ +gceSTATUS +gco3D_SetStencilMaskBack( + IN gco3D Engine, + IN gctUINT8 Mask + ); + +/* Set stencil write mask. */ +gceSTATUS +gco3D_SetStencilWriteMask( + IN gco3D Engine, + IN gctUINT8 Mask + ); + +/* Set stencil back write mask. */ +gceSTATUS +gco3D_SetStencilWriteMaskBack( + IN gco3D Engine, + IN gctUINT8 Mask + ); + +/* Set stencil reference. */ +gceSTATUS +gco3D_SetStencilReference( + IN gco3D Engine, + IN gctUINT8 Reference, + IN gctBOOL Front + ); + +/* Set stencil compare. */ +gceSTATUS +gco3D_SetStencilCompare( + IN gco3D Engine, + IN gceSTENCIL_WHERE Where, + IN gceCOMPARE Compare + ); + +/* Set stencil operation on pass. */ +gceSTATUS +gco3D_SetStencilPass( + IN gco3D Engine, + IN gceSTENCIL_WHERE Where, + IN gceSTENCIL_OPERATION Operation + ); + +/* Set stencil operation on fail. */ +gceSTATUS +gco3D_SetStencilFail( + IN gco3D Engine, + IN gceSTENCIL_WHERE Where, + IN gceSTENCIL_OPERATION Operation + ); + +/* Set stencil operation on depth fail. */ +gceSTATUS +gco3D_SetStencilDepthFail( + IN gco3D Engine, + IN gceSTENCIL_WHERE Where, + IN gceSTENCIL_OPERATION Operation + ); + +/* Set all stencil states in one blow. */ +gceSTATUS +gco3D_SetStencilAll( + IN gco3D Engine, + IN gcsSTENCIL_INFO_PTR Info + ); + +typedef struct _gcsALPHA_INFO * gcsALPHA_INFO_PTR; +typedef struct _gcsALPHA_INFO +{ + /* Alpha test states. */ + gctBOOL test; + gceCOMPARE compare; + gctUINT8 reference; + gctFLOAT floatReference; + + /* Alpha blending states. */ + gctBOOL blend[gcdMAX_DRAW_BUFFERS]; + + gceBLEND_FUNCTION srcFuncColor[gcdMAX_DRAW_BUFFERS]; + gceBLEND_FUNCTION srcFuncAlpha[gcdMAX_DRAW_BUFFERS]; + gceBLEND_FUNCTION trgFuncColor[gcdMAX_DRAW_BUFFERS]; + gceBLEND_FUNCTION trgFuncAlpha[gcdMAX_DRAW_BUFFERS]; + + gceBLEND_MODE modeColor[gcdMAX_DRAW_BUFFERS]; + gceBLEND_MODE modeAlpha[gcdMAX_DRAW_BUFFERS]; + + gctUINT32 color; + + gctBOOL anyBlendEnabled; +} +gcsALPHA_INFO; + + +/* Enable or disable alpha test. */ +gceSTATUS +gco3D_SetAlphaTest( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set alpha test compare. */ +gceSTATUS +gco3D_SetAlphaCompare( + IN gco3D Engine, + IN gceCOMPARE Compare + ); + +/* Set alpha test reference in unsigned integer. */ +gceSTATUS +gco3D_SetAlphaReference( + IN gco3D Engine, + IN gctUINT8 Reference, + IN gctFLOAT FloatReference + ); + +/* Set alpha test reference in fixed point. */ +gceSTATUS +gco3D_SetAlphaReferenceX( + IN gco3D Engine, + IN gctFIXED_POINT Reference + ); + +/* Set alpha test reference in floating point. */ +gceSTATUS +gco3D_SetAlphaReferenceF( + IN gco3D Engine, + IN gctFLOAT Reference + ); + +#if gcdALPHA_KILL_IN_SHADER +gceSTATUS +gco3D_SetAlphaKill( + IN gco3D Engine, + IN gctBOOL AlphaKill, + IN gctBOOL ColorKill + ); +#endif + +/* Enable/Disable anti-alias line. */ +gceSTATUS +gco3D_SetAntiAliasLine( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set texture slot for anti-alias line. */ +gceSTATUS +gco3D_SetAALineTexSlot( + IN gco3D Engine, + IN gctUINT TexSlot + ); + +/* Set anti-alias line width scale. */ +gceSTATUS +gco3D_SetAALineWidth( + IN gco3D Engine, + IN gctFLOAT Width + ); + +/* Draw a number of primitives. */ +gceSTATUS +gco3D_DrawPrimitives( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctSIZE_T StartVertex, + IN gctSIZE_T PrimitiveCount + ); + +gceSTATUS +gco3D_DrawIndirectPrimitives( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctBOOL DrawIndex, + IN gctINT BaseOffset, + IN gcoBUFOBJ BufObj + ); + +gceSTATUS +gco3D_MultiDrawIndirectPrimitives( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctBOOL DrawIndex, + IN gctINT BaseOffset, + IN gctINT DrawCount, + IN gctINT Stride, + IN gcoBUFOBJ BufObj + ); + +gceSTATUS +gco3D_DrawInstancedPrimitives( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctBOOL DrawIndex, + IN gctINT StartVertex, + IN gctSIZE_T StartIndex, + IN gctSIZE_T PrimitiveCount, + IN gctSIZE_T VertexCount, + IN gctSIZE_T InstanceCount + ); + +gceSTATUS +gco3D_DrawNullPrimitives( + IN gco3D Engine + ); + +gceSTATUS +gco3D_DrawPrimitivesCount( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctINT* StartVertex, + IN gctSIZE_T* VertexCount, + IN gctSIZE_T PrimitiveCount + ); + + +/* Draw a number of primitives using offsets. */ +gceSTATUS +gco3D_DrawPrimitivesOffset( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctINT32 StartOffset, + IN gctSIZE_T PrimitiveCount + ); + +/* Draw a number of indexed primitives. */ +gceSTATUS +gco3D_DrawIndexedPrimitives( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctSIZE_T BaseVertex, + IN gctSIZE_T StartIndex, + IN gctSIZE_T PrimitiveCount + ); + +/* Draw a number of indexed primitives using offsets. */ +gceSTATUS +gco3D_DrawIndexedPrimitivesOffset( + IN gco3D Engine, + IN gcePRIMITIVE Type, + IN gctINT32 BaseOffset, + IN gctINT32 StartOffset, + IN gctSIZE_T PrimitiveCount + ); + +/* Draw a element from pattern */ +gceSTATUS +gco3D_DrawPattern( + IN gco3D Engine, + IN gcsFAST_FLUSH_PTR FastFlushInfo + ); + +/* Enable or disable anti-aliasing. */ +gceSTATUS +gco3D_SetAntiAlias( + IN gco3D Engine, + IN gctBOOL Enable + ); + +/* Set msaa samples */ +gceSTATUS +gco3D_SetSamples( + IN gco3D Engine, + IN gctUINT32 Samples + ); + + +/* Write data into the command buffer. */ +gceSTATUS +gco3D_WriteBuffer( + IN gco3D Engine, + IN gctCONST_POINTER Data, + IN gctSIZE_T Bytes, + IN gctBOOL Aligned + ); + +/* Send sempahore and stall until sempahore is signalled. */ +gceSTATUS +gco3D_Semaphore( + IN gco3D Engine, + IN gceWHERE From, + IN gceWHERE To, + IN gceHOW How); + + +/* Explicitly flush shader L1 cache */ +gceSTATUS +gco3D_FlushSHL1Cache( + IN gco3D Engine + ); + +/* Set the subpixels center. */ +gceSTATUS +gco3D_SetCentroids( + IN gco3D Engine, + IN gctUINT32 Index, + IN gctPOINTER Centroids + ); + +/* query msaa sample coordinates */ +gceSTATUS +gco3D_GetSampleCoords( + IN gco3D Engine, + IN gctUINT32 SampleIndex, + IN gctBOOL yInverted, + OUT gctFLOAT_PTR Coords + ); + +gceSTATUS +gco3D_SetLogicOp( + IN gco3D Engine, + IN gctUINT8 Rop + ); + +gceSTATUS +gco3D_SetQuery( + IN gco3D Engine, + IN gctUINT32 QueryHeader, + IN gceQueryType Type, + IN gctBOOL Enable, + IN gctUINT32 Index + ); + +gceSTATUS +gco3D_GetQuery( + IN gco3D Engine, + IN gceQueryType Type, + IN gcsSURF_NODE_PTR Node, + IN gctUINT32 Size, + IN gctPOINTER Locked, + IN gctUINT32 IndexedId, + OUT gctINT32 * Index + ); + +gceSTATUS +gco3D_SetXfbHeader( + IN gco3D Engine, + IN gctUINT32 Physical + ); + +gceSTATUS +gco3D_SetXfbBuffer( + IN gco3D Engine, + IN gctUINT32 Index, + IN gctUINT32 BufferAddr, + IN gctUINT32 BufferStride, + IN gctUINT32 BufferSize + ); + +gceSTATUS +gco3D_SetXfbCmd( + IN gco3D Engine, + IN gceXfbCmd Cmd + ); + +gceSTATUS +gco3D_SetRasterDiscard( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_SetColorOutCount( + IN gco3D Engine, + IN gctUINT32 ColorOutCount + ); + +gceSTATUS +gco3D_SetColorCacheMode( + IN gco3D Engine + ); + +gceSTATUS +gco3D_Set3DEngine( + IN gco3D Engine + ); + +gceSTATUS +gco3D_UnSet3DEngine( + IN gco3D Engine + ); + +gceSTATUS +gco3D_Get3DEngine( + OUT gco3D * Engine + ); + +gceSTATUS +gco3D_QueryReset( + IN gco3D Engine, + OUT gctBOOL_PTR Innocent + ); + +/* OCL thread walker information. */ +typedef struct _gcsTHREAD_WALKER_INFO * gcsTHREAD_WALKER_INFO_PTR; +typedef struct _gcsTHREAD_WALKER_INFO +{ + gctUINT32 dimensions; + gctUINT32 traverseOrder; + gctUINT32 enableSwathX; + gctUINT32 enableSwathY; + gctUINT32 enableSwathZ; + gctUINT32 swathSizeX; + gctUINT32 swathSizeY; + gctUINT32 swathSizeZ; + gctUINT32 valueOrder; + + gctUINT32 globalSizeX; + gctUINT32 globalOffsetX; + gctUINT32 globalSizeY; + gctUINT32 globalOffsetY; + gctUINT32 globalSizeZ; + gctUINT32 globalOffsetZ; + + gctUINT32 globalScaleX; + gctUINT32 globalScaleY; + gctUINT32 globalScaleZ; + + gctUINT32 workGroupSizeX; + gctUINT32 workGroupCountX; + gctUINT32 workGroupSizeY; + gctUINT32 workGroupCountY; + gctUINT32 workGroupSizeZ; + gctUINT32 workGroupCountZ; + + gctUINT32 threadAllocation; + gctBOOL barrierUsed; + gctUINT32 memoryAccessFlag; /* same as gceMEMORY_ACCESS_FLAG */ + gctBOOL indirect; + gctUINT32 groupNumberUniformIdx; + gctUINT32 baseAddress; + gctBOOL bDual16; +} +gcsTHREAD_WALKER_INFO; + +#if gcdENABLE_3D && gcdUSE_VX +/* VX thread walker parameters. */ +typedef struct _gcsVX_THREAD_WALKER_PARAMETERS * gcsVX_THREAD_WALKER_PARAMETERS_PTR; + +typedef struct _gcsVX_THREAD_WALKER_PARAMETERS +{ + gctUINT32 valueOrder; + gctUINT32 workDim; + + gctUINT32 workGroupSizeX; + gctUINT32 workGroupCountX; + + gctUINT32 workGroupSizeY; + gctUINT32 workGroupCountY; + + gctUINT32 globalOffsetX; + gctUINT32 globalScaleX; + + gctUINT32 globalOffsetY; + gctUINT32 globalScaleY; + +#if gcdVX_OPTIMIZER > 1 + gctBOOL tileMode; +#endif +} +gcsVX_THREAD_WALKER_PARAMETERS; + +typedef struct _gcsVX_IMAGE_INFO * gcsVX_IMAGE_INFO_PTR; + +typedef struct _gcsVX_IMAGE_INFO +{ + gctUINT32 format; + gctUINT32 rect[4]; + gctUINT32 width; + gctUINT32 height; + + /*arraySize, sliceSize is for imageArray / image3D */ + gctUINT32 arraySize; + gctUINT32 sliceSize; + + gctUINT32 bpp; + gctUINT32 planes; + gctUINT32 componentCount; + gctBOOL isFloat; + + gctUINT32 uPixels; + gctUINT32 vPixels; + gceSURF_FORMAT internalFormat; + gctUINT32 border; + + /*vx_imagepatch_addressing_t == (gctUINT32 * 8) */ + gctUINT32 imagepatch[8 * 3]; + void *base_addr[3]; + + gctUINT32 stride[3]; + + gctPOINTER logicals[3]; + gctUINT32 physicals[3]; + gctUINT32 bytes; + + gcsSURF_NODE_PTR nodes[3]; + + gctBOOL isVXC; +#if gcdVX_OPTIMIZER + gctUINT32 uniformData[3][4]; +#endif +} +gcsVX_IMAGE_INFO; +typedef struct _gcsVX_DISTRIBUTION_INFO * gcsVX_DISTRIBUTION_INFO_PTR; + +typedef struct _gcsVX_DISTRIBUTION_INFO +{ + + gctUINT32 logical; + gctUINT32 physical; + gctUINT32 bytes; + + gcsSURF_NODE_PTR node; +} +gcsVX_DISTRIBUTION_INFO; +#endif + +/* Start OCL thread walker. */ +gceSTATUS +gco3D_InvokeThreadWalker( + IN gco3D Engine, + IN gcsTHREAD_WALKER_INFO_PTR Info + ); + +gceSTATUS +gco3D_GetClosestRenderFormat( + IN gco3D Engine, + IN gceSURF_FORMAT InFormat, + OUT gceSURF_FORMAT* OutFormat + ); + +/* Set w clip and w plane limit value. */ +gceSTATUS +gco3D_SetWClipEnable( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_GetWClipEnable( + IN gco3D Engine, + OUT gctBOOL * Enable + ); + +gceSTATUS +gco3D_SetWPlaneLimitF( + IN gco3D Engine, + IN gctFLOAT Value + ); + +gceSTATUS +gco3D_SetWPlaneLimitX( + IN gco3D Engine, + IN gctFIXED_POINT Value + ); + +gceSTATUS +gco3D_SetWPlaneLimit( + IN gco3D Engine, + IN gctFLOAT Value + ); + +gceSTATUS +gco3D_PrimitiveRestart( + IN gco3D Engine, + IN gctBOOL PrimitiveRestart + ); + +gceSTATUS +gco3D_LoadProgram( + IN gco3D Engine, + IN gcePROGRAM_STAGE_BIT StageBits, + IN gctPOINTER ProgramState + ); + +gceSTATUS +gco3D_EnableAlphaToCoverage( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_EnableSampleCoverage( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_SetSampleCoverageValue( + IN gco3D Engine, + IN gctFLOAT CoverageValue, + IN gctBOOL Invert + ); + +gceSTATUS +gco3D_EnableSampleMask( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_SetSampleMask( + IN gco3D Engine, + IN gctUINT32 SampleMask + ); + +gceSTATUS +gco3D_EnableSampleShading( + IN gco3D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco3D_SetMinSampleShadingValue( + IN gco3D Engine, + IN gctFLOAT MinSampleShadingValue + ); + +gceSTATUS +gco3D_SetSampleShading( + IN gco3D Engine, + IN gctBOOL Enable, + IN gctBOOL IsSampleIn, + IN gctFLOAT SampleShadingValue + ); + +gceSTATUS +gco3D_EnableSampleMaskOut( + IN gco3D Engine, + IN gctBOOL Enable, + IN gctINT SampleMaskLoc + ); + +/*----------------------------------------------------------------------------*/ +/*-------------------------- gco3D Fragment Processor ------------------------*/ + +/* Set the fragment processor configuration. */ +gceSTATUS +gco3D_SetFragmentConfiguration( + IN gco3D Engine, + IN gctBOOL ColorFromStream, + IN gctBOOL EnableFog, + IN gctBOOL EnableSmoothPoint, + IN gctUINT32 ClipPlanes + ); + +/* Enable/disable texture stage operation. */ +gceSTATUS +gco3D_EnableTextureStage( + IN gco3D Engine, + IN gctINT Stage, + IN gctBOOL Enable + ); + +/* Program the channel enable masks for the color texture function. */ +gceSTATUS +gco3D_SetTextureColorMask( + IN gco3D Engine, + IN gctINT Stage, + IN gctBOOL ColorEnabled, + IN gctBOOL AlphaEnabled + ); + +/* Program the channel enable masks for the alpha texture function. */ +gceSTATUS +gco3D_SetTextureAlphaMask( + IN gco3D Engine, + IN gctINT Stage, + IN gctBOOL ColorEnabled, + IN gctBOOL AlphaEnabled + ); + +/* Program the constant fragment color. */ +gceSTATUS +gco3D_SetFragmentColorX( + IN gco3D Engine, + IN gctFIXED_POINT Red, + IN gctFIXED_POINT Green, + IN gctFIXED_POINT Blue, + IN gctFIXED_POINT Alpha + ); + +gceSTATUS +gco3D_SetFragmentColorF( + IN gco3D Engine, + IN gctFLOAT Red, + IN gctFLOAT Green, + IN gctFLOAT Blue, + IN gctFLOAT Alpha + ); + +/* Program the constant fog color. */ +gceSTATUS +gco3D_SetFogColorX( + IN gco3D Engine, + IN gctFIXED_POINT Red, + IN gctFIXED_POINT Green, + IN gctFIXED_POINT Blue, + IN gctFIXED_POINT Alpha + ); + +gceSTATUS +gco3D_SetFogColorF( + IN gco3D Engine, + IN gctFLOAT Red, + IN gctFLOAT Green, + IN gctFLOAT Blue, + IN gctFLOAT Alpha + ); + +/* Program the constant texture color. */ +gceSTATUS +gco3D_SetTetxureColorX( + IN gco3D Engine, + IN gctINT Stage, + IN gctFIXED_POINT Red, + IN gctFIXED_POINT Green, + IN gctFIXED_POINT Blue, + IN gctFIXED_POINT Alpha + ); + +gceSTATUS +gco3D_SetTetxureColorF( + IN gco3D Engine, + IN gctINT Stage, + IN gctFLOAT Red, + IN gctFLOAT Green, + IN gctFLOAT Blue, + IN gctFLOAT Alpha + ); + +/* Configure color texture function. */ +gceSTATUS +gco3D_SetColorTextureFunction( + IN gco3D Engine, + IN gctINT Stage, + IN gceTEXTURE_FUNCTION Function, + IN gceTEXTURE_SOURCE Source0, + IN gceTEXTURE_CHANNEL Channel0, + IN gceTEXTURE_SOURCE Source1, + IN gceTEXTURE_CHANNEL Channel1, + IN gceTEXTURE_SOURCE Source2, + IN gceTEXTURE_CHANNEL Channel2, + IN gctINT Scale + ); + +/* Configure alpha texture function. */ +gceSTATUS +gco3D_SetAlphaTextureFunction( + IN gco3D Engine, + IN gctINT Stage, + IN gceTEXTURE_FUNCTION Function, + IN gceTEXTURE_SOURCE Source0, + IN gceTEXTURE_CHANNEL Channel0, + IN gceTEXTURE_SOURCE Source1, + IN gceTEXTURE_CHANNEL Channel1, + IN gceTEXTURE_SOURCE Source2, + IN gceTEXTURE_CHANNEL Channel2, + IN gctINT Scale + ); + +/******************************************************************************\ +******************************* gcoTEXTURE Object ******************************* +\******************************************************************************/ + +typedef struct _gcsTEXTURE +{ + /* Addressing modes. */ + gceTEXTURE_ADDRESSING s; + gceTEXTURE_ADDRESSING t; + gceTEXTURE_ADDRESSING r; + + gceTEXTURE_SWIZZLE swizzle[gcvTEXTURE_COMPONENT_NUM]; + + /* Border color. */ + gctUINT8 border[gcvTEXTURE_COMPONENT_NUM]; + + /* Filters. */ + gceTEXTURE_FILTER minFilter; + gceTEXTURE_FILTER magFilter; + gceTEXTURE_FILTER mipFilter; + gctUINT anisoFilter; + + /* Level of detail. */ + gctFLOAT lodBias; + gctFLOAT lodMin; + gctFLOAT lodMax; + + /* base/max level */ + gctINT32 baseLevel; + gctINT32 maxLevel; + + /* depth texture comparison */ + gceTEXTURE_COMPARE_MODE compareMode; + gceCOMPARE compareFunc; + + gceTEXTURE_DS_TEX_MODE dsTextureMode; + + gceTEXTURE_DS_MODE dsMode; + + /* sRGB decode */ + gceTEXTURE_SRGBDECODE sRGB; + + gcuVALUE borderColor[4]; + gctBOOL descDirty; + + /* texture stage */ + gctINT stage; +} +gcsTEXTURE, * gcsTEXTURE_PTR; + +typedef struct _gcsTEXTURE_BINDTEXTS_ARGS +{ + /* must be the first member */ + gceHAL_ARG_VERSION version; + +} +gcsTEXTURE_BINDTEXTS_ARGS; + +/* Construct a new gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_Construct( + IN gcoHAL Hal, + OUT gcoTEXTURE * Texture + ); + +/* Construct a new gcoTEXTURE object with type information. */ +gceSTATUS +gcoTEXTURE_ConstructEx( + IN gcoHAL Hal, + IN gceTEXTURE_TYPE Type, + OUT gcoTEXTURE * Texture + ); + + +/* Construct a new sized gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_ConstructSized( + IN gcoHAL Hal, + IN gceSURF_FORMAT Format, + IN gctUINT Width, + IN gctUINT Height, + IN gctUINT Depth, + IN gctUINT Faces, + IN gctUINT MipMapCount, + IN gcePOOL Pool, + OUT gcoTEXTURE * Texture + ); + +/* Destroy an gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_Destroy( + IN gcoTEXTURE Texture + ); + +/* Upload data to an gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_Upload( + IN gcoTEXTURE Texture, + IN gctINT MipMap, + IN gceTEXTURE_FACE Face, + IN gctSIZE_T Width, + IN gctSIZE_T Height, + IN gctUINT Slice, + IN gctCONST_POINTER Memory, + IN gctSIZE_T Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_COLOR_SPACE SrcColorSpace + ); + +/* Upload data to an gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_UploadSub( + IN gcoTEXTURE Texture, + IN gctINT MipMap, + IN gceTEXTURE_FACE Face, + IN gctSIZE_T X, + IN gctSIZE_T Y, + IN gctSIZE_T Width, + IN gctSIZE_T Height, + IN gctUINT Slice, + IN gctCONST_POINTER Memory, + IN gctSIZE_T Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_COLOR_SPACE SrcColorSpace, + IN gctUINT32 PhysicalAddress + ); + + +/* Upload YUV data to an gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_UploadYUV( + IN gcoTEXTURE Texture, + IN gceTEXTURE_FACE Face, + IN gctUINT Width, + IN gctUINT Height, + IN gctUINT Slice, + IN gctPOINTER Memory[3], + IN gctINT Stride[3], + IN gceSURF_FORMAT Format + ); + +/* Upload compressed data to an gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_UploadCompressed( + IN gcoTEXTURE Texture, + IN gctINT MipMap, + IN gceTEXTURE_FACE Face, + IN gctSIZE_T Width, + IN gctSIZE_T Height, + IN gctUINT Slice, + IN gctCONST_POINTER Memory, + IN gctSIZE_T Bytes + ); + +/* Upload compressed sub data to an gcoTEXTURE object. */ +gceSTATUS +gcoTEXTURE_UploadCompressedSub( + IN gcoTEXTURE Texture, + IN gctINT MipMap, + IN gceTEXTURE_FACE Face, + IN gctSIZE_T XOffset, + IN gctSIZE_T YOffset, + IN gctSIZE_T Width, + IN gctSIZE_T Height, + IN gctUINT Slice, + IN gctCONST_POINTER Memory, + IN gctSIZE_T Size + ); + +/* Get gcoSURF object for a mipmap level. */ +gceSTATUS +gcoTEXTURE_GetMipMap( + IN gcoTEXTURE Texture, + IN gctUINT MipMap, + OUT gcoSURF * Surface + ); + +/* Get gcoSURF object for a mipmap level and face offset. */ +gceSTATUS +gcoTEXTURE_GetMipMapFace( + IN gcoTEXTURE Texture, + IN gctUINT MipMap, + IN gceTEXTURE_FACE Face, + OUT gcoSURF * Surface, + OUT gctSIZE_T_PTR Offset + ); + +gceSTATUS +gcoTEXTURE_GetMipMapSlice( + IN gcoTEXTURE Texture, + IN gctUINT MipMap, + IN gctUINT Slice, + OUT gcoSURF * Surface, + OUT gctSIZE_T_PTR Offset + ); + +gceSTATUS +gcoTEXTURE_AddMipMap( + IN gcoTEXTURE Texture, + IN gctINT Level, + IN gctINT InternalFormat, + IN gceSURF_FORMAT Format, + IN gctSIZE_T Width, + IN gctSIZE_T Height, + IN gctSIZE_T Depth, + IN gctUINT Faces, + IN gcePOOL Pool, + IN gctBOOL Filterable, + OUT gcoSURF * Surface + ); + +gceSTATUS +gcoTEXTURE_AddMipMapEx( + IN gcoTEXTURE Texture, + IN gctINT Level, + IN gctINT InternalFormat, + IN gceSURF_FORMAT Format, + IN gctSIZE_T Width, + IN gctSIZE_T Height, + IN gctSIZE_T Depth, + IN gctUINT Faces, + IN gcePOOL Pool, + IN gctUINT32 Samples, + IN gctBOOL Protected, + IN gctBOOL Filterable, + OUT gcoSURF * Surface + ); + +gceSTATUS +gcoTEXTURE_AddMipMapFromClient( + IN gcoTEXTURE Texture, + IN gctINT Level, + IN gcoSURF Surface + ); + +gceSTATUS +gcoTEXTURE_AddMipMapFromSurface( + IN gcoTEXTURE Texture, + IN gctINT Level, + IN gcoSURF Surface + ); + +gceSTATUS +gcoTEXTURE_LockMipMap( + IN gcoTEXTURE Texture, + IN gctUINT MipMap, + OPTIONAL OUT gctUINT32 * Address, + OPTIONAL OUT gctPOINTER * Memory + ); + +gceSTATUS +gcoTEXTURE_SetEndianHint( + IN gcoTEXTURE Texture, + IN gceENDIAN_HINT EndianHint + ); + +gceSTATUS +gcoTEXTURE_Disable( + IN gcoHAL Hal, + IN gctINT Sampler, + IN gctBOOL DefaultInteger + ); + +gceSTATUS +gcoTEXTURE_Clear( + IN gcoTEXTURE Texture, + IN gctINT MipMap + ); + +gceSTATUS +gcoTEXTURE_Flush( + IN gcoTEXTURE Texture + ); + +gceSTATUS +gcoTEXTURE_FlushVS( + IN gcoTEXTURE Texture + ); + +gceSTATUS +gcoTEXTURE_QueryCaps( + IN gcoHAL Hal, + OUT gctUINT * MaxWidth, + OUT gctUINT * MaxHeight, + OUT gctUINT * MaxDepth, + OUT gctBOOL * Cubic, + OUT gctBOOL * NonPowerOfTwo, + OUT gctUINT * VertexSamplers, + OUT gctUINT * PixelSamplers + ); + +gceSTATUS +gcoTEXTURE_GetClosestFormat( + IN gcoHAL Hal, + IN gceSURF_FORMAT InFormat, + OUT gceSURF_FORMAT* OutFormat + ); + +gceSTATUS +gcoTEXTURE_GetClosestFormatEx( + IN gcoHAL Hal, + IN gceSURF_FORMAT InFormat, + IN gceTEXTURE_TYPE TextureType, + OUT gceSURF_FORMAT* OutFormat + ); + +gceSTATUS +gcoTEXTURE_GetFormatInfo( + IN gcoTEXTURE Texture, + IN gctINT preferLevel, + OUT gcsSURF_FORMAT_INFO_PTR * TxFormatInfo + ); + +gceSTATUS +gcoTEXTURE_GetTextureFormatName( + IN gcsSURF_FORMAT_INFO_PTR TxFormatInfo, + OUT gctCONST_STRING * TxName + ); + +gceSTATUS +gcoTEXTURE_RenderIntoMipMap( + IN gcoTEXTURE Texture, + IN gctINT Level + ); + +gceSTATUS +gcoTEXTURE_RenderIntoMipMap2( + IN gcoTEXTURE Texture, + IN gctINT Level, + IN gctBOOL Sync + ); + +gceSTATUS +gcoTEXTURE_IsRenderable( + IN gcoTEXTURE Texture, + IN gctUINT Level + ); + +gceSTATUS +gcoTEXTURE_IsComplete( + IN gcoTEXTURE Texture, + IN gcsTEXTURE_PTR Info, + IN gctINT BaseLevel, + IN gctINT MaxLevel + ); + +gceSTATUS +gcoTEXTURE_CheckTexLevel0Attrib( + IN gcoTEXTURE Texture, + IN gctINT MaxLevel, + IN gctINT usedLevel + ); + +gceSTATUS +gcoTEXTURE_BindTexture( + IN gcoTEXTURE Texture, + IN gctINT Target, + IN gctINT Sampler, + IN gcsTEXTURE_PTR Info + ); + +gceSTATUS +gcoTEXTURE_BindTextureEx( + IN gcoTEXTURE Texture, + IN gctINT Target, + IN gctINT Sampler, + IN gcsTEXTURE_PTR Info, + IN gctINT textureLayer + ); + +gceSTATUS +gcoTEXTURE_BindTextureDesc( + IN gcoTEXTURE Texture, + IN gctINT Sampler, + IN gcsTEXTURE_PTR Info, + IN gctINT TextureLayer + ); + +gceSTATUS +gcoTEXTURE_SetDescDirty( + IN gcoTEXTURE Texture + ); + +gceSTATUS +gcoTEXTURE_InitParams( + IN gcoHAL Hal, + IN gcsTEXTURE_PTR TexParams + ); + +gceSTATUS +gcoTEXTURE_SetDepthTextureFlag( + IN gcoTEXTURE Texture, + IN gctBOOL unsized + ); + +gceSTATUS +gcoTEXTURE_BindTextureTS( + IN gcsTEXTURE_BINDTEXTS_ARGS * args + ); + +gceSTATUS +gcoTEXTURE_GenerateMipMap( + IN gcoTEXTURE Texture, + IN gctINT BaseLevel, + IN gctINT MaxLevel, + IN gctBOOL sRGBDecode + ); + +/******************************************************************************\ +******************************* gcoSTREAM Object ****************************** +\******************************************************************************/ + +gceSTATUS +gcoSTREAM_Construct( + IN gcoHAL Hal, + OUT gcoSTREAM * Stream + ); + +gceSTATUS +gcoSTREAM_Destroy( + IN gcoSTREAM Stream + ); + +gceSTATUS +gcoSTREAM_Upload( + IN gcoSTREAM Stream, + IN gctCONST_POINTER Buffer, + IN gctSIZE_T Offset, + IN gctSIZE_T Bytes, + IN gctBOOL Dynamic + ); + +gceSTATUS +gcoSTREAM_ReAllocBufNode( + IN gcoSTREAM Stream + ); + +gceSTATUS +gcoSTREAM_SetStride( + IN gcoSTREAM Stream, + IN gctUINT32 Stride + ); + +gceSTATUS +gcoSTREAM_Node( + IN gcoSTREAM Stream, + OUT gcsSURF_NODE_PTR * Node + ); + +gceSTATUS +gcoSTREAM_Lock( + IN gcoSTREAM Stream, + OUT gctPOINTER * Logical, + OUT gctUINT32 * Physical + ); + +gceSTATUS +gcoSTREAM_Unlock( + IN gcoSTREAM Stream + ); + +gceSTATUS +gcoSTREAM_Reserve( + IN gcoSTREAM Stream, + IN gctSIZE_T Bytes + ); + +gceSTATUS +gcoSTREAM_Flush( + IN gcoSTREAM Stream + ); + +typedef struct _gcsSTREAM_INFO +{ + gctUINT index; + gceVERTEX_FORMAT format; + gctBOOL normalized; + gctUINT components; + gctSIZE_T size; + gctCONST_POINTER data; + gctUINT stride; +} +gcsSTREAM_INFO, * gcsSTREAM_INFO_PTR; + +gceSTATUS +gcoSTREAM_CPUCacheOperation( + IN gcoSTREAM Stream, + IN gceCACHEOPERATION Operation + ); + +gceSTATUS +gcoSTREAM_CPUCacheOperation_Range( + IN gcoSTREAM Stream, + IN gctSIZE_T Offset, + IN gctSIZE_T Length, + IN gceCACHEOPERATION Operation + ); + +/******************************************************************************\ +******************************** gcoVERTEX Object ****************************** +\******************************************************************************/ + +typedef struct _gcsVERTEX_ATTRIBUTES +{ + gceVERTEX_FORMAT format; + gctBOOL normalized; + gctUINT32 components; + gctSIZE_T size; + gctUINT32 stream; + gctUINT32 offset; + gctUINT32 stride; +} +gcsVERTEX_ATTRIBUTES; + +gceSTATUS +gcoVERTEX_Construct( + IN gcoHAL Hal, + OUT gcoVERTEX * Vertex + ); + +gceSTATUS +gcoVERTEX_Destroy( + IN gcoVERTEX Vertex + ); + +gceSTATUS +gcoVERTEX_Reset( + IN gcoVERTEX Vertex + ); + +gceSTATUS +gcoVERTEX_EnableAttribute( + IN gcoVERTEX Vertex, + IN gctUINT32 Index, + IN gceVERTEX_FORMAT Format, + IN gctBOOL Normalized, + IN gctUINT32 Components, + IN gcoSTREAM Stream, + IN gctUINT32 Offset, + IN gctUINT32 Stride + ); + +gceSTATUS +gcoVERTEX_DisableAttribute( + IN gcoVERTEX Vertex, + IN gctUINT32 Index + ); + +gceSTATUS +gcoVERTEX_Bind( + IN gcoVERTEX Vertex + ); + +/******************************************************************************* +***** gcoVERTEXARRAY Object ***************************************************/ + +typedef struct _gcsATTRIBUTE +{ + /* Enabled. */ + gctBOOL enable; + + /* Number of components. */ + gctINT size; + + /* Attribute format. */ + gceVERTEX_FORMAT format; + + /* Flag whether the attribute is normalized or not. */ + gctBOOL normalized; + + /* Stride of the component. */ + gctSIZE_T stride; + + /* Divisor of the attribute */ + gctUINT divisor; + + /* Pointer to the attribute data. */ + gctCONST_POINTER pointer; + + /* Stream object owning the attribute data. */ + gcoBUFOBJ stream; + + /* Generic values for attribute. */ + gctFLOAT genericValue[4]; + + /* Generic size for attribute. */ + gctINT genericSize; + + /* Vertex shader linkage. */ + gctUINT linkage; + +#if gcdUSE_WCLIP_PATCH + /* Does it hold positions? */ + gctBOOL isPosition; +#endif + + /* Index to vertex array */ + gctINT arrayIdx; + + gceATTRIB_SCHEME convertScheme; + + /* Pointer to the temporary buffer to be freed */ + gcoBUFOBJ tempStream; + + /* Pointer to the temporary memory to be freed */ + gctCONST_POINTER tempMemory; +} +gcsATTRIBUTE, +* gcsATTRIBUTE_PTR; + +typedef struct _gcsVERTEXARRAY +{ + /* Enabled. */ + gctBOOL enable; + + /* Number of components. */ + gctINT size; + + /* Attribute format. */ + gceVERTEX_FORMAT format; + + /* Flag whether the attribute is normalized or not. */ + gctBOOL normalized; + + /* Stride of the component. */ + gctUINT stride; + + /* Divisor of the attribute */ + gctUINT divisor; + + /* Pointer to the attribute data. */ + gctCONST_POINTER pointer; + + /* Stream object owning the attribute data. */ + gcoSTREAM stream; + + /* Generic values for attribute. */ + gctFLOAT genericValue[4]; + + /* Generic size for attribute. */ + gctINT genericSize; + + /* Vertex shader linkage. */ + gctUINT linkage; + + gctBOOL isPosition; +} +gcsVERTEXARRAY, +* gcsVERTEXARRAY_PTR; + +gceSTATUS +gcoVERTEXARRAY_Construct( + IN gcoHAL Hal, + OUT gcoVERTEXARRAY * Vertex + ); + +gceSTATUS +gcoVERTEXARRAY_Destroy( + IN gcoVERTEXARRAY Vertex + ); + +/* If don't consider isolation, STREAM_INFO / INDEX_INFO could be +** include in the struct of instantDraw in chip level.*/ +typedef struct _gcsVERTEXARRAY_STREAM_INFO +{ + gctUINT attribMask; + gctSIZE_T first; + gctSIZE_T count; + gcePRIMITIVE primMode; + gctSIZE_T primCount; + gctINT vertexInstIndex; + gctBOOL instanced; + gctSIZE_T instanceCount; + + union _gcsVERTEXARRAY_STREAM_INFO_UNION + { + struct _gcsVERTEXARRAY_STREAM_ES11_INFO + { + gcsVERTEXARRAY_PTR attributes; + }es11; + + struct _gcsVERTEXARRAY_STREAM_ES30_INFO + { + gcsATTRIBUTE_PTR attributes; + }es30; + }u; +}gcsVERTEXARRAY_STREAM_INFO, +*gcsVERTEXARRAY_STREAM_INFO_PTR; + +typedef const struct _gcsVERTEXARRAY_STREAM_INFO* gcsVERTEXARRAY_STREAM_INFO_CONST_PTR; + +typedef struct _gcsVERTEXARRAY_INDEX_INFO +{ + gctSIZE_T count; + gceINDEX_TYPE indexType; + gctPOINTER indexMemory; + gctUINT restartElement; + + union _gcsVERTEXARRAY_INDEX_INFO_UNION + { + struct _gcsVERTEXARRAY_INDEX_ES11_INFO + { + gcoINDEX indexBuffer; + }es11; + + struct _gcsVERTEXARRAY_INDEX_ES30_INFO + { + gcoBUFOBJ indexBuffer; + }es30; + }u; +}gcsVERTEXARRAY_INDEX_INFO, +*gcsVERTEXARRAY_INDEX_INFO_PTR; + +typedef const struct _gcsVERTEXARRAY_INDEX_INFO* gcsVERTEXARRAY_INDEX_INFO_CONST_PTR; + +gceSTATUS +gcoVERTEXARRAY_IndexBind( + IN gcoVERTEXARRAY Vertex, + IN gcsVERTEXARRAY_INDEX_INFO_PTR IndexInfo + ); + +gceSTATUS +gcoVERTEXARRAY_StreamBind( + IN gcoVERTEXARRAY Vertex, +#if gcdUSE_WCLIP_PATCH + IN OUT gctFLOAT * WLimitRms, + IN OUT gctBOOL * WLimitRmsDirty, +#endif + IN gcsVERTEXARRAY_STREAM_INFO_CONST_PTR StreamInfo, + IN gcsVERTEXARRAY_INDEX_INFO_CONST_PTR IndexInfo + ); + +gceSTATUS +gcoVERTEXARRAY_IndexBind_Ex( + IN gcoVERTEXARRAY Vertex, + IN OUT gcsVERTEXARRAY_STREAM_INFO_PTR StreamInfo, + IN gcsVERTEXARRAY_INDEX_INFO_PTR IndexInfo + ); + +gceSTATUS +gcoVERTEXARRAY_StreamBind_Ex( + IN gcoVERTEXARRAY Vertex, +#if gcdUSE_WCLIP_PATCH + IN OUT gctFLOAT * WLimitRms, + IN OUT gctBOOL * WLimitRmsDirty, +#endif + IN OUT gcsVERTEXARRAY_STREAM_INFO_PTR StreamInfo, + IN gcsVERTEXARRAY_INDEX_INFO_PTR IndexInfo + ); + +gceSTATUS +gcoVERTEXARRAY_Bind( + IN gcoVERTEXARRAY Vertex, + IN gctUINT32 EnableBits, + IN gcsVERTEXARRAY_PTR VertexArray, + IN gctUINT First, + IN gctSIZE_T * Count, + IN gceINDEX_TYPE IndexType, + IN gcoINDEX IndexObject, + IN gctPOINTER IndexMemory, + IN OUT gcePRIMITIVE * PrimitiveType, +#if gcdUSE_WCLIP_PATCH + IN OUT gctUINT * PrimitiveCount, + IN OUT gctFLOAT * wLimitRms, + IN OUT gctBOOL * wLimitDirty +#else + IN OUT gctUINT * PrimitiveCount +#endif + ); + +/* Frame Database */ +gceSTATUS +gcoHAL_AddFrameDB( + void + ); + +gceSTATUS +gcoHAL_DumpFrameDB( + gctCONST_STRING Filename OPTIONAL + ); + +gceSTATUS +gcoHAL_InitGPUProfile( + void + ); + +gceSTATUS +gcoHAL_DumpGPUProfile( + void + ); + +/****************************************************************************** +**********************gcoBUFOBJ object***************************************** +*******************************************************************************/ +/* Construct a new gcoBUFOBJ object. */ +gceSTATUS +gcoBUFOBJ_Construct( + IN gcoHAL Hal, + IN gceBUFOBJ_TYPE Type, + OUT gcoBUFOBJ * BufObj + ); + +/* Destroy a gcoBUFOBJ object. */ +gceSTATUS +gcoBUFOBJ_Destroy( + IN gcoBUFOBJ BufObj + ); + +/* Lock pbo in memory. */ +gceSTATUS +gcoBUFOBJ_Lock( + IN gcoBUFOBJ BufObj, + OUT gctUINT32 * Address, + OUT gctPOINTER * Memory + ); + +/* Lock pbo in memory. */ +gceSTATUS +gcoBUFOBJ_FastLock( + IN gcoBUFOBJ BufObj, + OUT gctUINT32 * Address, + OUT gctPOINTER * Memory + ); + +/* Unlock pbo that was previously locked with gcoBUFOBJ_Lock. */ +gceSTATUS +gcoBUFOBJ_Unlock( + IN gcoBUFOBJ BufObj + ); + +/* Free existing pbo buffer. */ +gceSTATUS +gcoBUFOBJ_Free( + IN gcoBUFOBJ BufObj + ); + +/* Upload data into an pbo buffer. */ +gceSTATUS +gcoBUFOBJ_Upload( + IN gcoBUFOBJ BufObj, + IN gctCONST_POINTER Buffer, + IN gctSIZE_T Offset, + IN gctSIZE_T Bytes, + IN gceBUFOBJ_USAGE Usage + ); + +/* Bind an index object to the hardware. */ +gceSTATUS +gcoBUFOBJ_IndexBind ( + IN gcoBUFOBJ Index, + IN gceINDEX_TYPE Type, + IN gctSIZE_T Offset, + IN gctSIZE_T Count, + IN gctUINT RestartElement + ); + +/* Find min and max index for the index buffer */ +gceSTATUS +gcoBUFOBJ_IndexGetRange( + IN gcoBUFOBJ Index, + IN gceINDEX_TYPE Type, + IN gctSIZE_T Offset, + IN gctUINT32 Count, + OUT gctUINT32 * MinimumIndex, + OUT gctUINT32 * MaximumIndex + ); + +/* Sets a buffer object as dirty */ +gceSTATUS +gcoBUFOBJ_SetDirty( + IN gcoBUFOBJ BufObj, + IN gctBOOL Dirty + ); + +gctBOOL +gcoBUFOBJ_IsDirty( + IN gcoBUFOBJ BufObj + ); + +/* Creates a new buffer if needed */ +gceSTATUS +gcoBUFOBJ_AlignIndexBufferWhenNeeded( + IN gcoBUFOBJ BufObj, + IN gctSIZE_T Offset, + OUT gcoBUFOBJ * AlignedBufObj + ); + +/* Cache operations on whole range */ +gceSTATUS +gcoBUFOBJ_CPUCacheOperation( + IN gcoBUFOBJ BufObj, + IN gceCACHEOPERATION Operation + ); + +/* Cache operations on a specified range */ +gceSTATUS +gcoBUFOBJ_CPUCacheOperation_Range( + IN gcoBUFOBJ BufObj, + IN gctSIZE_T Offset, + IN gctSIZE_T Length, + IN gceCACHEOPERATION Operation + ); + +/* Return size of the bufobj */ +gceSTATUS +gcoBUFOBJ_GetSize( + IN gcoBUFOBJ BufObj, + OUT gctSIZE_T_PTR Size + ); + +/* Return memory node of the bufobj */ +gceSTATUS +gcoBUFOBJ_GetNode( + IN gcoBUFOBJ BufObj, + OUT gcsSURF_NODE_PTR * Node + ); + +gceSTATUS +gcoBUFOBJ_ReAllocBufNode( + IN gcoBUFOBJ BufObj + ); + +/* Handle GPU cache operations */ +gceSTATUS +gcoBUFOBJ_SetCPUWrite( + gcoBUFOBJ BufObj, + gctBOOL Value + ); + +/* Dump buffer. */ +void +gcoBUFOBJ_Dump( + IN gcoBUFOBJ BufObj + ); + +#endif /* gcdENABLE_3D */ + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_engine_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_engine_vg.h b/include_v6.4.3.p4.6/gc_hal_engine_vg.h new file mode 100644 index 0000000..122fade --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_engine_vg.h @@ -0,0 +1,1059 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_engine_vg_h_ +#define __gc_hal_engine_vg_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "gc_hal_types.h" + +/******************************************************************************\ +******************************** VG Structures ******************************* +\******************************************************************************/ + +/** +** @ingroup gcoVG +** +** @brief Definition of the color ramp used by the gradient paints. +** +** The gcsCOLOR_RAMP structure defines the layout of one single color inside +** a color ramp which is used by gradient paints. +*/ +typedef struct _gcsCOLOR_RAMP +{ + /** Value for the color stop. */ + gctFLOAT stop; + + /** Red color channel value for the color stop. */ + gctFLOAT red; + + /** Green color channel value for the color stop. */ + gctFLOAT green; + + /** Blue color channel value for the color stop. */ + gctFLOAT blue; + + /** Alpha color channel value for the color stop. */ + gctFLOAT alpha; +} +gcsCOLOR_RAMP, * gcsCOLOR_RAMP_PTR; + +/** +** @ingroup gcoVG +** +** @brief Definition of the color ramp used by the gradient paints in fixed form. +** +** The gcsCOLOR_RAMP structure defines the layout of one single color inside +** a color ramp which is used by gradient paints. +*/ +typedef struct _gcsFIXED_COLOR_RAMP +{ + /** Value for the color stop. */ + gctFIXED_POINT stop; + + /** Red color channel value for the color stop. */ + gctFIXED_POINT red; + + /** Green color channel value for the color stop. */ + gctFIXED_POINT green; + + /** Blue color channel value for the color stop. */ + gctFIXED_POINT blue; + + /** Alpha color channel value for the color stop. */ + gctFIXED_POINT alpha; +} +gcsFIXED_COLOR_RAMP, * gcsFIXED_COLOR_RAMP_PTR; + + +/** +** @ingroup gcoVG +** +** @brief Rectangle structure used by the gcoVG object. +** +** This structure defines the layout of a rectangle. Make sure width and +** height are larger than 0. +*/ +typedef struct _gcsVG_RECT * gcsVG_RECT_PTR; +typedef struct _gcsVG_RECT +{ + /** Left location of the rectangle. */ + gctINT x; + + /** Top location of the rectangle. */ + gctINT y; + + /** Width of the rectangle. */ + gctINT width; + + /** Height of the rectangle. */ + gctINT height; +} +gcsVG_RECT; + +/** +** @ingroup gcoVG +** +** @brief Path command buffer attribute structure. +** +** The gcsPATH_BUFFER_INFO structure contains the specifics about +** the layout of the path data command buffer. +*/ +typedef struct _gcsPATH_BUFFER_INFO * gcsPATH_BUFFER_INFO_PTR; +typedef struct _gcsPATH_BUFFER_INFO +{ + gctUINT reservedForHead; + gctUINT reservedForTail; +} +gcsPATH_BUFFER_INFO; + +/** +** @ingroup gcoVG +** +** @brief Definition of the path data container structure. +** +** The gcsPATH structure defines the layout of the path data container. +*/ +typedef struct _gcsPATH_DATA * gcsPATH_DATA_PTR; +typedef struct _gcsPATH_DATA +{ + /* Data container in command buffer format. */ + gcsCMDBUFFER data; + + /* Path data type. */ + gcePATHTYPE dataType; +} +gcsPATH_DATA; + + +/******************************************************************************\ +********************************* gcoHAL Object ******************************** +\******************************************************************************/ + +/* Query path data storage attributes. */ +gceSTATUS +gcoHAL_QueryPathStorage( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + OUT gcsPATH_BUFFER_INFO_PTR Information + ); + +/* Associate a completion signal with the command buffer. */ +gceSTATUS +gcoHAL_AssociateCompletion( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcsPATH_DATA_PTR PathData + ); + +/* Release the current command buffer completion signal. */ +gceSTATUS +gcoHAL_DeassociateCompletion( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcsPATH_DATA_PTR PathData + ); + +/* Verify whether the command buffer is still in use. */ +gceSTATUS +gcoHAL_CheckCompletion( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcsPATH_DATA_PTR PathData + ); + +/* Wait until the command buffer is no longer in use. */ +gceSTATUS +gcoHAL_WaitCompletion( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcsPATH_DATA_PTR PathData + ); + +/* Flush the pixel cache. */ +gceSTATUS +gcoHAL_Flush( +#if gcdGC355_PROFILER + IN gcoHAL Hal, + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth +#else + IN gcoHAL Hal +#endif + ); + +/* Split a harwdare address into pool and offset. */ +gceSTATUS +gcoHAL_SplitAddress( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT32 Address, + OUT gcePOOL * Pool, + OUT gctUINT32 * Offset + ); + +/* Combine pool and offset into a harwdare address. */ +gceSTATUS +gcoHAL_CombineAddress( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcePOOL Pool, + IN gctUINT32 Offset, + OUT gctUINT32 * Address + ); + +/* Schedule to free linear video memory allocated. */ +gceSTATUS +gcoHAL_ScheduleVideoMemory( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT32 Node + ); + +/* Free linear video memory allocated with gcoHAL_AllocateLinearVideoMemory. */ +gceSTATUS +gcoHAL_FreeVideoMemory( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT32 Node, + IN gctBOOL asynchroneous + ); + +/* Query command buffer attributes. */ +gceSTATUS +gcoHAL_QueryCommandBuffer( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + OUT gcsCOMMAND_BUFFER_INFO_PTR Information + ); +/* Allocate and lock linear video memory. */ +gceSTATUS +gcoHAL_AllocateLinearVideoMemory( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT Size, + IN gctUINT Alignment, + IN gcePOOL Pool, + OUT gctUINT32 * Node, + OUT gctUINT32 * Address, + OUT gctPOINTER * Memory + ); + +/* Align the specified size accordingly to the hardware requirements. */ +gceSTATUS +gcoHAL_GetAlignedSurfaceSize( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceSURF_TYPE Type, + IN OUT gctUINT32_PTR Width, + IN OUT gctUINT32_PTR Height + ); + +gceSTATUS +gcoHAL_ReserveTask( + IN gcoHAL Hal, +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceBLOCK Block, + IN gctUINT TaskCount, + IN gctUINT32 Bytes, + OUT gctPOINTER * Memory + ); +/******************************************************************************\ +********************************** gcoVG Object ******************************** +\******************************************************************************/ + +/** @defgroup gcoVG gcoVG +** +** The gcoVG object abstracts the VG hardware pipe. +*/ +#if gcdGC355_PROFILER +void +gcoVG_ProfilerEnableDisable( + IN gcoVG Vg, + IN gctUINT enableGetAPITimes, + IN gctFILE apiTimeFile + ); + +void +gcoVG_ProfilerTreeDepth( + IN gcoVG Vg, + IN gctUINT TreeDepth + ); + +void +gcoVG_ProfilerSetStates( + IN gcoVG Vg, + IN gctUINT treeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth + ); +#endif + +gctBOOL +gcoVG_IsMaskSupported( +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceSURF_FORMAT Format + ); + +gctBOOL +gcoVG_IsTargetSupported( +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceSURF_FORMAT Format + ); + +gctBOOL +gcoVG_IsImageSupported( +#if gcdGC355_PROFILER + IN gcoVG Vg, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceSURF_FORMAT Format + ); + +gctUINT8 gcoVG_PackColorComponent( +#if gcdGC355_PROFILER + gcoVG Vg, + gctUINT TreeDepth, + gctUINT saveLayerTreeDepth, + gctUINT varTreeDepth, +#endif + gctFLOAT Value + ); + +gceSTATUS +gcoVG_Construct( + IN gcoHAL Hal, + OUT gcoVG * Vg + ); + +gceSTATUS +gcoVG_Destroy( + IN gcoVG Vg +#if gcdGC355_PROFILER +, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth +#endif + ); + +void +gcoVG_SetTesselationSize( + IN gcoVG Vg, + IN gctUINT Width, + IN gctUINT Height + ); + +gceSTATUS +gcoVG_SetTarget( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Target, + IN gceORIENTATION orientation + ); + +gceSTATUS +gcoVG_UnsetTarget( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Surface + ); + +gceSTATUS +gcoVG_SetUserToSurface( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT UserToSurface[9] + ); + +gceSTATUS +gcoVG_SetSurfaceToImage( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT SurfaceToImage[9] + ); + +gceSTATUS +gcoVG_EnableMask( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctBOOL Enable + ); + +gceSTATUS +gcoVG_SetMask( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Mask + ); + +gceSTATUS +gcoVG_UnsetMask( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Surface + ); + +gceSTATUS +gcoVG_FlushMask( + IN gcoVG Vg +#if gcdGC355_PROFILER +, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth +#endif + ); + +gceSTATUS +gcoVG_EnableScissor( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctBOOL Enable + ); + +gceSTATUS +gcoVG_SetScissor( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctSIZE_T RectangleCount, + IN gcsVG_RECT_PTR Rectangles + ); + +gceSTATUS +gcoVG_EnableColorTransform( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctBOOL Enable + ); + +gceSTATUS +gcoVG_SetColorTransform( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT ColorTransform[8] + ); + +gceSTATUS +gcoVG_SetTileFillColor( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT Red, + IN gctFLOAT Green, + IN gctFLOAT Blue, + IN gctFLOAT Alpha + ); + +gceSTATUS +gcoVG_SetSolidPaint( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT8 Red, + IN gctUINT8 Green, + IN gctUINT8 Blue, + IN gctUINT8 Alpha + ); + +gceSTATUS +gcoVG_SetLinearPaint( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT Constant, + IN gctFLOAT StepX, + IN gctFLOAT StepY + ); + +gceSTATUS +gcoVG_SetRadialPaint( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT LinConstant, + IN gctFLOAT LinStepX, + IN gctFLOAT LinStepY, + IN gctFLOAT RadConstant, + IN gctFLOAT RadStepX, + IN gctFLOAT RadStepY, + IN gctFLOAT RadStepXX, + IN gctFLOAT RadStepYY, + IN gctFLOAT RadStepXY + ); + +gceSTATUS +gcoVG_SetPatternPaint( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctFLOAT UConstant, + IN gctFLOAT UStepX, + IN gctFLOAT UStepY, + IN gctFLOAT VConstant, + IN gctFLOAT VStepX, + IN gctFLOAT VStepY, + IN gctBOOL Linear + ); + +gceSTATUS +gcoVG_SetColorRamp( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF ColorRamp, + IN gceTILE_MODE ColorRampSpreadMode + ); + +gceSTATUS +gcoVG_SetPattern( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctINT32 width, + IN gctINT32 height, + IN gcoSURF Pattern, + IN gceTILE_MODE TileMode, + IN gceIMAGE_FILTER Filter + ); + +gceSTATUS +gcoVG_SetImageMode( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceVG_IMAGE Mode + ); + +gceSTATUS +gcoVG_SetBlendMode( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceVG_BLEND Mode + ); + +gceSTATUS +gcoVG_SetRenderingQuality( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceRENDER_QUALITY Quality + ); + +gceSTATUS +gcoVG_SetFillRule( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceFILL_RULE FillRule + ); + +gceSTATUS +gcoVG_FinalizePath( + IN gcoVG Vg, + IN gcsPATH_DATA_PTR PathData + ); + +gceSTATUS +gcoVG_Clear( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctINT X, + IN gctINT Y, + IN gctINT Width, + IN gctINT Height + ); + +gceSTATUS +gcoVG_DrawPath( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcsPATH_DATA_PTR PathData, + IN gctFLOAT Scale, + IN gctFLOAT Bias, +#if gcdMOVG + IN gctUINT32 Width, + IN gctUINT32 Height, + IN gctFLOAT *Bounds, +#endif + IN gctBOOL SoftwareTesselation + ); + +gceSTATUS +gcoVG_DrawImage( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gceORIENTATION orientation, + IN gcoSURF Source, + IN gcsPOINT_PTR SourceOrigin, + IN gcsPOINT_PTR TargetOrigin, + IN gcsSIZE_PTR SourceSize, + IN gctINT SourceX, + IN gctINT SourceY, + IN gctINT TargetX, + IN gctINT TargetY, + IN gctINT Width, + IN gctINT Height, + IN gctBOOL Mask, + IN gctBOOL isDrawImage + ); + +gceSTATUS +gcoVG_TesselateImage( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Image, + IN gcsVG_RECT_PTR Rectangle, + IN gceIMAGE_FILTER Filter, + IN gctBOOL Mask, +#if gcdMOVG + IN gctBOOL SoftwareTesselation, + IN gceVG_BLEND BlendMode, + IN gctINT Width, + IN gctINT Height +#else + IN gctBOOL SoftwareTesselation +#endif + ); + +gceSTATUS +gcoVG_DrawSurfaceToImage( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Image, + IN const gcsVG_RECT_PTR SrcRectangle, + IN const gctFLOAT DstBounds[4], + IN const gctFLOAT DstPoints[8], + IN const gctFLOAT ImgMatrix[9], + IN const gctFLOAT RectMatrix[9], + IN gceIMAGE_FILTER Filter, + IN gctBOOL Mask, + IN gctBOOL FirstTime +#if gcdMOVG +, + IN gctINT TSWidth, + IN gctINT TSHeight +#endif + ); + +gceSTATUS +gcoVG_DrawSurfaceToImageMasked( + IN gcoVG Vg, + IN gcoSURF Image, + IN gcsVG_RECT_PTR SrcRect, + IN gctINT X, + IN gctINT Y, + IN gctINT Width, + IN gctINT Height, + IN const gctFLOAT Matrix[9] + ); + +gceSTATUS +gcoVG_Blit( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Source, + IN gcoSURF Target, + IN gcsVG_RECT_PTR SrcRect, + IN gcsVG_RECT_PTR TrgRect, + IN gceIMAGE_FILTER Filter, + IN gceVG_BLEND Mode + ); + +gceSTATUS +gcoVG_ColorMatrix( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Source, + IN gcoSURF Target, + IN const gctFLOAT * Matrix, + IN gceCHANNEL ColorChannels, + IN gctBOOL FilterLinear, + IN gctBOOL FilterPremultiplied, + IN gcsPOINT_PTR SourceOrigin, + IN gcsPOINT_PTR TargetOrigin, + IN gctINT Width, + IN gctINT Height + ); + +gceSTATUS +gcoVG_SeparableConvolve( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Source, + IN gcoSURF Target, + IN gctINT KernelWidth, + IN gctINT KernelHeight, + IN gctINT ShiftX, + IN gctINT ShiftY, + IN const gctINT16 * KernelX, + IN const gctINT16 * KernelY, + IN gctFLOAT Scale, + IN gctFLOAT Bias, + IN gceTILE_MODE TilingMode, + IN gctFLOAT_PTR FillColor, + IN gceCHANNEL ColorChannels, + IN gctBOOL FilterLinear, + IN gctBOOL FilterPremultiplied, + IN gcsPOINT_PTR SourceOrigin, + IN gcsPOINT_PTR TargetOrigin, + IN gcsSIZE_PTR SourceSize, + IN gctINT Width, + IN gctINT Height + ); + +gceSTATUS +gcoVG_GaussianBlur( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gcoSURF Source, + IN gcoSURF Target, + IN gctFLOAT StdDeviationX, + IN gctFLOAT StdDeviationY, + IN gceTILE_MODE TilingMode, + IN gctFLOAT_PTR FillColor, + IN gceCHANNEL ColorChannels, + IN gctBOOL FilterLinear, + IN gctBOOL FilterPremultiplied, + IN gcsPOINT_PTR SourceOrigin, + IN gcsPOINT_PTR TargetOrigin, + IN gcsSIZE_PTR SourceSize, + IN gctINT Width, + IN gctINT Height + ); + +gceSTATUS +gcoVG_EnableDither( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctBOOL Enable + ); + +/* Color Key States. */ +gceSTATUS +gcoVG_SetColorKey( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gcsPROFILERFUNCNODE *DList, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT32* Values, + IN gctBOOL * Enables +); + +/* Index Color States. */ +gceSTATUS +gcoVG_SetColorIndexTable( + IN gcoVG Vg, +#if gcdGC355_PROFILER + IN gcsPROFILERFUNCNODE *DList, + IN gctUINT TreeDepth, + IN gctUINT saveLayerTreeDepth, + IN gctUINT varTreeDepth, +#endif + IN gctUINT32* Values, + IN gctINT32 Count +); + +gceSTATUS +gcoVG_SetYUV2RGBStdCust( + IN gcoVG Vg, + IN gctBOOL YUV2RGBStdCust + ); + +gceSTATUS +gcoVG_SetYUV2RGB( + IN gcoVG Vg, + IN gctFLOAT *coef, + IN gctFLOAT *offset, + IN gctBOOL *cfg +); + +gceSTATUS +gcoVG_SetRGB2YUVParameters( + IN gcoVG Vg, + IN gctFLOAT *coef, + IN gctFLOAT *offset, + IN gctBOOL *cfg +); + +/* VG RS feature support: YUV format conversion. */ +gceSTATUS +gcoVG_Resolve( + IN gcoVG Vg, + IN gcoSURF Source, + IN gcoSURF Target, + IN gctINT SX, + IN gctINT SY, + IN gctINT DX, + IN gctINT DY, + IN gctINT Width, + IN gctINT Height, + IN gctINT Src_uv, + IN gctINT Src_standard, + IN gctINT Dst_uv, + IN gctINT Dst_standard, + IN gctINT Dst_alpha, + IN gctBOOL Dst_standard_cust +); +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_vg_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_enum.h b/include_v6.4.3.p4.6/gc_hal_enum.h new file mode 100644 index 0000000..a767554 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_enum.h @@ -0,0 +1,2190 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_enum_h_ +#define __gc_hal_enum_h_ + +#include "gc_hal_options.h" +#include "shared/gc_hal_enum_shared.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* dummy draw type.*/ +typedef enum _gceDUMMY_DRAW_TYPE +{ + gcvDUMMY_DRAW_INVALID = 0, + gcvDUMMY_DRAW_GC400, + gcvDUMMY_DRAW_V60, +} +gceDUMMY_DRAW_TYPE; + +/* Option Set*/ +typedef enum _gceOPTION +{ + /* HW setting. */ + gcvOPTION_PREFER_ZCONVERT_BYPASS = 0, + gcvOPTION_PREFER_TILED_DISPLAY_BUFFER = 1, + gcvOPTION_PREFER_GUARDBAND = 2, + gcvOPTION_PREFER_TPG_TRIVIALMODEL = 3, + gcvOPTION_PREFER_RA_DEPTH_WRITE = 4, + gcvOPTION_PREFER_USC_RECONFIG = 5, + gcvOPTION_PREFER_DISALBE_HZ = 6, + + /* SW options */ + gcvOPTION_HW_NULL = 50, + gcvOPTION_PRINT_OPTION = 51, + gcvOPTION_KERNEL_FENCE = 52, + gcvOPTION_ASYNC_PIPE = 53, + gcvOPTION_FBO_PREFER_MEM = 54, + gcvOPTION_GPU_TEX_UPLOAD = 55, + gcvOPTION_GPU_BUFOBJ_UPLOAD = 56, + gcvOPTION_NO_Y_INVERT = 60, + + /* OCL option */ + gcvOPTION_OCL_ASYNC_BLT = 200, + gcvOPTION_OCL_IN_THREAD, + gcvOPTION_COMPRESSION_DEC400, + gcvOPTION_OCL_VIR_SHADER, + gcvOPTION_OCL_USE_MULTI_DEVICES, + +#if gcdUSE_VX + /* OVX options that HAL could access */ + gcvOPTION_OVX_ENABLE_NN_ZDP3 = 500, + gcvOPTION_OVX_ENABLE_NN_ZDP6, + gcvOPTION_OVX_ENABLE_NN_STRIDE, + gcvOPTION_OVX_USE_MULTI_DEVICES, + gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_256B, + gcvOPTION_OVX_ENABLE_NN_DDR_BURST_SIZE_64B, +#endif + /* Insert option above this comment only */ + gcvOPTION_COUNT /* Not a OPTION*/ +} +gceOPTION; + +typedef enum _gceFRAMEINFO +{ + /* Total frame count in one run */ + gcvFRAMEINFO_FRAME_NUM = 0, + /* Total draw count in current frame, including draw/compute */ + gcvFRAMEINFO_DRAW_NUM = 1, + /* Total compute count in current frame, subset of drawNum */ + gcvFRAMEINFO_COMPUTE_NUM = 2, + /* Total dual16 draw/compute count in current frame, subset of drawNum */ + gcvFRAMEINFO_DUAL16_NUM = 3, + /* Current programID is being set. only valid for ES20 driver right now */ + gcvFRAMEINFO_PROGRAM_ID = 4, + + gcvFRAMEINFO_COUNT, +} +gceFRAMEINFO; + +typedef enum _gceFRAMEINFO_OP +{ + gcvFRAMEINFO_OP_INC = 0, + gcvFRAMEINFO_OP_DEC = 1, + gcvFRAMEINFO_OP_ZERO = 2, + gcvFRAMEINFO_OP_GET = 3, + gcvFRAMEINFO_OP_SET = 4, + gcvFRAMEINFO_OP_COUNT, +} +gceFRAMEINFO_OP; + +typedef enum _gceSURF_USAGE +{ + gcvSURF_USAGE_UNKNOWN, + gcvSURF_USAGE_RESOLVE_AFTER_CPU, + gcvSURF_USAGE_RESOLVE_AFTER_3D +} +gceSURF_USAGE; + +typedef enum _gceSURF_COLOR_SPACE +{ + gcvSURF_COLOR_SPACE_UNKNOWN, + gcvSURF_COLOR_SPACE_LINEAR, + gcvSURF_COLOR_SPACE_NONLINEAR, +} +gceSURF_COLOR_SPACE; + +typedef enum _gceSURF_COLOR_TYPE +{ + gcvSURF_COLOR_UNKNOWN = 0, + gcvSURF_COLOR_LINEAR = 0x01, + gcvSURF_COLOR_ALPHA_PRE = 0x02, +} +gceSURF_COLOR_TYPE; + +/* Rotation. */ +typedef enum _gceSURF_ROTATION +{ + gcvSURF_0_DEGREE = 0, + gcvSURF_90_DEGREE, + gcvSURF_180_DEGREE, + gcvSURF_270_DEGREE, + gcvSURF_FLIP_X, + gcvSURF_FLIP_Y, + + gcvSURF_POST_FLIP_X = 0x40000000, + gcvSURF_POST_FLIP_Y = 0x80000000, +} +gceSURF_ROTATION; + +/* Surface flag */ +typedef enum _gceSURF_FLAG +{ + /* None flag */ + gcvSURF_FLAG_NONE = 0x0, + /* content is preserved after swap */ + gcvSURF_FLAG_CONTENT_PRESERVED = 0x1, + /* content is updated after swap*/ + gcvSURF_FLAG_CONTENT_UPDATED = 0x2, + /* content is y inverted */ + gcvSURF_FLAG_CONTENT_YINVERTED = 0x4, + /* surface has multiple nodes */ + gcvSURF_FLAG_MULTI_NODE = 0x8, + /* surface no need do dither when resovle*/ + gcvSURF_FLAG_DITHER_DISABLED = 0x10, + /* surface used a fake hal format */ + gcvSURF_FLAG_FAKE_FORMAT = 0x20, +} +gceSURF_FLAG; + +typedef enum _gceMIPMAP_IMAGE_FORMAT +{ + gcvUNKNOWN_MIPMAP_IMAGE_FORMAT = -2 +} +gceMIPMAP_IMAGE_FORMAT; + +typedef enum _gceIMAGE_MEM_TYPE +{ + gcvIMAGE_MEM_DEFAULT, + gcvIMAGE_MEM_HOST_PTR, + gcvIMAGE_MEM_HOST_PTR_UNCACHED, + gcvIMAGE_MEM_HOST_PHY_PTR, + gcvIMAGE_MEM_HOST_PHY_PTR_UNCACHED, +} +gceIMAGE_MEM_TYPE; + +typedef enum _gceSURF_YUV_COLOR_SPACE +{ + gcvSURF_ITU_REC601, + gcvSURF_ITU_REC709, + gcvSURF_ITU_REC2020, +} +gceSURF_YUV_COLOR_SPACE; + +typedef enum _gceSURF_YUV_SAMPLE_RANGE +{ + gcvSURF_YUV_FULL_RANGE, + gcvSURF_YUV_NARROW_RANGE, +} +gceSURF_YUV_SAMPLE_RANGE; + +typedef enum _gceSURF_YUV_CHROMA_SITING +{ + gcvSURF_YUV_CHROMA_SITING_0, + gcvSURF_YUV_CHROMA_SITING_0_5, +} +gceSURF_YUV_CHROMA_SITING; + +typedef enum _gceSURF_INFO_TYPE +{ + gcvSURF_INFO_UNKNOWN = 0, + gcvSURF_INFO_LAYERSIZE = 1, + gcvSURF_INFO_SLICESIZE = 2, +} +gceSURF_INFO_TYPE; + +/* Format modifiers. */ +typedef enum _gceSURF_FORMAT_MODE +{ + gcvSURF_FORMAT_OCL = 0x80000000, + gcvSURF_FORMAT_PATCH_BORDER = 0x40000000, +} +gceSURF_FORMAT_MODE; + +/* Pixel swizzle modes. */ +typedef enum _gceSURF_SWIZZLE +{ + gcvSURF_NOSWIZZLE = 0, + gcvSURF_ARGB, + gcvSURF_ABGR, + gcvSURF_RGBA, + gcvSURF_BGRA +} +gceSURF_SWIZZLE; + +/* Transparency modes. */ +typedef enum _gceSURF_TRANSPARENCY +{ + /* Valid only for PE 1.0 */ + gcvSURF_OPAQUE = 0, + gcvSURF_SOURCE_MATCH, + gcvSURF_SOURCE_MASK, + gcvSURF_PATTERN_MASK, +} +gceSURF_TRANSPARENCY; + +/* Surface Alignment. */ +typedef enum _gceSURF_ALIGNMENT +{ + gcvSURF_FOUR = 0, + gcvSURF_SIXTEEN, + gcvSURF_SUPER_TILED, + gcvSURF_SPLIT_TILED, + gcvSURF_SPLIT_SUPER_TILED +} +gceSURF_ALIGNMENT; + +/* Surface Addressing. */ +typedef enum _gceSURF_ADDRESSING +{ + gcvSURF_NO_STRIDE_TILED = 0, + gcvSURF_NO_STRIDE_LINEAR, + gcvSURF_STRIDE_TILED, + gcvSURF_STRIDE_LINEAR +} +gceSURF_ADDRESSING; + +/* Transparency modes. */ +typedef enum _gce2D_TRANSPARENCY +{ + /* Valid only for PE 2.0 */ + gcv2D_OPAQUE = 0, + gcv2D_KEYED, + gcv2D_MASKED +} +gce2D_TRANSPARENCY; + +/* Mono packing modes. */ +typedef enum _gceSURF_MONOPACK +{ + gcvSURF_PACKED8 = 0, + gcvSURF_PACKED16, + gcvSURF_PACKED32, + gcvSURF_UNPACKED, +} +gceSURF_MONOPACK; + +/* Blending modes. */ +typedef enum _gceSURF_BLEND_MODE +{ + /* Porter-Duff blending modes. */ + /* Fsrc Fdst */ + gcvBLEND_CLEAR = 0, /* 0 0 */ + gcvBLEND_SRC, /* 1 0 */ + gcvBLEND_DST, /* 0 1 */ + gcvBLEND_SRC_OVER_DST, /* 1 1 - Asrc */ + gcvBLEND_DST_OVER_SRC, /* 1 - Adst 1 */ + gcvBLEND_SRC_IN_DST, /* Adst 0 */ + gcvBLEND_DST_IN_SRC, /* 0 Asrc */ + gcvBLEND_SRC_OUT_DST, /* 1 - Adst 0 */ + gcvBLEND_DST_OUT_SRC, /* 0 1 - Asrc */ + gcvBLEND_SRC_ATOP_DST, /* Adst 1 - Asrc */ + gcvBLEND_DST_ATOP_SRC, /* 1 - Adst Asrc */ + gcvBLEND_SRC_XOR_DST, /* 1 - Adst 1 - Asrc */ + + /* Special blending modes. */ + gcvBLEND_SET, /* DST = 1 */ + gcvBLEND_SUB /* DST = DST * (1 - SRC) */ +} +gceSURF_BLEND_MODE; + +/* Per-pixel alpha modes. */ +typedef enum _gceSURF_PIXEL_ALPHA_MODE +{ + gcvSURF_PIXEL_ALPHA_STRAIGHT = 0, + gcvSURF_PIXEL_ALPHA_INVERSED +} +gceSURF_PIXEL_ALPHA_MODE; + +/* Global alpha modes. */ +typedef enum _gceSURF_GLOBAL_ALPHA_MODE +{ + gcvSURF_GLOBAL_ALPHA_OFF = 0, + gcvSURF_GLOBAL_ALPHA_ON, + gcvSURF_GLOBAL_ALPHA_SCALE +} +gceSURF_GLOBAL_ALPHA_MODE; + +/* Color component modes for alpha blending. */ +typedef enum _gceSURF_PIXEL_COLOR_MODE +{ + gcvSURF_COLOR_STRAIGHT = 0, + gcvSURF_COLOR_MULTIPLY +} +gceSURF_PIXEL_COLOR_MODE; + +/* Color component modes for alpha blending. */ +typedef enum _gce2D_PIXEL_COLOR_MULTIPLY_MODE +{ + gcv2D_COLOR_MULTIPLY_DISABLE = 0, + gcv2D_COLOR_MULTIPLY_ENABLE +} +gce2D_PIXEL_COLOR_MULTIPLY_MODE; + +/* Color component modes for alpha blending. */ +typedef enum _gce2D_GLOBAL_COLOR_MULTIPLY_MODE +{ + gcv2D_GLOBAL_COLOR_MULTIPLY_DISABLE = 0, + gcv2D_GLOBAL_COLOR_MULTIPLY_ALPHA, + gcv2D_GLOBAL_COLOR_MULTIPLY_COLOR +} +gce2D_GLOBAL_COLOR_MULTIPLY_MODE; + +/* Alpha blending factor modes. */ +typedef enum _gceSURF_BLEND_FACTOR_MODE +{ + gcvSURF_BLEND_ZERO = 0, + gcvSURF_BLEND_ONE, + gcvSURF_BLEND_STRAIGHT, + gcvSURF_BLEND_INVERSED, + gcvSURF_BLEND_COLOR, + gcvSURF_BLEND_COLOR_INVERSED, + gcvSURF_BLEND_SRC_ALPHA_SATURATED, + gcvSURF_BLEND_STRAIGHT_NO_CROSS, + gcvSURF_BLEND_INVERSED_NO_CROSS, + gcvSURF_BLEND_COLOR_NO_CROSS, + gcvSURF_BLEND_COLOR_INVERSED_NO_CROSS, + gcvSURF_BLEND_SRC_ALPHA_SATURATED_CROSS +} +gceSURF_BLEND_FACTOR_MODE; + +/* Alpha blending porter duff rules. */ +typedef enum _gce2D_PORTER_DUFF_RULE +{ + gcvPD_CLEAR = 0, + gcvPD_SRC, + gcvPD_SRC_OVER, + gcvPD_DST_OVER, + gcvPD_SRC_IN, + gcvPD_DST_IN, + gcvPD_SRC_OUT, + gcvPD_DST_OUT, + gcvPD_SRC_ATOP, + gcvPD_DST_ATOP, + gcvPD_ADD, + gcvPD_XOR, + gcvPD_DST +} +gce2D_PORTER_DUFF_RULE; + +/* Alpha blending factor modes. */ +typedef enum _gce2D_YUV_COLOR_MODE +{ + gcv2D_YUV_601= 0, + gcv2D_YUV_709, + gcv2D_YUV_USER_DEFINED, + gcv2D_YUV_USER_DEFINED_CLAMP, + + /* Default setting is for src. gcv2D_YUV_DST + can be ORed to set dst. + */ + gcv2D_YUV_DST = 0x80000000, +} +gce2D_YUV_COLOR_MODE; + +/* Nature rotation rules. */ +typedef enum _gce2D_NATURE_ROTATION +{ + gcvNR_0_DEGREE = 0, + gcvNR_LEFT_90_DEGREE, + gcvNR_RIGHT_90_DEGREE, + gcvNR_180_DEGREE, + gcvNR_FLIP_X, + gcvNR_FLIP_Y, + gcvNR_TOTAL_RULE, +} +gce2D_NATURE_ROTATION; + +typedef enum _gce2D_COMMAND +{ + gcv2D_CLEAR = 0, + gcv2D_LINE, + gcv2D_BLT, + gcv2D_STRETCH, + gcv2D_HOR_FILTER, + gcv2D_VER_FILTER, + gcv2D_MULTI_SOURCE_BLT, + gcv2D_FILTER_BLT, +} +gce2D_COMMAND; + +typedef enum _gce2D_TILE_STATUS_CONFIG +{ + gcv2D_TSC_DISABLE = 0, + gcv2D_TSC_ENABLE = 0x00000001, + gcv2D_TSC_COMPRESSED = 0x00000002, + gcv2D_TSC_DOWN_SAMPLER = 0x00000004, + gcv2D_TSC_2D_COMPRESSED = 0x00000008, + + gcv2D_TSC_DEC_COMPRESSED = 0x00000020, + gcv2D_TSC_DEC_TPC = 0x00000040, + gcv2D_TSC_DEC_TPC_COMPRESSED = 0x00000080, + + gcv2D_TSC_V4_COMPRESSED = 0x00000100, + gcv2D_TSC_V4_COMPRESSED_256B = 0x00000200 | gcv2D_TSC_V4_COMPRESSED, + + gcv2D_TSC_DEC_TPC_TILED = gcv2D_TSC_DEC_COMPRESSED | gcv2D_TSC_DEC_TPC, + gcv2D_TSC_DEC_TPC_TILED_COMPRESSED = gcv2D_TSC_DEC_TPC_TILED | gcv2D_TSC_DEC_TPC_COMPRESSED, + + gcv2D_TSC_TPC_COMPRESSED = 0x00001000, + gcv2D_TSC_TPC_COMPRESSED_V10 = gcv2D_TSC_TPC_COMPRESSED | 0x00000400, + gcv2D_TSC_TPC_COMPRESSED_V11 = gcv2D_TSC_TPC_COMPRESSED | 0x00000800, +} +gce2D_TILE_STATUS_CONFIG; + +typedef enum _gce2D_DEC400_MINOR_VERSION +{ + gcv2D_DEC400_MINOR_V1 = 1, + gcv2D_DEC400_MINOR_V2 = 2, + gcv2D_DEC400_MINOR_V3 = 3, +} +gce2D_DEC400_MINOR_VERSION; + +typedef enum _gce2D_QUERY +{ + gcv2D_QUERY_RGB_ADDRESS_MIN_ALIGN = 0, + gcv2D_QUERY_RGB_STRIDE_MIN_ALIGN, + gcv2D_QUERY_YUV_ADDRESS_MIN_ALIGN, + gcv2D_QUERY_YUV_STRIDE_MIN_ALIGN, + gcv2D_QUERY_DEC400_MINOR_VERSION, +} +gce2D_QUERY; + +typedef enum _gce2D_SUPER_TILE_VERSION +{ + gcv2D_SUPER_TILE_VERSION_V1 = 1, + gcv2D_SUPER_TILE_VERSION_V2 = 2, + gcv2D_SUPER_TILE_VERSION_V3 = 3, +} +gce2D_SUPER_TILE_VERSION; + +typedef enum _gce2D_STATE +{ + gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE = 1, + gcv2D_STATE_SUPER_TILE_VERSION, + gcv2D_STATE_EN_GAMMA, + gcv2D_STATE_DE_GAMMA, + gcv2D_STATE_MULTI_SRC_BLIT_UNIFIED_DST_RECT, + gcv2D_STATE_MULTI_SRC_BLIT_BILINEAR_FILTER, + gcv2D_STATE_PROFILE_ENABLE, + gcv2D_STATE_XRGB_ENABLE, + + gcv2D_STATE_ARRAY_EN_GAMMA = 0x10001, + gcv2D_STATE_ARRAY_DE_GAMMA, + gcv2D_STATE_ARRAY_CSC_YUV_TO_RGB, + gcv2D_STATE_ARRAY_CSC_RGB_TO_YUV, + + gcv2D_STATE_DEC_TPC_NV12_10BIT = 0x20001, + gcv2D_STATE_ARRAY_YUV_SRC_TILE_STATUS_ADDR, + gcv2D_STATE_ARRAY_YUV_DST_TILE_STATUS_ADDR, +} +gce2D_STATE; + +typedef enum _gce2D_STATE_PROFILE +{ + gcv2D_STATE_PROFILE_NONE = 0x0, + gcv2D_STATE_PROFILE_COMMAND = 0x1, + gcv2D_STATE_PROFILE_SURFACE = 0x2, + gcv2D_STATE_PROFILE_ALL = 0xFFFF, +} +gce2D_STATE_PROFILE; + +/* Texture object types */ +typedef enum _gceTEXTURE_TYPE +{ + gcvTEXTURE_UNKNOWN = 0, + gcvTEXTURE_1D, + gcvTEXTURE_2D, + gcvTEXTURE_3D, + gcvTEXTURE_CUBEMAP, + gcvTEXTURE_1D_ARRAY, + gcvTEXTURE_2D_ARRAY, + gcvTEXTURE_2D_MS, + gcvTEXTURE_2D_MS_ARRAY, + gcvTEXTURE_CUBEMAP_ARRAY, + gcvTEXTURE_EXTERNAL +} +gceTEXTURE_TYPE; + +#if gcdENABLE_3D +/* Texture functions. */ +typedef enum _gceTEXTURE_FUNCTION +{ + gcvTEXTURE_DUMMY = 0, + gcvTEXTURE_REPLACE = 0, + gcvTEXTURE_MODULATE, + gcvTEXTURE_ADD, + gcvTEXTURE_ADD_SIGNED, + gcvTEXTURE_INTERPOLATE, + gcvTEXTURE_SUBTRACT, + gcvTEXTURE_DOT3 +} +gceTEXTURE_FUNCTION; + +/* Texture sources. */ +typedef enum _gceTEXTURE_SOURCE +{ + gcvCOLOR_FROM_TEXTURE = 0, + gcvCOLOR_FROM_CONSTANT_COLOR, + gcvCOLOR_FROM_PRIMARY_COLOR, + gcvCOLOR_FROM_PREVIOUS_COLOR +} +gceTEXTURE_SOURCE; + +/* Texture source channels. */ +typedef enum _gceTEXTURE_CHANNEL +{ + gcvFROM_COLOR = 0, + gcvFROM_ONE_MINUS_COLOR, + gcvFROM_ALPHA, + gcvFROM_ONE_MINUS_ALPHA +} +gceTEXTURE_CHANNEL; +#endif /* gcdENABLE_3D */ + +/* Filter types. */ +typedef enum _gceFILTER_TYPE +{ + gcvFILTER_SYNC = 0, + gcvFILTER_BLUR, + gcvFILTER_USER +} +gceFILTER_TYPE; + +/* Filter pass types. */ +typedef enum _gceFILTER_PASS_TYPE +{ + gcvFILTER_HOR_PASS = 0, + gcvFILTER_VER_PASS +} +gceFILTER_PASS_TYPE; + +/* Endian hints. */ +typedef enum _gceENDIAN_HINT +{ + gcvENDIAN_NO_SWAP = 0, + gcvENDIAN_SWAP_WORD = 1, + gcvENDIAN_SWAP_DWORD = 2, + gcvENDIAN_SWAP_QWORD = 3, +} +gceENDIAN_HINT; + +/* Tiling modes. */ +typedef enum _gceTILING +{ + gcvINVALIDTILED = 0x0, /* Invalid tiling */ + /* Tiling basic modes enum'ed in power of 2. */ + gcvLINEAR = 0x1, /* No tiling. */ + gcvTILED = 0x2, /* 4x4 tiling. */ + gcvSUPERTILED = 0x4, /* 64x64 tiling. */ + gcvMINORTILED = 0x8, /* 2x2 tiling. */ + + /* Tiling special layouts. */ + gcvTILING_SPLIT_BUFFER = 0x10, + gcvTILING_X_MAJOR = 0x20, + gcvTILING_Y_MAJOR = 0x40, + gcvTILING_SWAP = 0x80, + + /* Tiling combination layouts. */ + gcvMULTI_TILED = gcvTILED + | gcvTILING_SPLIT_BUFFER, + + gcvMULTI_SUPERTILED = gcvSUPERTILED + | gcvTILING_SPLIT_BUFFER, + + gcvYMAJOR_SUPERTILED = gcvSUPERTILED + | gcvTILING_Y_MAJOR, + + gcvTILED_8X4 = 0x0100, + gcvTILED_4X8 = 0x0100 | gcvTILING_SWAP, + gcvTILED_8X8 = 0x0200, + gcvTILED_16X4 = 0x0400, + gcvTILED_32X4 = 0x0800, + gcvTILED_64X4 = 0x1000, + + gcvTILED_8X8_XMAJOR = gcvTILED_8X8 | gcvTILING_X_MAJOR, + gcvTILED_8X8_YMAJOR = gcvTILED_8X8 | gcvTILING_Y_MAJOR, + + gcvSUPERTILED_128B = 0x10000 | gcvSUPERTILED, + gcvSUPERTILED_256B = 0x20000 | gcvSUPERTILED, +} +gceTILING; + +typedef enum _gceCACHE_MODE +{ + gcvCACHE_NONE, + gcvCACHE_128, + gcvCACHE_256, +} +gceCACHE_MODE; + +#define DEFAULT_CACHE_MODE gcvCACHE_256 + +/* 2D pattern type. */ +typedef enum _gce2D_PATTERN +{ + gcv2D_PATTERN_SOLID = 0, + gcv2D_PATTERN_MONO, + gcv2D_PATTERN_COLOR, + gcv2D_PATTERN_INVALID +} +gce2D_PATTERN; + +/* 2D source type. */ +typedef enum _gce2D_SOURCE +{ + gcv2D_SOURCE_MASKED = 0, + gcv2D_SOURCE_MONO, + gcv2D_SOURCE_COLOR, + gcv2D_SOURCE_INVALID +} +gce2D_SOURCE; + +typedef enum _gceMMU_MODE +{ + gcvMMU_MODE_1K, + gcvMMU_MODE_4K, +} gceMMU_MODE; + +/* gcdDUMP message type. */ +typedef enum _gceDEBUG_MESSAGE_TYPE +{ + gcvMESSAGE_TEXT, + gcvMESSAGE_DUMP +} +gceDEBUG_MESSAGE_TYPE; + +/* Shading format. */ +typedef enum _gceSHADING +{ + gcvSHADING_SMOOTH, + gcvSHADING_FLAT_D3D, + gcvSHADING_FLAT_OPENGL, +} +gceSHADING; + +/* Culling modes. */ +typedef enum _gceCULL +{ + gcvCULL_NONE, + gcvCULL_CCW, + gcvCULL_CW, +} +gceCULL; + +/* Fill modes. */ +typedef enum _gceFILL +{ + gcvFILL_POINT, + gcvFILL_WIRE_FRAME, + gcvFILL_SOLID, +} +gceFILL; + +/* Compare modes. */ +typedef enum _gceCOMPARE +{ + gcvCOMPARE_INVALID = 0, + gcvCOMPARE_NEVER, + gcvCOMPARE_NOT_EQUAL, + gcvCOMPARE_LESS, + gcvCOMPARE_LESS_OR_EQUAL, + gcvCOMPARE_EQUAL, + gcvCOMPARE_GREATER, + gcvCOMPARE_GREATER_OR_EQUAL, + gcvCOMPARE_ALWAYS, +} +gceCOMPARE; + +/* Stencil modes. */ +typedef enum _gceSTENCIL_MODE +{ + gcvSTENCIL_NONE, + gcvSTENCIL_SINGLE_SIDED, + gcvSTENCIL_DOUBLE_SIDED, +} +gceSTENCIL_MODE; + +/* Stencil operations. */ +typedef enum _gceSTENCIL_OPERATION +{ + gcvSTENCIL_KEEP, + gcvSTENCIL_REPLACE, + gcvSTENCIL_ZERO, + gcvSTENCIL_INVERT, + gcvSTENCIL_INCREMENT, + gcvSTENCIL_DECREMENT, + gcvSTENCIL_INCREMENT_SATURATE, + gcvSTENCIL_DECREMENT_SATURATE, + gcvSTENCIL_OPERATION_INVALID = -1 +} +gceSTENCIL_OPERATION; + +/* Stencil selection. */ +typedef enum _gceSTENCIL_WHERE +{ + gcvSTENCIL_FRONT, + gcvSTENCIL_BACK, +} +gceSTENCIL_WHERE; + +/* Texture addressing selection. */ +typedef enum _gceTEXTURE_WHICH +{ + gcvTEXTURE_S, + gcvTEXTURE_T, + gcvTEXTURE_R, +} +gceTEXTURE_WHICH; + +/* Texture addressing modes. */ +typedef enum _gceTEXTURE_ADDRESSING +{ + gcvTEXTURE_INVALID = 0, + gcvTEXTURE_CLAMP, + gcvTEXTURE_WRAP, + gcvTEXTURE_MIRROR, + gcvTEXTURE_BORDER, + gcvTEXTURE_MIRROR_ONCE, +} +gceTEXTURE_ADDRESSING; + +/* Texture filters. */ +typedef enum _gceTEXTURE_FILTER +{ + gcvTEXTURE_NONE, + gcvTEXTURE_POINT, + gcvTEXTURE_LINEAR, + gcvTEXTURE_ANISOTROPIC, +} +gceTEXTURE_FILTER; + +typedef enum _gceTEXTURE_COMPONENT +{ + gcvTEXTURE_COMPONENT_R, + gcvTEXTURE_COMPONENT_G, + gcvTEXTURE_COMPONENT_B, + gcvTEXTURE_COMPONENT_A, + + gcvTEXTURE_COMPONENT_NUM, +} gceTEXTURE_COMPONENT; + +/* Texture swizzle modes. */ +typedef enum _gceTEXTURE_SWIZZLE +{ + gcvTEXTURE_SWIZZLE_R = 0, + gcvTEXTURE_SWIZZLE_G, + gcvTEXTURE_SWIZZLE_B, + gcvTEXTURE_SWIZZLE_A, + gcvTEXTURE_SWIZZLE_0, + gcvTEXTURE_SWIZZLE_1, + + gcvTEXTURE_SWIZZLE_INVALID, +} gceTEXTURE_SWIZZLE; + +typedef enum _gceTEXTURE_SRGBDECODE +{ + gcvTEXTURE_SRGB_INVALID = 0, + gcvTEXTURE_DECODE, + gcvTEXTURE_SKIP_DECODE, +}gceTEXTURE_SRGBDECODE; + +typedef enum _gceTEXTURE_COMPARE_MODE +{ + gcvTEXTURE_COMPARE_MODE_INVALID = 0, + gcvTEXTURE_COMPARE_MODE_NONE, + gcvTEXTURE_COMPARE_MODE_REF, +} gceTEXTURE_COMPARE_MODE; + +typedef enum _gceTEXTURE_DS_MODE +{ + gcvTEXTURE_DS_MODE_INVALID = 0, + gcvTEXTURE_DS_MODE_DEPTH = 1, + gcvTEXTURE_DS_MODE_STENCIL = 2, +}gceTEXTURE_DS_MODE; + +typedef enum _gceTEXTURE_DS_TEX_MODE +{ + gcvTEXTURE_DS_TEXTURE_MODE_LUMINANCE = 0, + gcvTEXTURE_DS_TEXTURE_MODE_INTENSITY, + gcvTEXTURE_DS_TEXTURE_MODE_ALPHA, + gcvTEXTURE_DS_TEXTURE_MODE_RED, + + gcvTEXTURE_DS_TEXTURE_MODE_INVALID, +}gceTEXTURE_DS_TEX_MODE; + +/* Texture stage */ +typedef enum _gceTEXTURE_STAGE +{ + gcvTEXTURE_STAGE_INVALID = -1, + gcvTEXTURE_STAGE_VS = 0, + gcvTEXTURE_STAGE_TCS, + gcvTEXTURE_STAGE_TES, + gcvTEXTURE_STAGE_GS, + gcvTEXTURE_STAGE_FS, + gcvTEXTURE_STAGE_CS, + + gcvTEXTURE_STAGE_LAST +}gceTEXTURE_STAGE; + +/* Pixel output swizzle modes. */ +typedef enum _gcePIXEL_SWIZZLE +{ + gcvPIXEL_SWIZZLE_R = gcvTEXTURE_SWIZZLE_R, + gcvPIXEL_SWIZZLE_G = gcvTEXTURE_SWIZZLE_G, + gcvPIXEL_SWIZZLE_B = gcvTEXTURE_SWIZZLE_B, + gcvPIXEL_SWIZZLE_A = gcvTEXTURE_SWIZZLE_A, + + gcvPIXEL_SWIZZLE_INVALID, +} gcePIXEL_SWIZZLE; + +/* Primitive types. */ +typedef enum _gcePRIMITIVE +{ + gcvPRIMITIVE_POINT_LIST, + gcvPRIMITIVE_LINE_LIST, + gcvPRIMITIVE_LINE_STRIP, + gcvPRIMITIVE_LINE_LOOP, + gcvPRIMITIVE_TRIANGLE_LIST, + gcvPRIMITIVE_TRIANGLE_STRIP, + gcvPRIMITIVE_TRIANGLE_FAN, + gcvPRIMITIVE_RECTANGLE, + gcvPRIMITIVE_LINES_ADJACENCY, + gcvPRIMITIVE_LINE_STRIP_ADJACENCY, + gcvPRIMITIVE_TRIANGLES_ADJACENCY, + gcvPRIMITIVE_TRIANGLE_STRIP_ADJACENCY, + gcvPRIMITIVE_PATCH_LIST, +} +gcePRIMITIVE; + +/* Index types. */ +typedef enum _gceINDEX_TYPE +{ + gcvINDEX_8, + gcvINDEX_16, + gcvINDEX_32, +} +gceINDEX_TYPE; + +/* Multi GPU rendering modes. */ +typedef enum _gceMULTI_GPU_RENDERING_MODE +{ + gcvMULTI_GPU_RENDERING_MODE_OFF, + gcvMULTI_GPU_RENDERING_MODE_SPLIT_WIDTH, + gcvMULTI_GPU_RENDERING_MODE_SPLIT_HEIGHT, + gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED_64x64, + gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED_128x64, + gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED_128x128, + gcvMULTI_GPU_RENDERING_MODE_INTERLEAVED, + gcvMULTI_GPU_RENDERING_MODE_INVALID +} +gceMULTI_GPU_RENDERING_MODE; + +typedef enum _gceMULTI_GPU_MODE +{ + gcvMULTI_GPU_MODE_COMBINED = 0, + gcvMULTI_GPU_MODE_INDEPENDENT = 1 +} +gceMULTI_GPU_MODE; + +typedef enum _gceMACHINECODE +{ + gcvMACHINECODE_ANTUTU0 = 0x0, + + gcvMACHINECODE_GLB27_RELEASE_0, + + gcvMACHINECODE_GLB25_RELEASE_0, + gcvMACHINECODE_GLB25_RELEASE_1, + + /* keep it as the last enum */ + gcvMACHINECODE_COUNT +} +gceMACHINECODE; + +typedef enum _gceUNIFORMCVT +{ + gcvUNIFORMCVT_NONE = 0, + gcvUNIFORMCVT_TO_BOOL, + gcvUNIFORMCVT_TO_FLOAT, +} gceUNIFORMCVT; + +typedef enum _gceHAL_ARG_VERSION +{ + gcvHAL_ARG_VERSION_V1 = 0x0, + gcvHAL_ARG_VERSION_V2, +} +gceHAL_ARG_VERSION; + + +/** endian mode for each 2Bytes +* endian mode endian +*endian mode0: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +*endian mode1: 1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 +*endian mode2: 2 3 0 1 6 7 4 5 10 11 8 9 14 15 12 13 +*endain mode3: 3 2 1 0 7 6 5 4 11 10 9 8 15 14 13 12 +*endain mode4: 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3 +*endain mode5: 13 12 15 14 9 8 11 10 5 4 7 6 1 0 3 2 +*endain mode6: 14 15 12 13 10 11 8 9 6 7 4 5 2 3 0 1 +*endain mode7: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +**/ +typedef enum _gceENDIAN_MODE +{ + gcvENDIAN_MODE0 = 0x0, /* endian mode0 */ + gcvENDIAN_MODE1 = 0x1, /* endian mode1 */ + gcvENDIAN_MODE2 = 0x2, /* endian mode2 */ + gcvENDIAN_MODE3 = 0x3, /* endian mode3 */ + gcvENDIAN_MODE4 = 0x4, /* endian mode4 */ + gcvENDIAN_MODE5 = 0x5, /* endian mode5 */ + gcvENDIAN_MODE6 = 0x6, /* endian mode6 */ + gcvENDIAN_MODE7 = 0x7, /* endian mode7 */ +} +gceENDIAN_MODE; + +typedef enum _gceHW_FE_TYPE +{ + gcvHW_FE_WAIT_LINK, + gcvHW_FE_ASYNC, + gcvHW_FE_MULTI_CHANNEL, +} +gceHW_FE_TYPE; + +typedef enum _gceMCFE_CHANNEL_TYPE +{ + gcvMCFE_CHANNEL_NONE = 0, + gcvMCFE_CHANNEL_SYSTEM, + gcvMCFE_CHANNEL_SHADER, + gcvMCFE_CHANNEL_NN, + gcvMCFE_CHANNEL_TP, + + gcvMCFE_CHANNEL_3DBLIT = 128, +} +gceMCFE_CHANNEL_TYPE; + +typedef enum _gcePAGE_TYPE +{ + gcvPAGE_TYPE_1M, + gcvPAGE_TYPE_4K, +} +gcePAGE_TYPE; + +typedef enum _gceAREA_TYPE +{ + gcvAREA_TYPE_UNKNOWN = 0, + gcvAREA_TYPE_FLATMAP, + gcvAREA_TYPE_1M, + gcvAREA_TYPE_4K, +} +gceAREA_TYPE; + +/******************************************************************************* +** Broadcast interface. +*/ + +typedef enum _gceBROADCAST +{ + /* GPU might be idle. */ + gcvBROADCAST_GPU_IDLE, + + /* A commit is going to happen. */ + gcvBROADCAST_GPU_COMMIT, + + /* GPU seems to be stuck. */ + gcvBROADCAST_GPU_STUCK, + + /* First process gets attached. */ + gcvBROADCAST_FIRST_PROCESS, + + /* Last process gets detached. */ + gcvBROADCAST_LAST_PROCESS, + + /* AXI bus error. */ + gcvBROADCAST_AXI_BUS_ERROR, + + /* Out of memory. */ + gcvBROADCAST_OUT_OF_MEMORY, +} +gceBROADCAST; + +/* Notifications. */ +typedef enum _gceNOTIFY +{ + gcvNOTIFY_INTERRUPT, + gcvNOTIFY_COMMAND_QUEUE, +} +gceNOTIFY; + +/* Flush flags. */ +typedef enum _gceKERNEL_FLUSH +{ + gcvFLUSH_COLOR = 0x01, + gcvFLUSH_DEPTH = 0x02, + gcvFLUSH_TEXTURE = 0x04, + gcvFLUSH_2D = 0x08, + gcvFLUSH_L2 = 0x10, + gcvFLUSH_TILE_STATUS = 0x20, + gcvFLUSH_ICACHE = 0x40, + gcvFLUSH_TXDESC = 0x80, + gcvFLUSH_FENCE = 0x100, + gcvFLUSH_VERTEX = 0x200, + gcvFLUSH_TFBHEADER = 0x400, + gcvFLUSH_ALL = gcvFLUSH_COLOR + | gcvFLUSH_DEPTH + | gcvFLUSH_TEXTURE + | gcvFLUSH_2D + | gcvFLUSH_L2 + | gcvFLUSH_TILE_STATUS + | gcvFLUSH_ICACHE + | gcvFLUSH_TXDESC + | gcvFLUSH_FENCE + | gcvFLUSH_VERTEX + | gcvFLUSH_TFBHEADER +} +gceKERNEL_FLUSH; + +typedef enum _gceCOUNTER +{ + gcvCOUNTER_FRONT_END, + gcvCOUNTER_VERTEX_SHADER, + gcvCOUNTER_PRIMITIVE_ASSEMBLY, + gcvCOUNTER_SETUP, + gcvCOUNTER_RASTERIZER, + gcvCOUNTER_PIXEL_SHADER, + gcvCOUNTER_TEXTURE, + gcvCOUNTER_PIXEL_ENGINE, + gcvCOUNTER_MEMORY_CONTROLLER_COLOR, + gcvCOUNTER_MEMORY_CONTROLLER_DEPTH, + gcvCOUNTER_HOST_INTERFACE0, + gcvCOUNTER_HOST_INTERFACE1, + gcvCOUNTER_GPUL2_CACHE, + gcvCOUNTER_COUNT +} +gceCOUNTER; + +typedef enum _gceProfilerClient +{ + gcvCLIENT_OPENGLES11 = 1, + gcvCLIENT_OPENGLES, + gcvCLIENT_OPENGL, + gcvCLIENT_OPENVG, + gcvCLIENT_OPENCL, + gcvCLIENT_OPENVX, + gcvCLIENT_OPENVK, +} +gceProfilerClient; + +typedef enum _gceCOUNTER_OPTYPE +{ + gcvCOUNTER_OP_DRAW = 0, + gcvCOUNTER_OP_BLT = 1, + gcvCOUNTER_OP_COMPUTE = 2, + gcvCOUNTER_OP_RS = 3, + gcvCOUNTER_OP_FINISH = 4, + gcvCOUNTER_OP_FRAME = 5, + gcvCOUNTER_OP_NONE = 6 +} +gceCOUNTER_OPTYPE; + +typedef enum _gceProbeStatus +{ + gcvPROBE_Disabled = 0, + gcvPROBE_Paused = 1, + gcvPROBE_Enabled = 2, +} +gceProbeStatus; + +typedef enum _gceProbeCmd +{ + gcvPROBECMD_BEGIN = 0, + gcvPROBECMD_PAUSE = 1, + gcvPROBECMD_RESUME = 2, + gcvPROBECMD_END = 3, +} +gceProbeCmd; + +/******************************************************************************* +** Events. ********************************************************************* +*/ + +typedef enum _halEventType +{ + /* Keyboard event. */ + HAL_KEYBOARD, + + /* Mouse move event. */ + HAL_POINTER, + + /* Mouse button event. */ + HAL_BUTTON, + + /* Application close event. */ + HAL_CLOSE, + + /* Application window has been updated. */ + HAL_WINDOW_UPDATE +} +halEventType; + +/* Scancodes for keyboard. */ +typedef enum _halKeys +{ + HAL_UNKNOWN = -1, + + HAL_BACKSPACE = 0x08, + HAL_TAB, + HAL_ENTER = 0x0D, + HAL_ESCAPE = 0x1B, + + HAL_SPACE = 0x20, + HAL_SINGLEQUOTE = 0x27, + HAL_PAD_ASTERISK = 0x2A, + HAL_COMMA = 0x2C, + HAL_HYPHEN, + HAL_PERIOD, + HAL_SLASH, + HAL_0, + HAL_1, + HAL_2, + HAL_3, + HAL_4, + HAL_5, + HAL_6, + HAL_7, + HAL_8, + HAL_9, + HAL_SEMICOLON = 0x3B, + HAL_EQUAL = 0x3D, + HAL_A = 0x41, + HAL_B, + HAL_C, + HAL_D, + HAL_E, + HAL_F, + HAL_G, + HAL_H, + HAL_I, + HAL_J, + HAL_K, + HAL_L, + HAL_M, + HAL_N, + HAL_O, + HAL_P, + HAL_Q, + HAL_R, + HAL_S, + HAL_T, + HAL_U, + HAL_V, + HAL_W, + HAL_X, + HAL_Y, + HAL_Z, + HAL_LBRACKET, + HAL_BACKSLASH, + HAL_RBRACKET, + HAL_BACKQUOTE = 0x60, + + HAL_F1 = 0x80, + HAL_F2, + HAL_F3, + HAL_F4, + HAL_F5, + HAL_F6, + HAL_F7, + HAL_F8, + HAL_F9, + HAL_F10, + HAL_F11, + HAL_F12, + + HAL_LCTRL, + HAL_RCTRL, + HAL_LSHIFT, + HAL_RSHIFT, + HAL_LALT, + HAL_RALT, + HAL_CAPSLOCK, + HAL_NUMLOCK, + HAL_SCROLLLOCK, + HAL_PAD_0, + HAL_PAD_1, + HAL_PAD_2, + HAL_PAD_3, + HAL_PAD_4, + HAL_PAD_5, + HAL_PAD_6, + HAL_PAD_7, + HAL_PAD_8, + HAL_PAD_9, + HAL_PAD_HYPHEN, + HAL_PAD_PLUS, + HAL_PAD_SLASH, + HAL_PAD_PERIOD, + HAL_PAD_ENTER, + HAL_SYSRQ, + HAL_PRNTSCRN, + HAL_BREAK, + HAL_UP, + HAL_LEFT, + HAL_RIGHT, + HAL_DOWN, + HAL_HOME, + HAL_END, + HAL_PGUP, + HAL_PGDN, + HAL_INSERT, + HAL_DELETE, + HAL_LWINDOW, + HAL_RWINDOW, + HAL_MENU, + HAL_POWER, + HAL_SLEEP, + HAL_WAKE +} +halKeys; + +/*! + @brief Command codes between kernel module and TrustZone + @discussion + Critical services must be done in TrustZone to avoid sensitive content leak. Most of kernel module is kept in non-Secure os to minimize + code in TrustZone. + */ +typedef enum kernel_packet_command { + KERNEL_START_COMMAND, + KERNEL_SUBMIT, + KERNEL_MAP_MEMORY, /* */ + KERNEL_UNMAP_MEMORY, + KERNEL_ALLOCATE_SECRUE_MEMORY, /*! Security memory management. */ + KERNEL_FREE_SECURE_MEMORY, + KERNEL_EXECUTE, /* Execute a command buffer. */ + KERNEL_DUMP_MMU_EXCEPTION, + KERNEL_HANDLE_MMU_EXCEPTION, + KERNEL_READ_MMU_EXCEPTION, +} kernel_packet_command_t; + +enum { + gcvTA_COMMAND_INIT, + gcvTA_COMMAND_DISPATCH, + + gcvTA_CALLBACK_ALLOC_SECURE_MEM, + gcvTA_CALLBACK_FREE_SECURE_MEM, +}; + +typedef enum { + gcvFENCE_TYPE_READ = 0x1, + gcvFENCE_TYPE_WRITE = 0x2, + gcvFENCE_TYPE_ALL = gcvFENCE_TYPE_READ | gcvFENCE_TYPE_WRITE, + gcvFNECE_TYPE_INVALID = 0x10000, +} +gceFENCE_TYPE; + +typedef enum _gceTLS_KEY +{ + gcvTLS_KEY_EGL, + gcvTLS_KEY_OPENGL_ES, + gcvTLS_KEY_OPENVG, + gcvTLS_KEY_OPENGL, + gcvTLS_KEY_OPENCL, + gcvTLS_KEY_OPENVX, + + gcvTLS_KEY_COUNT +} +gceTLS_KEY; + +typedef enum _gcePLS_VALUE +{ + gcePLS_VALUE_EGL_DISPLAY_INFO, + gcePLS_VALUE_EGL_CONFIG_FORMAT_INFO, + gcePLS_VALUE_EGL_DESTRUCTOR_INFO, +} +gcePLS_VALUE; + +#if gcdENABLE_3D +/* Blending functions. */ +typedef enum _gceBLEND_FUNCTION +{ + gcvBLEND_ZERO, + gcvBLEND_ONE, + gcvBLEND_SOURCE_COLOR, + gcvBLEND_INV_SOURCE_COLOR, + gcvBLEND_SOURCE_ALPHA, + gcvBLEND_INV_SOURCE_ALPHA, + gcvBLEND_TARGET_COLOR, + gcvBLEND_INV_TARGET_COLOR, + gcvBLEND_TARGET_ALPHA, + gcvBLEND_INV_TARGET_ALPHA, + gcvBLEND_SOURCE_ALPHA_SATURATE, + gcvBLEND_CONST_COLOR, + gcvBLEND_INV_CONST_COLOR, + gcvBLEND_CONST_ALPHA, + gcvBLEND_INV_CONST_ALPHA, +} +gceBLEND_FUNCTION; + +/* Blending modes. */ +typedef enum _gceBLEND_MODE +{ + gcvBLEND_ADD = 0, + gcvBLEND_SUBTRACT, + gcvBLEND_REVERSE_SUBTRACT, + gcvBLEND_MIN, + gcvBLEND_MAX, + gcvBLEND_MULTIPLY, + gcvBLEND_SCREEN, + gcvBLEND_OVERLAY, + gcvBLEND_DARKEN, + gcvBLEND_LIGHTEN, + gcvBLEND_COLORDODGE, + gcvBLEND_COLORBURN, + gcvBLEND_HARDLIGHT, + gcvBLEND_SOFTLIGHT, + gcvBLEND_DIFFERENCE, + gcvBLEND_EXCLUSION, + gcvBLEND_HSL_HUE, + gcvBLEND_HSL_SATURATION, + gcvBLEND_HSL_COLOR, + gcvBLEND_HSL_LUMINOSITY, + + gcvBLEND_TOTAL +} +gceBLEND_MODE; + +/* Depth modes. */ +typedef enum _gceDEPTH_MODE +{ + gcvDEPTH_NONE, + gcvDEPTH_Z, + gcvDEPTH_W, +} +gceDEPTH_MODE; +#endif /* gcdENABLE_3D */ + +/* API flags. */ +typedef enum _gceAPI +{ + gcvAPI_D3D = 1, + gcvAPI_OPENGL_ES11, + gcvAPI_OPENGL_ES20, + gcvAPI_OPENGL_ES30, + gcvAPI_OPENGL_ES31, + gcvAPI_OPENGL_ES32, + gcvAPI_OPENGL, + gcvAPI_OPENVG, + gcvAPI_OPENCL, + gcvAPI_OPENVK, +} +gceAPI; + +typedef enum _gceWHERE +{ + gcvWHERE_COMMAND_PREFETCH = 0, + gcvWHERE_COMMAND, + gcvWHERE_RASTER, + gcvWHERE_PIXEL, + gcvWHERE_BLT, +} +gceWHERE; + +typedef enum _gceHOW +{ + gcvHOW_SEMAPHORE = 0x1, + gcvHOW_STALL = 0x2, + gcvHOW_SEMAPHORE_STALL = 0x3, +} +gceHOW; + +typedef enum _gceSignalHandlerType +{ + gcvHANDLE_SIGFPE_WHEN_SIGNAL_CODE_IS_0 = 0x1, +} +gceSignalHandlerType; + +typedef enum _gceFILE_MODE +{ + gcvFILE_CREATE = 0, + gcvFILE_APPEND, + gcvFILE_READ, + gcvFILE_CREATETEXT, + gcvFILE_APPENDTEXT, + gcvFILE_READTEXT, +} +gceFILE_MODE; + +typedef enum _gceFILE_WHENCE +{ + gcvFILE_SEEK_SET, + gcvFILE_SEEK_CUR, + gcvFILE_SEEK_END +} +gceFILE_WHENCE; + +/* Color format classes. */ +typedef enum _gceFORMAT_CLASS +{ + gcvFORMAT_CLASS_RGBA = 4500, + gcvFORMAT_CLASS_YUV, + gcvFORMAT_CLASS_INDEX, + gcvFORMAT_CLASS_LUMINANCE, + gcvFORMAT_CLASS_BUMP, + gcvFORMAT_CLASS_DEPTH, + gcvFORMAT_CLASS_ASTC, + gcvFORMAT_CLASS_COMPRESSED, + gcvFORMAT_CLASS_OTHER, + gcvFORMAT_CLASS_INTENSITY +} +gceFORMAT_CLASS; + +/* Color format data type */ +typedef enum _gceFORMAT_DATATYPE +{ + gcvFORMAT_DATATYPE_UNSIGNED_NORMALIZED, + gcvFORMAT_DATATYPE_SIGNED_NORMALIZED, + gcvFORMAT_DATATYPE_UNSIGNED_INTEGER, + gcvFORMAT_DATATYPE_SIGNED_INTEGER, + gcvFORMAT_DATATYPE_FLOAT16, + gcvFORMAT_DATATYPE_FLOAT32, + gcvFORMAT_DATATYPE_FLOAT_E5B9G9R9, + gcvFORMAT_DATATYPE_FLOAT_B10G11R11F, + gcvFORMAT_DATATYPE_INDEX, + gcvFORMAT_DATATYPE_SRGB, + gcvFORMAT_DATATYPE_FLOAT32_UINT, +} +gceFORMAT_DATATYPE; + +typedef enum _gceORIENTATION +{ + gcvORIENTATION_TOP_BOTTOM, + gcvORIENTATION_BOTTOM_TOP, +} +gceORIENTATION; + +/* Special enums for width field in gcsFORMAT_COMPONENT. */ +typedef enum _gceCOMPONENT_CONTROL +{ + gcvCOMPONENT_NOTPRESENT = 0x00, + gcvCOMPONENT_DONTCARE = 0x80, + gcvCOMPONENT_WIDTHMASK = 0x7F, + gcvCOMPONENT_ODD = 0x80 +} +gceCOMPONENT_CONTROL; + +/* User option. */ +typedef enum _gceDEBUG_MSG +{ + gcvDEBUG_MSG_NONE, + gcvDEBUG_MSG_ERROR, + gcvDEBUG_MSG_WARNING +} +gceDEBUG_MSG; + +/* Compressed format now was defined same as dec400d, should be general. */ +typedef enum _VIV_COMPRESS_FMT +{ + _VIV_CFMT_ARGB8 = 0, + _VIV_CFMT_XRGB8, + _VIV_CFMT_AYUV, + _VIV_CFMT_UYVY, + _VIV_CFMT_YUY2, + _VIV_CFMT_YUV_ONLY, + _VIV_CFMT_UV_MIX, + _VIV_CFMT_ARGB4, + _VIV_CFMT_XRGB4, + _VIV_CFMT_A1R5G5B5, + _VIV_CFMT_X1R5G5B5, + _VIV_CFMT_R5G6B5, + _VIV_CFMT_Z24S8, + _VIV_CFMT_Z24, + _VIV_CFMT_Z16, + _VIV_CFMT_A2R10G10B10, + _VIV_CFMT_BAYER, + _VIV_CFMT_SIGNED_BAYER, + _VIV_CFMT_VAA16, + _VIV_CFMT_S8, + + _VIV_CFMT_MAX, +} _VIV_COMPRESS_FMT; + +typedef enum _gcePROGRAM_STAGE +{ + gcvPROGRAM_STAGE_VERTEX = 0x0, + gcvPROGRAM_STAGE_TCS = 0x1, + gcvPROGRAM_STAGE_TES = 0x2, + gcvPROGRAM_STAGE_GEOMETRY = 0x3, + gcvPROGRAM_STAGE_FRAGMENT = 0x4, + gcvPROGRAM_STAGE_GRAPHICS_COUNT = 0x5, + gcvPROGRAM_STAGE_COMPUTE = 0x5, + gcvPROGRAM_STAGE_OPENCL = 0x6, + gcvPROGRAM_STAGE_LAST +} +gcePROGRAM_STAGE; + +typedef enum _gcePROGRAM_STAGE_BIT +{ + gcvPROGRAM_STAGE_VERTEX_BIT = 1 << gcvPROGRAM_STAGE_VERTEX, + gcvPROGRAM_STAGE_TCS_BIT = 1 << gcvPROGRAM_STAGE_TCS, + gcvPROGRAM_STAGE_TES_BIT = 1 << gcvPROGRAM_STAGE_TES, + gcvPROGRAM_STAGE_GEOMETRY_BIT = 1 << gcvPROGRAM_STAGE_GEOMETRY, + gcvPROGRAM_STAGE_FRAGMENT_BIT = 1 << gcvPROGRAM_STAGE_FRAGMENT, + gcvPROGRAM_STAGE_COMPUTE_BIT = 1 << gcvPROGRAM_STAGE_COMPUTE, + gcvPROGRAM_STAGE_OPENCL_BIT = 1 << gcvPROGRAM_STAGE_OPENCL, +} +gcePROGRAM_STAGE_BIT; + +typedef enum _gceBLIT_FLAG +{ + gcvBLIT_FLAG_SKIP_DEPTH_WRITE = 1 << 0, + gcvBLIT_FLAG_SKIP_STENCIL_WRITE = 1 << 1, +} gceBLIT_FLAG; + +/* Clear flags. */ +typedef enum _gceCLEAR +{ + gcvCLEAR_COLOR = 0x1, + gcvCLEAR_DEPTH = 0x2, + gcvCLEAR_STENCIL = 0x4, + gcvCLEAR_HZ = 0x8, + gcvCLEAR_WITH_GPU_ONLY = 0x100, + gcvCLEAR_WITH_CPU_ONLY = 0x200, + gcvCLEAR_MULTI_SLICES = 0x400, +} +gceCLEAR; + +typedef enum _gceBLIT_TYPE +{ + gcvBLIT_DRAW_CLEAR = 0, + gcvBLIT_DRAW_BLIT = 1, + gcvBLIT_DRAW_BLIT_DEPTH = 2, + gcvBLIT_COMPUTE_BLIT = 3, + + /* last number, not a real type */ + gcvBLIT_NUM_TYPE + } +gceBLIT_TYPE; + +typedef enum _gceSPLIT_DRAW_TYPE +{ + gcvSPLIT_DRAW_UNKNOWN = 0x0, + gcvSPLIT_DRAW_1, + gcvSPLIT_DRAW_2, + gcvSPLIT_DRAW_3, + gcvSPLIT_DRAW_4, + gcvSPLIT_DRAW_XFB, + gcvSPLIT_DRAW_INDEX_FETCH, + gcvSPLIT_DRAW_TCS, + gcvSPLIT_DRAW_STIPPLE, + gcvSPLIT_DRAW_WIDE_LINE, + gcvSPLIT_DRAW_LAST +} +gceSPLIT_DRAW_TYPE; + +/* Blending targets. */ +typedef enum _gceBLEND_UNIT +{ + gcvBLEND_SOURCE, + gcvBLEND_TARGET, +} +gceBLEND_UNIT; + +typedef enum _gceXfbCmd +{ + gcvXFBCMD_BEGIN = 0, + gcvXFBCMD_PAUSE = 1, + gcvXFBCMD_RESUME = 2, + gcvXFBCMD_END = 3, + gcvXFBCMD_PAUSE_INCOMMIT = 4, + gcvXFBCMD_RESUME_INCOMMIT = 5, + gcvXFBCMD_INVALID = 6, +} +gceXfbCmd; + +typedef enum _gceXfbStatus +{ + gcvXFB_Disabled = 0, + gcvXFB_Paused, + gcvXFB_Enabled, +} +gceXfbStatus; + +typedef enum _gceQueryStatus +{ + gcvQUERY_Disabled = 0, + gcvQUERY_Paused = 1, + gcvQUERY_Enabled = 2, +} +gceQueryStatus; + +typedef enum _gceQueryCmd +{ + gcvQUERYCMD_BEGIN = 0, + gcvQUERYCMD_PAUSE = 1, + gcvQUERYCMD_RESUME = 2, + gcvQUERYCMD_END = 3, + gcvQUERYCMD_INVALID = 4, +} +gceQueryCmd; + +typedef enum _gceQueryType +{ + gcvQUERY_OCCLUSION = 0, + gcvQUERY_XFB_WRITTEN = 1, + gcvQUERY_PRIM_GENERATED = 2, + gcvQUERY_MAX_NUM = 3, +} +gceQueryType; + +/* Cube faces. */ +typedef enum _gceTEXTURE_FACE +{ + gcvFACE_NONE = 0, + gcvFACE_POSITIVE_X, + gcvFACE_NEGATIVE_X, + gcvFACE_POSITIVE_Y, + gcvFACE_NEGATIVE_Y, + gcvFACE_POSITIVE_Z, + gcvFACE_NEGATIVE_Z, +} +gceTEXTURE_FACE; + +typedef enum _gceVERTEX_FORMAT +{ + gcvVERTEX_BYTE, + gcvVERTEX_UNSIGNED_BYTE, + gcvVERTEX_SHORT, + gcvVERTEX_UNSIGNED_SHORT, + gcvVERTEX_INT, + gcvVERTEX_UNSIGNED_INT, + gcvVERTEX_FIXED, + gcvVERTEX_HALF, + gcvVERTEX_FLOAT, + gcvVERTEX_DOUBLE, + gcvVERTEX_UNSIGNED_INT_10_10_10_2, + gcvVERTEX_INT_10_10_10_2, + gcvVERTEX_UNSIGNED_INT_2_10_10_10_REV, + gcvVERTEX_INT_2_10_10_10_REV, + /* integer format */ + gcvVERTEX_INT8, + gcvVERTEX_INT16, + gcvVERTEX_INT32, +} +gceVERTEX_FORMAT; + +/* What the SW converting scheme to create temp attrib */ +typedef enum _gceATTRIB_SCHEME +{ + gcvATTRIB_SCHEME_KEEP = 0, + gcvATTRIB_SCHEME_2_10_10_10_REV_TO_FLOAT, + gcvATTRIB_SCHEME_BYTE_TO_IVEC4, + gcvATTRIB_SCHEME_SHORT_TO_IVEC4, + gcvATTRIB_SCHEME_INT_TO_IVEC4, + gcvATTRIB_SCHEME_UBYTE_TO_UVEC4, + gcvATTRIB_SCHEME_USHORT_TO_UVEC4, + gcvATTRIB_SCHEME_UINT_TO_UVEC4, + gcvATTRIB_SCHEME_DOUBLE_TO_FLOAT, +} gceATTRIB_SCHEME; + +typedef enum _gceBUFOBJ_TYPE +{ + gcvBUFOBJ_TYPE_ARRAY_BUFFER = 1, + gcvBUFOBJ_TYPE_ELEMENT_ARRAY_BUFFER = 2, + gcvBUFOBJ_TYPE_GENERIC_BUFFER = 100 + +} gceBUFOBJ_TYPE; + +typedef enum _gceBUFOBJ_USAGE +{ + gcvBUFOBJ_USAGE_NONE = 0x0, + gcvBUFOBJ_USAGE_STREAM_DRAW = 0x1, + gcvBUFOBJ_USAGE_STREAM_READ = 0x2, + gcvBUFOBJ_USAGE_STREAM_COPY = 0x3, + gcvBUFOBJ_USAGE_STATIC_DRAW = 0x4, + gcvBUFOBJ_USAGE_STATIC_READ = 0x5, + gcvBUFOBJ_USAGE_STATIC_COPY = 0x6, + gcvBUFOBJ_USAGE_DYNAMIC_DRAW = 0x7, + gcvBUFOBJ_USAGE_DYNAMIC_READ = 0x8, + gcvBUFOBJ_USAGE_DYNAMIC_COPY = 0x9, + + /* Use 8bits to save the usage. */ + gcvBUFOBJ_USAGE_MASK = 0xFF, + + /* Some special flags. */ + /* special patch for optimaize performance, + ** no fence and duplicate stream to ensure data correct + */ + gcvBUFOBJ_USAGE_FLAG_DISABLE_FENCE_DYNAMIC_STREAM = 0x100, + + /* This buffer object is used by driver, so we need to copy the data to the logical memory. */ + gcvBUFOBJ_USAGE_FLAG_DATA_USED_BY_DRIVER = 0x200, + +} gceBUFOBJ_USAGE; + +/** +** @ingroup gcoVG +** +** @brief Channel mask values. +** +** This enumeration defines the values for channel mask used in image +** filtering. +*/ + +/******************************************************************************\ +******************************** VG Enumerations ******************************* +\******************************************************************************/ + +/** +** @ingroup gcoVG +** +** @brief Tiling mode for painting and imagig. +** +** This enumeration defines the tiling modes supported by the HAL. This is +** in fact a one-to-one mapping of the OpenVG 1.1 tile modes. +*/ +typedef enum _gceTILE_MODE +{ + gcvTILE_FILL, + gcvTILE_PAD, + gcvTILE_REPEAT, + gcvTILE_REFLECT +} +gceTILE_MODE; + +/******************************************************************************/ +/** @ingroup gcoVG +** +** @brief The different paint modes. +** +** This enumeration lists the available paint modes. +*/ +typedef enum _gcePAINT_TYPE +{ + /** Solid color. */ + gcvPAINT_MODE_SOLID, + + /** Linear gradient. */ + gcvPAINT_MODE_LINEAR, + + /** Radial gradient. */ + gcvPAINT_MODE_RADIAL, + + /** Pattern. */ + gcvPAINT_MODE_PATTERN, + + /** Mode count. */ + gcvPAINT_MODE_COUNT +} +gcePAINT_TYPE; + +/** +** @ingroup gcoVG +** +** @brief Types of path data supported by HAL. +** +** This enumeration defines the types of path data supported by the HAL. +** This is in fact a one-to-one mapping of the OpenVG 1.1 path types. +*/ +typedef enum _gcePATHTYPE +{ + gcePATHTYPE_UNKNOWN = -1, + gcePATHTYPE_INT8, + gcePATHTYPE_INT16, + gcePATHTYPE_INT32, + gcePATHTYPE_FLOAT +} +gcePATHTYPE; + +/** +** @ingroup gcoVG +** +** @brief Supported path segment commands. +** +** This enumeration defines the path segment commands supported by the HAL. +*/ +typedef enum _gceVGCMD +{ + gcvVGCMD_END, /* 0: 0x00 */ + gcvVGCMD_CLOSE, /* 1: 0x01 */ + gcvVGCMD_MOVE, /* 2: 0x02 */ + gcvVGCMD_MOVE_REL, /* 3: 0x03 */ + gcvVGCMD_LINE, /* 4: 0x04 */ + gcvVGCMD_LINE_REL, /* 5: 0x05 */ + gcvVGCMD_QUAD, /* 6: 0x06 */ + gcvVGCMD_QUAD_REL, /* 7: 0x07 */ + gcvVGCMD_CUBIC, /* 8: 0x08 */ + gcvVGCMD_CUBIC_REL, /* 9: 0x09 */ + gcvVGCMD_BREAK, /* 10: 0x0A */ + gcvVGCMD_HLINE, /* 11: ******* R E S E R V E D *******/ + gcvVGCMD_HLINE_REL, /* 12: ******* R E S E R V E D *******/ + gcvVGCMD_VLINE, /* 13: ******* R E S E R V E D *******/ + gcvVGCMD_VLINE_REL, /* 14: ******* R E S E R V E D *******/ + gcvVGCMD_SQUAD, /* 15: ******* R E S E R V E D *******/ + gcvVGCMD_SQUAD_REL, /* 16: ******* R E S E R V E D *******/ + gcvVGCMD_SCUBIC, /* 17: ******* R E S E R V E D *******/ + gcvVGCMD_SCUBIC_REL, /* 18: ******* R E S E R V E D *******/ + gcvVGCMD_SCCWARC, /* 19: ******* R E S E R V E D *******/ + gcvVGCMD_SCCWARC_REL, /* 20: ******* R E S E R V E D *******/ + gcvVGCMD_SCWARC, /* 21: ******* R E S E R V E D *******/ + gcvVGCMD_SCWARC_REL, /* 22: ******* R E S E R V E D *******/ + gcvVGCMD_LCCWARC, /* 23: ******* R E S E R V E D *******/ + gcvVGCMD_LCCWARC_REL, /* 24: ******* R E S E R V E D *******/ + gcvVGCMD_LCWARC, /* 25: ******* R E S E R V E D *******/ + gcvVGCMD_LCWARC_REL, /* 26: ******* R E S E R V E D *******/ + + /* The width of the command recognized by the hardware on bits. */ + gcvVGCMD_WIDTH = 5, + + /* Hardware command mask. */ + gcvVGCMD_MASK = (1 << gcvVGCMD_WIDTH) - 1, + + /* Command modifiers. */ + gcvVGCMD_H_MOD = 1 << gcvVGCMD_WIDTH, /* = 32 */ + gcvVGCMD_V_MOD = 2 << gcvVGCMD_WIDTH, /* = 64 */ + gcvVGCMD_S_MOD = 3 << gcvVGCMD_WIDTH, /* = 96 */ + gcvVGCMD_ARC_MOD = 4 << gcvVGCMD_WIDTH, /* = 128 */ + + /* Emulated LINE commands. */ + gcvVGCMD_HLINE_EMUL = gcvVGCMD_H_MOD | gcvVGCMD_LINE, /* = 36 */ + gcvVGCMD_HLINE_EMUL_REL = gcvVGCMD_H_MOD | gcvVGCMD_LINE_REL, /* = 37 */ + gcvVGCMD_VLINE_EMUL = gcvVGCMD_V_MOD | gcvVGCMD_LINE, /* = 68 */ + gcvVGCMD_VLINE_EMUL_REL = gcvVGCMD_V_MOD | gcvVGCMD_LINE_REL, /* = 69 */ + + /* Emulated SMOOTH commands. */ + gcvVGCMD_SQUAD_EMUL = gcvVGCMD_S_MOD | gcvVGCMD_QUAD, /* = 102 */ + gcvVGCMD_SQUAD_EMUL_REL = gcvVGCMD_S_MOD | gcvVGCMD_QUAD_REL, /* = 103 */ + gcvVGCMD_SCUBIC_EMUL = gcvVGCMD_S_MOD | gcvVGCMD_CUBIC, /* = 104 */ + gcvVGCMD_SCUBIC_EMUL_REL = gcvVGCMD_S_MOD | gcvVGCMD_CUBIC_REL, /* = 105 */ + + /* Emulation ARC commands. */ + gcvVGCMD_ARC_LINE = gcvVGCMD_ARC_MOD | gcvVGCMD_LINE, /* = 132 */ + gcvVGCMD_ARC_LINE_REL = gcvVGCMD_ARC_MOD | gcvVGCMD_LINE_REL, /* = 133 */ + gcvVGCMD_ARC_QUAD = gcvVGCMD_ARC_MOD | gcvVGCMD_QUAD, /* = 134 */ + gcvVGCMD_ARC_QUAD_REL = gcvVGCMD_ARC_MOD | gcvVGCMD_QUAD_REL /* = 135 */ +} +gceVGCMD; +typedef enum _gceVGCMD * gceVGCMD_PTR; + +/** +** @ingroup gcoVG +** +** @brief Blending modes supported by the HAL. +** +** This enumeration defines the blending modes supported by the HAL. This is +** in fact a one-to-one mapping of the OpenVG 1.1 blending modes. +*/ +typedef enum _gceVG_BLEND +{ + gcvVG_BLEND_SRC, + gcvVG_BLEND_SRC_OVER, + gcvVG_BLEND_DST_OVER, + gcvVG_BLEND_SRC_IN, + gcvVG_BLEND_DST_IN, + gcvVG_BLEND_MULTIPLY, + gcvVG_BLEND_SCREEN, + gcvVG_BLEND_DARKEN, + gcvVG_BLEND_LIGHTEN, + gcvVG_BLEND_ADDITIVE, + gcvVG_BLEND_SUBTRACT, + gcvVG_BLEND_FILTER +} +gceVG_BLEND; + +/** +** @ingroup gcoVG +** +** @brief Image modes supported by the HAL. +** +** This enumeration defines the image modes supported by the HAL. This is +** in fact a one-to-one mapping of the OpenVG 1.1 image modes with the addition +** of NO IMAGE. +*/ +typedef enum _gceVG_IMAGE +{ + gcvVG_IMAGE_NONE, + gcvVG_IMAGE_NORMAL, + gcvVG_IMAGE_MULTIPLY, + gcvVG_IMAGE_STENCIL, + gcvVG_IMAGE_FILTER +} +gceVG_IMAGE; + +/** +** @ingroup gcoVG +** +** @brief Filter mode patterns and imaging. +** +** This enumeration defines the filter modes supported by the HAL. +*/ +typedef enum _gceIMAGE_FILTER +{ + gcvFILTER_POINT, + gcvFILTER_LINEAR, + gcvFILTER_BI_LINEAR +} +gceIMAGE_FILTER; + +/** +** @ingroup gcoVG +** +** @brief Primitive modes supported by the HAL. +** +** This enumeration defines the primitive modes supported by the HAL. +*/ +typedef enum _gceVG_PRIMITIVE +{ + gcvVG_SCANLINE, + gcvVG_RECTANGLE, + gcvVG_TESSELLATED, + gcvVG_TESSELLATED_TILED +} +gceVG_PRIMITIVE; + +/** +** @ingroup gcoVG +** +** @brief Rendering quality modes supported by the HAL. +** +** This enumeration defines the rendering quality modes supported by the HAL. +*/ +typedef enum _gceRENDER_QUALITY +{ + gcvVG_NONANTIALIASED, + gcvVG_2X2_MSAA, + gcvVG_2X4_MSAA, + gcvVG_4X4_MSAA +} +gceRENDER_QUALITY; + +/** +** @ingroup gcoVG +** +** @brief Fill rules supported by the HAL. +** +** This enumeration defines the fill rules supported by the HAL. +*/ +typedef enum _gceFILL_RULE +{ + gcvVG_EVEN_ODD, + gcvVG_NON_ZERO +} +gceFILL_RULE; + +/** +** @ingroup gcoVG +** +** @brief Cap styles supported by the HAL. +** +** This enumeration defines the cap styles supported by the HAL. +*/ +typedef enum _gceCAP_STYLE +{ + gcvCAP_BUTT, + gcvCAP_ROUND, + gcvCAP_SQUARE +} +gceCAP_STYLE; + +/** +** @ingroup gcoVG +** +** @brief Join styles supported by the HAL. +** +** This enumeration defines the join styles supported by the HAL. +*/ +typedef enum _gceJOIN_STYLE +{ + gcvJOIN_MITER, + gcvJOIN_ROUND, + gcvJOIN_BEVEL +} +gceJOIN_STYLE; + +/* Base values for channel mask definitions. */ +#define gcvCHANNEL_X (0) +#define gcvCHANNEL_R (1 << 0) +#define gcvCHANNEL_G (1 << 1) +#define gcvCHANNEL_B (1 << 2) +#define gcvCHANNEL_A (1 << 3) + +typedef enum _gceCHANNEL +{ + gcvCHANNEL_XXXX = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X), + gcvCHANNEL_XXXA = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_A), + gcvCHANNEL_XXBX = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_X), + gcvCHANNEL_XXBA = (gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_A), + + gcvCHANNEL_XGXX = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_X), + gcvCHANNEL_XGXA = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_A), + gcvCHANNEL_XGBX = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_X), + gcvCHANNEL_XGBA = (gcvCHANNEL_X | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_A), + + gcvCHANNEL_RXXX = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_X), + gcvCHANNEL_RXXA = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_X | gcvCHANNEL_A), + gcvCHANNEL_RXBX = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_X), + gcvCHANNEL_RXBA = (gcvCHANNEL_R | gcvCHANNEL_X | gcvCHANNEL_B | gcvCHANNEL_A), + + gcvCHANNEL_RGXX = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_X), + gcvCHANNEL_RGXA = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_X | gcvCHANNEL_A), + gcvCHANNEL_RGBX = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_X), + gcvCHANNEL_RGBA = (gcvCHANNEL_R | gcvCHANNEL_G | gcvCHANNEL_B | gcvCHANNEL_A), +} +gceCHANNEL; + +/* Defines the statistical data keys monitored by the statistics module */ +typedef enum _gceSTATISTICS +{ + gcvFRAME_FPS = 1, +} +gceSTATISTICS; + +/* Value types. */ +typedef enum _gceVALUE_TYPE +{ + gcvVALUE_UINT = 0x0, + gcvVALUE_FIXED, + gcvVALUE_FLOAT, + gcvVALUE_INT, + + /* + ** The value need be unsigned denormalized. clamp (0.0-1.0) should be done first. + */ + gcvVALUE_FLAG_UNSIGNED_DENORM = 0x00010000, + + /* + ** The value need be signed denormalized. clamp (-1.0-1.0) should be done first. + */ + gcvVALUE_FLAG_SIGNED_DENORM = 0x00020000, + + /* + ** The value need to gammar + */ + gcvVALUE_FLAG_GAMMAR = 0x00040000, + + /* + ** The value need to convert from float to float16 + */ + gcvVALUE_FLAG_FLOAT_TO_FLOAT16 = 0x0080000, + + /* + ** Mask for flag field. + */ + gcvVALUE_FLAG_MASK = 0xFFFF0000, +} +gceVALUE_TYPE; + +typedef enum _gceTRACEMODE +{ + gcvTRACEMODE_NONE = 0, + gcvTRACEMODE_FULL = 1, + gcvTRACEMODE_LOGGER = 2, + gcvTRACEMODE_ALLZONE = 3, + gcvTRACEMODE_PRE = 4, + gcvTRACEMODE_POST = 5, +} gceTRACEMODE; + +enum +{ + /* GPU can't issue more that 32bit physical address */ + gcvPLATFORM_FLAG_LIMIT_4G_ADDRESS = 1 << 0, + + gcvPLATFORM_FLAG_IMX_MM = 1 << 1, +}; + +/* GL_VIV internal usage */ +#ifndef GL_MAP_BUFFER_OBJ_VIV +#define GL_MAP_BUFFER_OBJ_VIV 0x10000 +#endif + +/* Command buffer usage. */ +#define gcvCOMMAND_2D (1 << 0) +#define gcvCOMMAND_3D (1 << 1) + +/* Default chip ID means chip ID same as core index. */ +#define gcvCHIP_ID_DEFAULT (~0U) + +/******************************************************************************\ +****************************** Object Declarations ***************************** +\******************************************************************************/ +typedef struct _gckCONTEXT * gckCONTEXT; +typedef struct _gcoCMDBUF * gcoCMDBUF; + +typedef struct _gcsSTATE_DELTA * gcsSTATE_DELTA_PTR; +typedef struct _gcsQUEUE * gcsQUEUE_PTR; +typedef struct _gcoQUEUE * gcoQUEUE; +typedef struct _gcsHAL_INTERFACE * gcsHAL_INTERFACE_PTR; +#if VIVANTE_PROFILER +typedef struct _gcsHAL_PROFILER_INTERFACE * gcsHAL_PROFILER_INTERFACE_PTR; +#endif +typedef struct _gcs2D_PROFILE * gcs2D_PROFILE_PTR; + +#if gcdENABLE_VG +typedef struct _gcoVGHARDWARE * gcoVGHARDWARE; +typedef struct _gcoVGBUFFER * gcoVGBUFFER; +typedef struct _gckVGHARDWARE * gckVGHARDWARE; +typedef struct _gcsVGCONTEXT * gcsVGCONTEXT_PTR; +typedef struct _gcsVGCONTEXT_MAP * gcsVGCONTEXT_MAP_PTR; +typedef struct _gcsVGCMDQUEUE * gcsVGCMDQUEUE_PTR; +typedef struct _gcsTASK_MASTER_TABLE * gcsTASK_MASTER_TABLE_PTR; +typedef struct _gckVGKERNEL * gckVGKERNEL; +typedef void * gctTHREAD; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_enum_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_kernel_buffer.h b/include_v6.4.3.p4.6/gc_hal_kernel_buffer.h new file mode 100644 index 0000000..a303d15 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_kernel_buffer.h @@ -0,0 +1,323 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_kernel_buffer_h_ +#define __gc_hal_kernel_buffer_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ +************************ Command Buffer and Event Objects ********************** +\******************************************************************************/ + +#define gcdRENDER_FENCE_LENGTH (6 * gcmSIZEOF(gctUINT32)) +#define gcdBLT_FENCE_LENGTH (10 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_FLUSHCACHE_LENGTH (2 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_PAUSE_OQ_LENGTH (2 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_PAUSE_XFBWRITTEN_QUERY_LENGTH (4 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_PAUSE_PRIMGEN_QUERY_LENGTH (4 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_PAUSE_XFB_LENGTH (2 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_HW_FENCE_32BIT (4 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_HW_FENCE_64BIT (6 * gcmSIZEOF(gctUINT32)) +#define gcdRESERVED_PAUSE_PROBE_LENGTH (TOTAL_PROBE_NUMBER * 2 * gcmSIZEOF(gctUINT32)) + +#define gcdRESUME_OQ_LENGTH (2 * gcmSIZEOF(gctUINT32)) +#define gcdRESUME_XFBWRITTEN_QUERY_LENGTH (4 * gcmSIZEOF(gctUINT32)) +#define gcdRESUME_PRIMGEN_QUERY_LENGTH (4 * gcmSIZEOF(gctUINT32)) +#define gcdRESUME_XFB_LENGH (2 * gcmSIZEOF(gctUINT32)) +#define gcdRESUME_PROBE_LENGH (TOTAL_PROBE_NUMBER * 2 * gcmSIZEOF(gctUINT32)) + + +/* State delta record. */ +typedef struct _gcsSTATE_DELTA_RECORD * gcsSTATE_DELTA_RECORD_PTR; +typedef struct _gcsSTATE_DELTA_RECORD +{ + /* State address. */ + gctUINT address; + + /* State mask. */ + gctUINT32 mask; + + /* State data. */ + gctUINT32 data; +} +gcsSTATE_DELTA_RECORD; + +/* State delta. */ +typedef struct _gcsSTATE_DELTA +{ + /* For debugging: the number of delta in the order of creation. */ + gctUINT num; + + /* Main state delta ID. Every time state delta structure gets reinitialized, + main ID is incremented. If main state ID overflows, all map entry IDs get + reinitialized to make sure there is no potential erroneous match after + the overflow.*/ + gctUINT id; + + /* Vertex element count for the delta buffer. */ + gctUINT elementCount; + + /* Number of states currently stored in the record array. */ + gctUINT recordCount; + + /* Record array; holds all modified states in gcsSTATE_DELTA_RECORD. */ + gctUINT64 recordArray; + gctUINT recordSize; + + /* Map entry ID is used for map entry validation. If map entry ID does not + match the main state delta ID, the entry and the corresponding state are + considered not in use. */ + gctUINT64 mapEntryID; + gctUINT mapEntryIDSize; + + /* If the map entry ID matches the main state delta ID, index points to + the state record in the record array. */ + gctUINT64 mapEntryIndex; +} +gcsSTATE_DELTA; + +#define FENCE_NODE_LIST_INIT_COUNT 100 + +typedef struct _gcsFENCE_APPEND_NODE +{ + gcsSURF_NODE_PTR node; + gceFENCE_TYPE type; + +}gcsFENCE_APPEND_NODE; + +typedef gcsFENCE_APPEND_NODE * gcsFENCE_APPEND_NODE_PTR; + +typedef struct _gcsFENCE_LIST * gcsFENCE_LIST_PTR; + +typedef struct _gcsFENCE_LIST +{ + /* Resource that need get fence, but command used this resource not generated */ + gcsFENCE_APPEND_NODE_PTR pendingList; + gctUINT pendingCount; + gctUINT pendingAllocCount; + + /* Resoure that already generated command in this command buffer but not get fence */ + gcsFENCE_APPEND_NODE_PTR onIssueList; + gctUINT onIssueCount; + gctUINT onIssueAllocCount; +} +gcsFENCE_LIST; + +/* Command buffer object. */ +/* + * Initial (before put commands): + * + * +------------------------------------------- + * ...|reservedHead| + * +------------------------------------------- + * ^ ^ + * | | + * startOffset offset + * + * + * After put command, in commit: + * + * +------------------------------------------+ + * .. |reservedHead| .. commands .. |reservedTail| .. + * +------------------------------------------+ + * ^ ^ + * | | + * startOffset offset + * + * + * Commit done, becomes initial state: + * + * +------------------------------------------+----------------- + * .. |reservedHead| .. commands .. |reservedTail|reservedHead| .. + * +------------------------------------------+----------------- + * ^ ^ + * | | + * startOffset offset + * + * reservedHead: + * Select pipe commands. + * + * reservedTail: + * Link, Fence, ChipEnable + * + */ +struct _gcoCMDBUF +{ + /* The object. */ + gcsOBJECT object; + + /* Commit count. */ + gctUINT64 commitCount; + + /* Command buffer entry and exit pipes. */ + gcePIPE_SELECT entryPipe; + gcePIPE_SELECT exitPipe; + + /* Feature usage flags. */ + gctBOOL using2D; + gctBOOL using3D; + + /* Size of reserved head and tail for each commit. */ + gctUINT32 reservedHead; + gctUINT32 reservedTail; + + /* Video memory handle of command buffer. */ + gctUINT32 videoMemNode; + + /* GPU address of command buffer. */ + gctUINT32 address; + + /* Logical address of command buffer. */ + gctUINT64 logical; + + /* Number of bytes in command buffer. */ + gctUINT32 bytes; + + /* Start offset into the command buffer. */ + gctUINT32 startOffset; + + /* Current offset into the command buffer. */ + gctUINT32 offset; + + /* Number of free bytes in command buffer. */ + gctUINT32 free; + + /* Location of the last reserved area. */ + gctUINT64 lastReserve; + gctUINT32 lastOffset; + + /* Last load state command location and hardware address. */ + gctUINT64 lastLoadStatePtr; + gctUINT32 lastLoadStateAddress; + gctUINT32 lastLoadStateCount; + + /* + * Put pointer type member after this line. + */ + + /* Completion signal. */ + gctSIGNAL signal; + + /* Link to the siblings. */ + gcoCMDBUF prev; + gcoCMDBUF next; + + /* Mirror command buffer(s). */ + gcoCMDBUF *mirrors; + gctUINT32 mirrorCount; +}; + +typedef struct _gcsQUEUE +{ + /* Pointer to next gcsQUEUE structure in gcsQUEUE. */ + gctUINT64 next; + + /* Event information. */ + gcsHAL_INTERFACE iface; +} +gcsQUEUE; + +/* A record chunk include multiple records to save allocation. */ +typedef struct _gcsQUEUE_CHUNK +{ + struct _gcsQUEUE_CHUNK * next; + + gcsQUEUE record[16]; +} +gcsQUEUE_CHUNK; + +/* Event queue. */ +struct _gcoQUEUE +{ + /* The object. */ + gcsOBJECT object; + + /* Pointer to current event queue. */ + gcsQUEUE_PTR head; + gcsQUEUE_PTR tail; + + /* List of free records. */ + gcsQUEUE_PTR freeList; + + /* chunks of the records. */ + gcsQUEUE_CHUNK * chunks; + + #define gcdIN_QUEUE_RECORD_LIMIT 16 + /* Number of records currently in queue */ + gctUINT32 recordCount; + /* Number of records which release resource currently in queue */ + gctUINT32 tmpBufferRecordCount; + + /* Max size of pending unlock node in vidmem pool not committed */ + gctUINT maxUnlockBytes; + + gceENGINE engine; +}; + +struct _gcsTEMPCMDBUF +{ + gctUINT32 currentByteSize; + gctPOINTER buffer; + gctBOOL inUse; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_kernel_buffer_h_ */ diff --git a/include_v6.4.3.p4.6/gc_hal_mem.h b/include_v6.4.3.p4.6/gc_hal_mem.h new file mode 100644 index 0000000..5099cac --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_mem.h @@ -0,0 +1,566 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +/* +** Include file for the local memory management. +*/ + +#ifndef __gc_hal_mem_h_ +#define __gc_hal_mem_h_ +#if (gcdENABLE_3D || gcdENABLE_VG) + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************* +** Usage: + + The macros to declare MemPool type and functions are + gcmMEM_DeclareFSMemPool (Type, TypeName, Prefix) + gcmMEM_DeclareVSMemPool (Type, TypeName, Prefix) + gcmMEM_DeclareAFSMemPool(Type, TypeName, Prefix) + + The data structures for MemPool are + typedef struct _gcsMEM_FS_MEM_POOL * gcsMEM_FS_MEM_POOL; + typedef struct _gcsMEM_VS_MEM_POOL * gcsMEM_VS_MEM_POOL; + typedef struct _gcsMEM_AFS_MEM_POOL * gcsMEM_AFS_MEM_POOL; + + The MemPool constructor and destructor functions are + gcfMEM_InitFSMemPool(gcsMEM_FS_MEM_POOL *, gcoOS, gctUINT, gctUINT); + gcfMEM_FreeFSMemPool(gcsMEM_FS_MEM_POOL *); + gcfMEM_InitVSMemPool(gcsMEM_VS_MEM_POOL *, gcoOS, gctUINT, gctBOOL); + gcfMEM_FreeVSMemPool(gcsMEM_VS_MEM_POOL *); + gcfMEM_InitAFSMemPool(gcsMEM_AFS_MEM_POOL *, gcoOS, gctUINT); + gcfMEM_FreeAFSMemPool(gcsMEM_AFS_MEM_POOL *); + + FS: for Fixed-Size data structures + VS: for Variable-size data structures + AFS: for Array of Fixed-Size data structures + + + // Example 1: For a fixed-size data structure, struct gcsNode. + // It is used locally in a file, so the functions are static without prefix. + // At top level, declear allocate and free functions. + // The first argument is the data type. + // The second armument is the short name used in the fuctions. + gcmMEM_DeclareFSMemPool(struct gcsNode, Node, ); + + // The previous macro creates two inline functions, + // _AllocateNode and _FreeNode. + + // In function or struct + gcsMEM_FS_MEM_POOL nodeMemPool; + + // In function, + struct gcsNode * node; + gceSTATUS status; + + // Before using the memory pool, initialize it. + // The second argument is the gcoOS object. + // The third argument is the number of data structures to allocate for each chunk. + status = gcfMEM_InitFSMemPool(&nodeMemPool, os, 100, sizeof(struct gcsNode)); + ... + + // Allocate a node. + status = _AllocateNode(nodeMemPool, &node); + ... + // Free a node. + _FreeNode(nodeMemPool, node); + + // After using the memory pool, free it. + gcfMEM_FreeFSMemPool(&nodeMemPool); + + + // Example 2: For array of fixed-size data structures, struct gcsNode. + // It is used in several files, so the functions are extern with prefix. + // At top level, declear allocate and free functions. + // The first argument is the data type, and the second one is the short name + // used in the fuctions. + gcmMEM_DeclareAFSMemPool(struct gcsNode, NodeArray, gcfOpt); + + // The previous macro creates two inline functions, + // gcfOpt_AllocateNodeArray and gcfOpt_FreeNodeArray. + + // In function or struct + gcsMEM_AFS_MEM_POOL nodeArrayMemPool; + + // In function, + struct gcsNode * nodeArray; + gceSTATUS status; + + // Before using the array memory pool, initialize it. + // The second argument is the gcoOS object, the third is the number of data + // structures to allocate for each chunk. + status = gcfMEM_InitAFSMemPool(&nodeArrayMemPool, os, sizeof(struct gcsNode)); + ... + + // Allocate a node array of size 100. + status = gcfOpt_AllocateNodeArray(nodeArrayMemPool, &nodeArray, 100); + ... + // Free a node array. + gcfOpt_FreeNodeArray(&nodeArrayMemPool, nodeArray); + + // After using the array memory pool, free it. + gcfMEM_FreeAFSMemPool(&nodeArrayMemPool); + +*******************************************************************************/ + +/******************************************************************************* +** To switch back to use gcoOS_Allocate and gcoOS_Free, add +** #define USE_LOCAL_MEMORY_POOL 0 +** before including this file. +*******************************************************************************/ +#ifndef USE_LOCAL_MEMORY_POOL +/* + USE_LOCAL_MEMORY_POOL + + This define enables the local memory management to improve performance. +*/ +#define USE_LOCAL_MEMORY_POOL 1 +#endif + +/******************************************************************************* +** Memory Pool Data Structures +*******************************************************************************/ +#if USE_LOCAL_MEMORY_POOL + typedef struct _gcsMEM_FS_MEM_POOL * gcsMEM_FS_MEM_POOL; + typedef struct _gcsMEM_VS_MEM_POOL * gcsMEM_VS_MEM_POOL; + typedef struct _gcsMEM_AFS_MEM_POOL * gcsMEM_AFS_MEM_POOL; +#else + typedef gcoOS gcsMEM_FS_MEM_POOL; + typedef gcoOS gcsMEM_VS_MEM_POOL; + typedef gcoOS gcsMEM_AFS_MEM_POOL; +#endif + +/******************************************************************************* +** Memory Pool Macros +*******************************************************************************/ +#if USE_LOCAL_MEMORY_POOL +#define gcmMEM_DeclareFSMemPool(Type, TypeName, Prefix) \ +gceSTATUS \ +Prefix##_Allocate##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type ** Pointer \ + ) \ +{ \ + return(gcfMEM_FSMemPoolGetANode(MemPool, (gctPOINTER *) Pointer)); \ +} \ + \ +gceSTATUS \ +Prefix##_CAllocate##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type ** Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + gcmERR_RETURN(gcfMEM_FSMemPoolGetANode(MemPool, (gctPOINTER *) Pointer)); \ + gcoOS_ZeroMemory(*(gctPOINTER *) Pointer, gcmSIZEOF(Type)); \ + gcmFOOTER(); \ + return gcvSTATUS_OK; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type * Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + status = gcfMEM_FSMemPoolFreeANode(MemPool, (gctPOINTER) Pointer); \ + gcmFOOTER(); \ + return status; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName##List(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type * FirstPointer, \ + Type * LastPointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x FirstPointer=0x%x LastPointer=0x%x", MemPool, FirstPointer, LastPointer); \ + status = gcfMEM_FSMemPoolFreeAList(MemPool, (gctPOINTER) FirstPointer, (gctPOINTER) LastPointer); \ + gcmFOOTER(); \ + return status; \ +} + +#define gcmMEM_DeclareVSMemPool(Type, TypeName, Prefix) \ +gceSTATUS \ +Prefix##_Allocate##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Size \ + ) \ +{ \ + gceSTATUS status;\ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Size=%u", MemPool, Pointer, Size); \ + status = gcfMEM_VSMemPoolGetANode(MemPool, Size, (gctPOINTER *) Pointer); \ + gcmFOOTER(); \ + return status; \ +} \ + \ +gceSTATUS \ + Prefix##_CAllocate##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Size \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Size=%u", MemPool, Pointer, Size); \ + gcmERR_RETURN(gcfMEM_VSMemPoolGetANode(MemPool, Size, (gctPOINTER *) Pointer)); \ + gcoOS_ZeroMemory(*(gctPOINTER *) Pointer, size); \ + gcmFOOTER(); \ + return gcvSTATUS_OK; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type * Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pinter); \ + status = gcfMEM_VSMemPoolFreeANode(MemPool, (gctPOINTER) Pointer); \ + gcmFOOTER(); \ + return status; \ +} + +#define gcmMEM_DeclareAFSMemPool(Type, TypeName, Prefix) \ +gceSTATUS \ +Prefix##_Allocate##TypeName(\ + gcsMEM_AFS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Count \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Count=%u", MemPool, Pointer, Count); \ + status = gcfMEM_AFSMemPoolGetANode(MemPool, Count, (gctPOINTER *) Pointer); \ + gcmFOOTER(); \ + return status; \ +} \ + \ +gceSTATUS \ +Prefix##_CAllocate##TypeName(\ + gcsMEM_AFS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Count \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Count=%u", MemPool, Pointer, Count); \ + gcmERR_RETURN(gcfMEM_AFSMemPoolGetANode(MemPool, Count, (gctPOINTER *) Pointer)); \ + gcoOS_ZeroMemory(*(gctPOINTER *) Pointer, Count * gcmSIZEOF(Type)); \ + gcmFOOTER(); \ + return gcvSTATUS_OK; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName(\ + gcsMEM_AFS_MEM_POOL MemPool, \ + Type * Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + status = gcfMEM_AFSMemPoolFreeANode(MemPool, (gctPOINTER) Pointer); \ + gcmFOOTER(); \ + return status; \ +} + +#else + +#define gcmMEM_DeclareFSMemPool(Type, TypeName, Prefix) \ +gceSTATUS \ +Prefix##_Allocate##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type ** Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + status = gcoOS_Allocate(MemPool, \ + gcmSIZEOF(Type), \ + (gctPOINTER *) Pointer); \ + gcmFOOTER(); \ + return status; \ +} \ + \ +gceSTATUS \ +Prefix##_CAllocate##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type ** Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + gcmERR_RETURN(gcoOS_Allocate(MemPool, \ + gcmSIZEOF(Type), \ + (gctPOINTER *) Pointer)); \ + gcoOS_ZeroMemory(*(gctPOINTER *) Pointer, gcmSIZEOF(Type)); \ + gcmFOOTER(); \ + return gcvSTATUS_OK; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName(\ + gcsMEM_FS_MEM_POOL MemPool, \ + Type * Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + status = gcmOS_SAFE_FREE(MemPool, Pointer); \ + gcmFOOTER(); \ + return status; \ +} + +#define gcmMEM_DeclareVSMemPool(Type, TypeName, Prefix) \ +gceSTATUS \ +Prefix##_Allocate##TypeName(\ + gcsMEM_VS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Size \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Size=%u", MemPool, Pointer, Size); \ + status = gcoOS_Allocate(MemPool, \ + Size, \ + (gctPOINTER *) Pointer); \ + gcmFOOTER(); \ + return status; \ +} \ + \ +gceSTATUS \ +Prefix##_CAllocate##TypeName(\ + gcsMEM_VS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Size \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Size=%u", MemPool, Pointer, Size); \ + gcmERR_RETURN(gcoOS_Allocate(MemPool, \ + Size, \ + (gctPOINTER *) Pointer)); \ + gcoOS_ZeroMemory(*(gctPOINTER *) Pointer, Size); \ + gcmFOOTER(); \ + return gcvSTATUS_OK; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName(\ + gcsMEM_VS_MEM_POOL MemPool, \ + Type * Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + status = gcmOS_SAFE_FREE(MemPool, Pointer); \ + gcmFOOTER(); \ + return status; \ +} + +#define gcmMEM_DeclareAFSMemPool(Type, TypeName, Prefix) \ +gceSTATUS \ +Prefix##_Allocate##TypeName(\ + gcsMEM_AFS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Count \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Count=%u", MemPool, Pointer, Count); \ + status = gcoOS_Allocate(MemPool, \ + Count * gcmSIZEOF(Type), \ + (gctPOINTER *) Pointer); \ + gcmFOOTER(); \ + return status; \ +} \ + \ +gceSTATUS \ +Prefix##_CAllocate##TypeName(\ + gcsMEM_AFS_MEM_POOL MemPool, \ + Type ** Pointer, \ + gctUINT Count \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x Count=%u", MemPool, Pointer, Count); \ + gcmERR_RETURN(gcoOS_Allocate(MemPool, \ + Count * gcmSIZEOF(Type), \ + (gctPOINTER *) Pointer)); \ + gcoOS_ZeroMemory(*(gctPOINTER *) Pointer, Count * gcmSIZEOF(Type)); \ + gcmFOOTER(); \ + return gcvSTATUS_OK; \ +} \ + \ +gceSTATUS \ +Prefix##_Free##TypeName(\ + gcsMEM_AFS_MEM_POOL MemPool, \ + Type * Pointer \ + ) \ +{ \ + gceSTATUS status; \ + gcmHEADER_ARG("MemPool=0x%x Pointer=0x%x", MemPool, Pointer); \ + status = gcmOS_SAFE_FREE(MemPool, Pointer); \ + gcmFOOTER(); \ + return status; \ +} +#endif + +/******************************************************************************* +** Memory Pool Data Functions +*******************************************************************************/ +gceSTATUS +gcfMEM_InitFSMemPool( + IN gcsMEM_FS_MEM_POOL * MemPool, + IN gcoOS OS, + IN gctUINT NodeCount, + IN gctUINT NodeSize + ); + +gceSTATUS +gcfMEM_FreeFSMemPool( + IN gcsMEM_FS_MEM_POOL * MemPool + ); + +gceSTATUS +gcfMEM_FSMemPoolGetANode( + IN gcsMEM_FS_MEM_POOL MemPool, + OUT gctPOINTER * Node + ); + +gceSTATUS +gcfMEM_FSMemPoolFreeANode( + IN gcsMEM_FS_MEM_POOL MemPool, + IN gctPOINTER Node + ); + +gceSTATUS +gcfMEM_FSMemPoolFreeAList( + IN gcsMEM_FS_MEM_POOL MemPool, + IN gctPOINTER FirstNode, + IN gctPOINTER LastNode + ); + +gceSTATUS +gcfMEM_InitVSMemPool( + IN gcsMEM_VS_MEM_POOL * MemPool, + IN gcoOS OS, + IN gctUINT BlockSize, + IN gctBOOL RecycleFreeNode + ); + +gceSTATUS +gcfMEM_FreeVSMemPool( + IN gcsMEM_VS_MEM_POOL * MemPool + ); + +gceSTATUS +gcfMEM_VSMemPoolGetANode( + IN gcsMEM_VS_MEM_POOL MemPool, + IN gctUINT Size, + IN gctUINT Alignment, + OUT gctPOINTER * Node + ); + +gceSTATUS +gcfMEM_VSMemPoolFreeANode( + IN gcsMEM_VS_MEM_POOL MemPool, + IN gctPOINTER Node + ); + +gceSTATUS +gcfMEM_InitAFSMemPool( + IN gcsMEM_AFS_MEM_POOL *MemPool, + IN gcoOS OS, + IN gctUINT NodeCount, + IN gctUINT NodeSize + ); + +gceSTATUS +gcfMEM_FreeAFSMemPool( + IN gcsMEM_AFS_MEM_POOL *MemPool + ); + +gceSTATUS +gcfMEM_AFSMemPoolGetANode( + IN gcsMEM_AFS_MEM_POOL MemPool, + IN gctUINT Count, + OUT gctPOINTER * Node + ); + +gceSTATUS +gcfMEM_AFSMemPoolFreeANode( + IN gcsMEM_AFS_MEM_POOL MemPool, + IN gctPOINTER Node + ); + +#ifdef __cplusplus +} +#endif + +#endif /* (gcdENABLE_3D || gcdENABLE_VG) */ +#endif /* __gc_hal_mem_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_metadata.h b/include_v6.4.3.p4.6/gc_hal_metadata.h new file mode 100644 index 0000000..c3a567d --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_metadata.h @@ -0,0 +1,91 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_kernel_metadata_h_ +#define __gc_hal_kernel_metadata_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Macro to combine four characters into a Character Code. */ +#define __FOURCC(a, b, c, d) \ + ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) + +#define VIV_VIDMEM_METADATA_MAGIC __FOURCC('v', 'i', 'v', 'm') + +/* Metadata for cross-device fd share with additional (ts) info. */ +typedef struct _VIV_VIDMEM_METADATA +{ + uint32_t magic; + + int32_t ts_fd; + void * ts_dma_buf; + + uint32_t fc_enabled; + uint32_t fc_value; + uint32_t fc_value_upper; + + uint32_t compressed; + uint32_t compress_format; +} _VIV_VIDMEM_METADATA; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_kernel_metadata_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_options.h b/include_v6.4.3.p4.6/gc_hal_options.h new file mode 100644 index 0000000..0a43d03 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_options.h @@ -0,0 +1,1417 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_options_h_ +#define __gc_hal_options_h_ + +/* + gcdSECURITY + +*/ +#ifndef gcdSECURITY +# define gcdSECURITY 0 +#endif + +/* + gcdPRINT_VERSION + + Print HAL version. +*/ +#ifndef gcdPRINT_VERSION +# define gcdPRINT_VERSION 0 +#endif + +/* +USE_KERNEL_VIRTUAL_BUFFERS + +This define enables the use of VM for gckCommand and fence buffers. +*/ +#ifndef USE_KERNEL_VIRTUAL_BUFFERS +#if defined(UNDER_CE) +# define USE_KERNEL_VIRTUAL_BUFFERS 1 +#else +# define USE_KERNEL_VIRTUAL_BUFFERS 1 +#endif +#endif + +/* + USE_NEW_LINUX_SIGNAL + + This define enables the Linux kernel signaling between kernel and user. +*/ +#ifndef USE_NEW_LINUX_SIGNAL +# define USE_NEW_LINUX_SIGNAL 0 +#endif + +/* + USE_LINUX_PCIE + + This define enables galcore as a Linux PCIE driver. +*/ +#ifndef USE_LINUX_PCIE +# define USE_LINUX_PCIE 0 +#endif + +/* + VIVANTE_PROFILER + + This define enables the profiler for hardware counters. +*/ +#ifndef VIVANTE_PROFILER +# define VIVANTE_PROFILER 1 +#endif + +/* + gcdUSE_VG + + Enable VG HAL layer (only for GC350). +*/ +#ifndef gcdUSE_VG +# define gcdUSE_VG 0 +#endif + +/* + gcdUSE_VX + + Enable VX HAL layer. +*/ +#ifndef gcdUSE_VX +# define gcdUSE_VX 1 +#endif + +/* + PROFILE_HAL_COUNTERS + + This define enables HAL counter profiling support. HW and SHADER + counter profiling depends on this. +*/ +#ifndef PROFILE_HAL_COUNTERS +# define PROFILE_HAL_COUNTERS 1 +#endif + +/* + PROFILE_HW_COUNTERS + + This define enables HW counter profiling support. +*/ +#ifndef PROFILE_HW_COUNTERS +# define PROFILE_HW_COUNTERS 1 +#endif + +/* + PROFILE_SHADER_COUNTERS + + This define enables SHADER counter profiling support. +*/ +#ifndef PROFILE_SHADER_COUNTERS +# define PROFILE_SHADER_COUNTERS 1 +#endif + +/* + COMMAND_PROCESSOR_VERSION + + The version of the command buffer and task manager. +*/ +#define COMMAND_PROCESSOR_VERSION 1 + +/* + gcdDUMP + + Dump for hw capture. + When set to 1, a dump of all states and memory uploads, as well as other + hardware related execution will be printed to the debug console. This + data can be used for playing back applications. + + When set to 2, for vxc, all output memory will be dump. + + Please get tweak settings in gc_hal_dump.h. +*/ +#ifndef gcdDUMP +# define gcdDUMP 0 +#endif + +/* + gcdDUMP_IN_KERNEL + + Enhanced feature for hw capture capture. + Required for MCFE. + When set to 1, all dumps will happen in the kernel. This is handy if + you want the kernel to dump its command buffers as well and the data + needs to be in sync. + + Dump in kernel implies kernel command dump. + See debugfs:/gc/dump/ for runtime configuration. +*/ +#ifndef gcdDUMP_IN_KERNEL +# define gcdDUMP_IN_KERNEL 0 +#endif + +/* + gcdDUMP_2D + + Dump for 2D capture. + When set to non-zero, it will dump the 2D command and surface. + + Please get tweak settings in gc_hal_dump.h. +*/ +#ifndef gcdDUMP_2D +# define gcdDUMP_2D 0 +#endif + +/* + gcdDUMP_API + + Dump driver level API. + When set to 1, a high level dump of the EGL and GL/VG APs's are + captured. + + Please get tweak settings in gc_hal_dump.h. +*/ +#ifndef gcdDUMP_API +# define gcdDUMP_API 0 +#endif + +/* + gcdDUMP_PER_OPERATION + + Operation based dump. + + Dump the block as below. + 1. Multiple operations belong to the same SW tiling block. + 2. Single operation which is NOT in any SW tiling block. +*/ +#ifndef gcdDUMP_PER_OPERATION +# define gcdDUMP_PER_OPERATION 0 +#endif + +/* + gcdDEBUG_OPTION + When set to 1, the debug options are enabled. We must set other MACRO to enable + sub case. +*/ +#ifndef gcdDEBUG_OPTION +# define gcdDEBUG_OPTION 0 + +#if gcdDEBUG_OPTION +/* + gcdDEBUG_OPTION_KEY + The process name of debug application. +*/ +#ifndef gcdDEBUG_OPTION_KEY +# define gcdDEBUG_OPTION_KEY "process" +# endif +/* + gcdDEBUG_OPTION_NO_GL_DRAWS + When set to 1, all glDrawArrays and glDrawElements will be skip. +*/ +#ifndef gcdDEBUG_OPTION_NO_GL_DRAWS +# define gcdDEBUG_OPTION_NO_GL_DRAWS 0 +# endif +/* + gcdDEBUG_OPTION_NO_DRAW_PRIMITIVES + When set to 1, all DrawPrimitives will be skip. +*/ +#ifndef gcdDEBUG_OPTION_NO_DRAW_PRIMITIVES +# define gcdDEBUG_OPTION_NO_DRAW_PRIMITIVES 0 +# endif +/* + gcdDEBUG_OPTION_SKIP_SWAP + When set to 1, just one out of gcdDEBUG_OPTION_SKIP_FRAMES(such as 1/10) eglSwapBuffers will be resolve, + others skip. +*/ +#ifndef gcdDEBUG_OPTION_SKIP_SWAP +# define gcdDEBUG_OPTION_SKIP_SWAP 0 +# define gcdDEBUG_OPTION_SKIP_FRAMES 10 +# endif +/* + gcdDEBUG_OPTION_FORCE_16BIT_RENDER_TARGET + When set to 1, the format of render target will force to RGB565. +*/ +#ifndef gcdDEBUG_OPTION_FORCE_16BIT_RENDER_TARGET +# define gcdDEBUG_OPTION_FORCE_16BIT_RENDER_TARGET 0 +# endif +/* + gcdDEBUG_OPTION_NONE_TEXTURE + When set to 1, the type of texture will be set to 0x0. +*/ +#ifndef gcdDEBUG_OPTION_NONE_TEXTURE +# define gcdDEBUG_OPTION_NONE_TEXTURE 0 +# endif +/* + gcdDEBUG_OPTION_NONE_DEPTH + When set to 1, the depth format of surface will be set to gcvSURF_UNKNOWN. +*/ +#ifndef gcdDEBUG_OPTION_NONE_DEPTH +# define gcdDEBUG_OPTION_NONE_DEPTH 0 +# endif + +/* + gcdDEBUG_FORCE_CONTEXT_UPDATE + When set to 1, context will be updated before every commit. +*/ +#ifndef gcdDEBUG_FORCE_CONTEXT_UPDATE +# define gcdDEBUG_FORCE_CONTEXT_UPDATE 0 +# endif + + +/* + gcdDEBUG_FORCE_CONTEXT_UPDATE + When set to 1, pool of each type surface can be specified by + changing poolPerType[] in gcsSURF_NODE_Construct. +*/ +#ifndef gcdDEBUG_OPTION_SPECIFY_POOL +# define gcdDEBUG_OPTION_SPECIFY_POOL 0 +# endif + +# endif +#endif + +/* + gcdENABLE_FSCALE_VAL_ADJUST + When non-zero, FSCALE_VAL when gcvPOWER_ON can be adjusted externally. + */ +#ifndef gcdENABLE_FSCALE_VAL_ADJUST +# define gcdENABLE_FSCALE_VAL_ADJUST 1 +#endif + +#ifndef gcdCAPTURE_ONLY_MODE +# define gcdCAPTURE_ONLY_MODE 0 +#endif + +/* + gcdNULL_DRIVER + + Set to 1 for infinite speed hardware. + Set to 2 for bypassing the HAL. +*/ +#ifndef gcdNULL_DRIVER +# define gcdNULL_DRIVER 0 +#endif + +/* + gcdENABLE_TIMEOUT_DETECTION + + Enable timeout detection. +*/ +#ifndef gcdENABLE_TIMEOUT_DETECTION +# define gcdENABLE_TIMEOUT_DETECTION 0 +#endif + +/* + gcdCMD_BUFFER_SIZE + + Number of bytes in a command buffer. +*/ +#ifndef gcdCMD_BUFFER_SIZE +#if gcdCAPTURE_ONLY_MODE +# define gcdCMD_BUFFER_SIZE (4 << 10) +#else +# define gcdCMD_BUFFER_SIZE (128 << 10) +#endif +#endif + +/* + gcdCMD_BLT_BUFFER_SIZE + + Number of bytes in a command buffer. +*/ +#ifndef gcdCMD_BLT_BUFFER_SIZE +# define gcdCMD_BLT_BUFFER_SIZE (1 << 10) +#endif + +/* + gcdCMD_BUFFERS + + Number of command buffers to use per client. +*/ +#ifndef gcdCMD_BUFFERS +#if gcdCAPTURE_ONLY_MODE +# define gcdCMD_BUFFERS 1 +#else +# define gcdCMD_BUFFERS 2 +#endif +#endif + +/* + gcdMAX_CMD_BUFFERS + + Maximum number of command buffers to use per client. +*/ +#ifndef gcdMAX_CMD_BUFFERS +# define gcdMAX_CMD_BUFFERS 8 +#endif + +/* + gcdCOMMAND_QUEUES + + Number of command queues in the kernel. +*/ +#ifndef gcdCOMMAND_QUEUES +# define gcdCOMMAND_QUEUES 2 +#endif + +/* + gcdPOWER_CONTROL_DELAY + + The delay in milliseconds required to wait until the GPU has woke up + from a suspend or power-down state. This is system dependent because + the bus clock also needs to stabalize. +*/ +#ifndef gcdPOWER_CONTROL_DELAY +# define gcdPOWER_CONTROL_DELAY 0 +#endif + +/* + gcdMMU_SIZE + + Size of the MMU page table in bytes. Each 4 bytes can hold 4kB worth of + virtual data. +*/ +#ifndef gcdMMU_SIZE +# define gcdMMU_SIZE (2048 << 10) +#endif + +#ifndef gcdGC355_VGMMU_MEMORY_SIZE_KB +# define gcdGC355_VGMMU_MEMORY_SIZE_KB 32 +#endif + +/* + gcdREGISTER_READ_FROM_USER + gcdREGISTER_WRITE_FROM_USER + + Set to 1 to allow IOCTL calls to get through from user land. This + should only be in debug or development drops. +*/ +#ifndef gcdREGISTER_READ_FROM_USER +# define gcdREGISTER_READ_FROM_USER 1 +#endif + +#ifndef gcdREGISTER_WRITE_FROM_USER +# define gcdREGISTER_WRITE_FROM_USER 0 +#endif + +/* + gcdHEAP_SIZE + + Set the allocation size for the internal heaps. Each time a heap is + full, a new heap will be allocated with this minmimum amount of bytes. + The bigger this size, the fewer heaps there are to allocate, the better + the performance. However, heaps won't be freed until they are + completely free, so there might be some more memory waste if the size is + too big. +*/ +#ifndef gcdHEAP_SIZE +# define gcdHEAP_SIZE (64 << 10) +#endif + +/* + gcdPOWER_SUSPEND_WHEN_IDLE + + Set to 1 to make GPU enter gcvPOWER_SUSPEND when idle detected, + otherwise GPU will enter gcvPOWER_IDLE. +*/ +#ifndef gcdPOWER_SUSPEND_WHEN_IDLE +# define gcdPOWER_SUSPEND_WHEN_IDLE 1 +#endif + +#ifndef gcdFPGA_BUILD +# define gcdFPGA_BUILD 0 +#endif + +/* + gcdGPU_TIMEOUT + + This define specified the number of milliseconds the system will wait + before it broadcasts the GPU is stuck. In other words, it will define + the timeout of any operation that needs to wait for the GPU. + + If the value is 0, no timeout will be checked for. +*/ +#ifndef gcdGPU_TIMEOUT +#if gcdFPGA_BUILD +# define gcdGPU_TIMEOUT 2000000 +#else +# define gcdGPU_TIMEOUT 30000 +#endif +#endif + +/* + gcdGPU_2D_TIMEOUT + + This define specified the number of milliseconds the system will wait + before it broadcasts the 2D GPU is stuck. In other words, it will define + the timeout of any operation that needs to wait for the GPU. + + If the value is 0, no timeout will be checked for. +*/ +#ifndef gcdGPU_2D_TIMEOUT +# define gcdGPU_2D_TIMEOUT 4000 +#endif + + +/* + gcdGPU_ADVANCETIMER + + it is advance timer. +*/ +#ifndef gcdGPU_ADVANCETIMER +# define gcdGPU_ADVANCETIMER 250 +#endif + +/* + gcdSTATIC_LINK + + This define disalbes static linking; +*/ +#ifndef gcdSTATIC_LINK +# define gcdSTATIC_LINK 0 +#endif + +/* + gcdUSE_NEW_HEAP + + Setting this define to 1 enables new heap. +*/ +#ifndef gcdUSE_NEW_HEAP +# define gcdUSE_NEW_HEAP 0 +#endif + +/* + gcdCMD_NO_2D_CONTEXT + + This define enables no-context 2D command buffer. +*/ +#ifndef gcdCMD_NO_2D_CONTEXT +# define gcdCMD_NO_2D_CONTEXT 1 +#endif + +/* + gcdENABLE_BUFFER_ALIGNMENT + + When enabled, video memory is allocated with atleast 16KB aligment + between multiple sub-buffers. +*/ +#ifndef gcdENABLE_BUFFER_ALIGNMENT +#if gcdCAPTURE_ONLY_MODE +# define gcdENABLE_BUFFER_ALIGNMENT 0 +#else +# define gcdENABLE_BUFFER_ALIGNMENT 1 +#endif +#endif + +/* + gcdENABLE_BANK_ALIGNMENT + + When enabled, video memory is allocated bank aligned. The vendor can modify + _GetSurfaceBankAlignment() and _GetBankOffsetBytes() to define how + different types of allocations are bank and channel aligned. + When disabled (default), no bank alignment is done. + For CAPTURE ONLY MODE, should make sure that gcdENABLE_BANK_ALIGNMENT is disabled. +*/ +#ifndef gcdENABLE_BANK_ALIGNMENT +#if gcdCAPTURE_ONLY_MODE +# define gcdENABLE_BANK_ALIGNMENT 0 +#else +# define gcdENABLE_BANK_ALIGNMENT 0 +#endif +#endif + +/* + gcdBANK_BIT_START + + Specifies the start bit of the bank (inclusive). +*/ +#ifndef gcdBANK_BIT_START +# define gcdBANK_BIT_START 12 +#endif + +/* + gcdBANK_BIT_END + + Specifies the end bit of the bank (inclusive). +*/ +#ifndef gcdBANK_BIT_END +# define gcdBANK_BIT_END 14 +#endif + +/* + gcdBANK_CHANNEL_BIT + + When set, video memory when allocated bank aligned is allocated such that + render and depth buffer addresses alternate on the channel bit specified. + This option has an effect only when gcdENABLE_BANK_ALIGNMENT is enabled. + When disabled (default), no alteration is done. +*/ +#ifndef gcdBANK_CHANNEL_BIT +# define gcdBANK_CHANNEL_BIT 7 +#endif + +/* + gcdDYNAMIC_SPEED + + When non-zero, it informs the kernel driver to use the speed throttling + broadcasting functions to inform the system the GPU should be spet up or + slowed down. It will send a broadcast for slowdown each "interval" + specified by this define in milliseconds + (gckOS_BroadcastCalibrateSpeed). +*/ +#ifndef gcdDYNAMIC_SPEED +# define gcdDYNAMIC_SPEED 2000 +#endif + +/* + gcdDYNAMIC_EVENT_THRESHOLD + + When non-zero, it specifies the maximum number of available events at + which the kernel driver will issue a broadcast to speed up the GPU + (gckOS_BroadcastHurry). +*/ +#ifndef gcdDYNAMIC_EVENT_THRESHOLD +# define gcdDYNAMIC_EVENT_THRESHOLD 5 +#endif + +/* + gcdENABLE_PROFILING + + Enable profiling macros. +*/ +#ifndef gcdENABLE_PROFILING +# define gcdENABLE_PROFILING 0 +#endif + +/* + gcdENABLE_128B_MERGE + + Enable 128B merge for the BUS control. +*/ +#ifndef gcdENABLE_128B_MERGE +# define gcdENABLE_128B_MERGE 0 +#endif + +/* + gcdFRAME_DB + + When non-zero, it specified the number of frames inside the frame + database. The frame DB will collect per-frame timestamps and hardware + counters. +*/ +#ifndef gcdFRAME_DB +# define gcdFRAME_DB 0 +# define gcdFRAME_DB_RESET 0 +# define gcdFRAME_DB_NAME "/var/log/frameDB.log" +#endif + +/* + gcdENABLE_CACHEABLE_COMMAND_BUFFER + + When non-zero, command buffer will be cacheable. +*/ +#ifndef gcdENABLE_CACHEABLE_COMMAND_BUFFER +# define gcdENABLE_CACHEABLE_COMMAND_BUFFER 0 +#endif + +/* + gcdENABLE_BUFFERABLE_VIDEO_MEMORY + + When non-zero, all video memory will be bufferable by default. +*/ +#ifndef gcdENABLE_BUFFERABLE_VIDEO_MEMORY +#if gcdFPGA_BUILD +# define gcdENABLE_BUFFERABLE_VIDEO_MEMORY 0 +#else +# define gcdENABLE_BUFFERABLE_VIDEO_MEMORY 1 +#endif +#endif + +/* + gcdENABLE_INFINITE_SPEED_HW + enable the Infinte HW, this is for 2D openVG +*/ +#ifndef gcdENABLE_INFINITE_SPEED_HW +# define gcdENABLE_INFINITE_SPEED_HW 0 +#endif + +/* + gcdPOWEROFF_TIMEOUT + + When non-zero, GPU will power off automatically from + idle state, and gcdPOWEROFF_TIMEOUT is also the default + timeout in milliseconds. + */ +#ifndef gcdPOWEROFF_TIMEOUT +# define gcdPOWEROFF_TIMEOUT 300 +#endif + +/* + QNX_SINGLE_THREADED_DEBUGGING +*/ +#ifndef QNX_SINGLE_THREADED_DEBUGGING +# define QNX_SINGLE_THREADED_DEBUGGING 0 +#endif + +/* + gcdSHARED_RESOLVE_BUFFER_ENABLED + + Use shared resolve buffer for all app buffers. +*/ +#ifndef gcdSHARED_RESOLVE_BUFFER_ENABLED +# define gcdSHARED_RESOLVE_BUFFER_ENABLED 0 +#endif + +/* + gcdUSE_TRIANGLE_STRIP_PATCH + */ +#ifndef gcdUSE_TRIANGLE_STRIP_PATCH +# define gcdUSE_TRIANGLE_STRIP_PATCH 1 +#endif + +/* + gcdSHARED_PAGETABLE + + When non-zero, multiple GPUs in one chip with same MMU use + one shared pagetable. So that when accessing same surface, + they can use same GPU virtual address. +*/ +#ifndef gcdSHARED_PAGETABLE +# define gcdSHARED_PAGETABLE 0 +#endif + +#ifndef gcdUSE_PVR +# define gcdUSE_PVR 1 +#endif + +/* + gcdSMALL_BLOCK_SIZE + + When non-zero, a part of VIDMEM will be reserved for requests + whose requesting size is less than gcdSMALL_BLOCK_SIZE. + + For Linux, it's the size of a page. If this requeset fallbacks + to gcvPOOL_VIRTUAL, memory will be wasted + because they allocate a page at least. +*/ +#ifndef gcdSMALL_BLOCK_SIZE +# define gcdSMALL_BLOCK_SIZE 4096 +# define gcdRATIO_FOR_SMALL_MEMORY 32 +#endif + +/* + gcdENABLE_GPU_1M_PAGE + When non-zero, GPU page size will be 1M until the pool is out of memory + and low-level to 4K pages. When zero, it uses 4k GPU pages. +*/ +#ifndef gcdENABLE_GPU_1M_PAGE +#if !gcdSECURITY && defined(LINUX) +# define gcdENABLE_GPU_1M_PAGE 0 +#else +# define gcdENABLE_GPU_1M_PAGE 0 +#endif +#endif + +/* + gcdCONTIGUOUS_SIZE_LIMIT + When non-zero, size of video node from gcvPOOL_VIRTUAL contiguous is + limited by gcdCONTIGUOUS_SIZE_LIMIT. +*/ +#ifndef gcdCONTIGUOUS_SIZE_LIMIT +# define gcdCONTIGUOUS_SIZE_LIMIT 0 +#endif + +/* + gcdLINK_QUEUE_SIZE + + When non-zero, driver maintains a queue to record information of + latest lined context buffer and command buffer. Data in this queue + is be used to debug. +*/ +#ifndef gcdLINK_QUEUE_SIZE +# define gcdLINK_QUEUE_SIZE 64 +#endif + +/* gcdALPHA_KILL_IN_SHADER + + Enable alpha kill inside the shader. This will be set automatically by the + HAL if certain states match a criteria. +*/ +#ifndef gcdALPHA_KILL_IN_SHADER +# define gcdALPHA_KILL_IN_SHADER 1 +#endif + + +#ifndef gcdPRINT_SWAP_TIME +# define gcdPRINT_SWAP_TIME 0 +#endif + +/* + gcdDVFS + + When non-zero, software will make use of dynamic voltage and + frequency feature. + */ +#ifndef gcdDVFS +# define gcdDVFS 0 +# define gcdDVFS_ANAYLSE_WINDOW 4 +# define gcdDVFS_POLLING_TIME (gcdDVFS_ANAYLSE_WINDOW * 4) +#endif + +#ifndef gcdSYNC +# define gcdSYNC 1 +#endif + +#ifndef gcdSHADER_SRC_BY_MACHINECODE +# define gcdSHADER_SRC_BY_MACHINECODE 1 +#endif + +#ifndef gcdGLB27_SHADER_REPLACE_OPTIMIZATION +# define gcdGLB27_SHADER_REPLACE_OPTIMIZATION 1 +#endif + + +/* + gcdSUPPORT_SWAP_RECTANGLE + + Support swap with a specific rectangle. + + Set the rectangle with eglSetSwapRectangleVIV api. + Android only. +*/ +#ifndef gcdSUPPORT_SWAP_RECTANGLE +# define gcdSUPPORT_SWAP_RECTANGLE 1 +#endif + +/* + gcdGPU_LINEAR_BUFFER_ENABLED + + Use linear buffer for GPU apps so HWC can do 2D composition. + Android only. +*/ +#ifndef gcdGPU_LINEAR_BUFFER_ENABLED +# define gcdGPU_LINEAR_BUFFER_ENABLED 1 +#endif + +/* + gcdENABLE_RENDER_INTO_WINDOW + + Enable Render-Into-Window (ie, No-Resolve) feature on android. + NOTE that even if enabled, it still depends on hardware feature and + android application behavior. When hardware feature or application + behavior can not support render into window mode, it will fail back + to normal mode. + When Render-Into-Window is finally used, window back buffer of android + applications will be allocated matching render target tiling format. + Otherwise buffer tiling is decided by the above option + 'gcdGPU_LINEAR_BUFFER_ENABLED'. + Android only for now. +*/ +#ifndef gcdENABLE_RENDER_INTO_WINDOW +# define gcdENABLE_RENDER_INTO_WINDOW 1 +#endif + +/* + gcdENABLE_RENDER_INTO_WINDOW_WITH_FC + + Enable Direct-rendering (ie, No-Resolve) with tile status. + This is expremental and in development stage. + This will dynamically check if color compression is available. +*/ +#ifndef gcdENABLE_RENDER_INTO_WINDOW_WITH_FC +# define gcdENABLE_RENDER_INTO_WINDOW_WITH_FC 1 +#endif + +/* + gcdENABLE_BLIT_BUFFER_PRESERVE + + Render-Into-Window (ie, No-Resolve) does not include preserved swap + behavior. This feature can enable buffer preserve in No-Resolve mode. + When enabled, previous buffer (may be part of ) will be resolve-blitted + to current buffer. +*/ +#ifndef gcdENABLE_BLIT_BUFFER_PRESERVE +# define gcdENABLE_BLIT_BUFFER_PRESERVE 1 +#endif + +/* + gcdANDROID_NATIVE_FENCE_SYNC + + Enable android native fence sync. It is introduced since jellybean-4.2. + Depends on linux kernel option: CONFIG_SYNC. + + 0: Disabled + 1: Build framework for native fence sync feature, and EGL extension + 2: Enable async swap buffers for client + * Native fence sync for client 'queueBuffer' in EGL, which is + 'acquireFenceFd' for layer in compositor side. + 3. Enable async hwcomposer composition. + * 'releaseFenceFd' for layer in compositor side, which is native + fence sync when client 'dequeueBuffer' + * Native fence sync for compositor 'queueBuffer' in EGL, which is + 'acquireFenceFd' for framebuffer target for DC + */ +#ifndef gcdANDROID_NATIVE_FENCE_SYNC +# define gcdANDROID_NATIVE_FENCE_SYNC 0 +#endif + +#ifndef gcdLINUX_SYNC_FILE +# define gcdLINUX_SYNC_FILE 0 +#endif + +/* + gcdANDROID_IMPLICIT_NATIVE_BUFFER_SYNC + + Enable implicit android native buffer sync. + + For non-HW_RENDER buffer, CPU (or other hardware) and GPU can access + the buffer at the same time. This is to add implicit synchronization + between CPU (or the hardware) and GPU. + + Eventually, please do not use implicit native buffer sync, but use + "fence sync" or "android native fence sync" instead in libgui, which + can be enabled in frameworks/native/libs/gui/Android.mk. This kind + of synchronization should be done by app but not driver itself. + + Please disable this option when either "fence sync" or + "android native fence sync" is enabled. + */ +#ifndef gcdANDROID_IMPLICIT_NATIVE_BUFFER_SYNC +# define gcdANDROID_IMPLICIT_NATIVE_BUFFER_SYNC 1 +#endif + +/* + * Implicit native buffer sync is not needed when ANDROID_native_fence_sync + * is available. + */ +#if gcdANDROID_NATIVE_FENCE_SYNC +# undef gcdANDROID_IMPLICIT_NATIVE_BUFFER_SYNC +# define gcdANDROID_IMPLICIT_NATIVE_BUFFER_SYNC 0 +#endif + +/* + gcdUSE_WCLIP_PATCH + + Enable wclipping patch. +*/ +#ifndef gcdUSE_WCLIP_PATCH +# define gcdUSE_WCLIP_PATCH 1 +#endif + +#ifndef gcdUSE_NPOT_PATCH +# define gcdUSE_NPOT_PATCH 1 +#endif + +/* + gcdINTERNAL_COMMENT + + Wrap internal comment, content wrapped by it and the macor itself + will be removed in release driver. +*/ +#ifndef gcdINTERNAL_COMMENT +# define gcdINTERNAL_COMMENT 1 +#endif + +/* + gcdRTT_DISABLE_FC + + Disable RTT FC support. For test only. +*/ +#ifndef gcdRTT_DISABLE_FC +# define gcdRTT_DISABLE_FC 0 +#endif + +/* + gcdFORCE_MIPMAP + + Force generate mipmap for texture. +*/ +#ifndef gcdFORCE_MIPMAP +# define gcdFORCE_MIPMAP 0 +#endif + +/* + gcdFORCE_BILINEAR + + Force bilinear for mipfilter. +*/ +#ifndef gcdFORCE_BILINEAR +# define gcdFORCE_BILINEAR 1 +#endif + +/* + gcdBINARY_TRACE + + When non-zero, binary trace will be generated. + + When gcdBINARY_TRACE_FILE_SIZE is non-zero, binary trace buffer will + be written to a file which size is limited to + gcdBINARY_TRACE_FILE_SIZE. +*/ +#ifndef gcdBINARY_TRACE +# define gcdBINARY_TRACE 0 +# define gcdBINARY_TRACE_FILE_SIZE 0 +#endif + +#ifndef gcdMOVG +# define gcdMOVG 0 +# define gcdENABLE_TS_DOUBLE_BUFFER 1 +#else +#if gcdMOVG +# define gcdENABLE_TS_DOUBLE_BUFFER 0 +#else +# define gcdENABLE_TS_DOUBLE_BUFFER 1 +#endif +#endif + +/* gcdINTERRUPT_STATISTIC + * + * Monitor the event send to GPU and interrupt issued by GPU. + */ + +#ifndef gcdINTERRUPT_STATISTIC +#if defined(LINUX) || defined(__QNXNTO__) || defined(UNDER_CE) || defined(__VXWORKS__) +# define gcdINTERRUPT_STATISTIC 1 +#else +# define gcdINTERRUPT_STATISTIC 0 +#endif +#endif + +/* + gcdFENCE_WAIT_LOOP_COUNT + Wait fence, loop count. +*/ +#ifndef gcdFENCE_WAIT_LOOP_COUNT +# define gcdFENCE_WAIT_LOOP_COUNT 100 +#endif + +/* + gcdPARTIAL_FAST_CLEAR + When it's not zero, partial fast clear is enabled. + Depends on gcdHAL_3D_DRAWBLIT, if gcdHAL_3D_DRAWBLIT is not enabled, + only available when scissor box is completely aligned. + Expremental, under test only. Not ready for production. +*/ +#ifndef gcdPARTIAL_FAST_CLEAR +# define gcdPARTIAL_FAST_CLEAR 0 +#endif + +/* + gcdREMOVE_SURF_ORIENTATION + When it's not zero, we will remove surface orientation function. + It wil become to a parameter of resolve function. +*/ +#ifndef gcdREMOVE_SURF_ORIENTATION +# define gcdREMOVE_SURF_ORIENTATION 1 +#endif + + + +/* + gcdTEST_DEC200 + Test part for DEC200. Remove when release. +*/ +#ifndef gcdTEST_DEC200 +# define gcdTEST_DEC200 0 +#endif + +/* + gcdPATTERN_FAST_PATH + For pattern match +*/ +#ifndef gcdPATTERN_FAST_PATH +# define gcdPATTERN_FAST_PATH 1 +#endif + +/* + gcdUSE_INPUT_DEVICE + disable input devices usage under fb mode to support fb+vdk multi-process +*/ +#ifndef gcdUSE_INPUT_DEVICE +# define gcdUSE_INPUT_DEVICE 0 +#endif + +/* + gcdPERFORMANCE_ANALYSIS + + When set to 1, driver will pass information through loadstate + to HW. This loadstate does not impact HW execution. +*/ +#ifndef gcdPERFORMANCE_ANALYSIS +# define gcdPERFORMANCE_ANALYSIS 0 +#endif + +/* + gcdFRAMEINFO_STATISTIC + When enable, collect frame information. +*/ +#ifndef gcdFRAMEINFO_STATISTIC + +#if (defined(DBG) && DBG) || defined(DEBUG) || \ + defined(_DEBUG) || gcdDUMP || gcdPERFORMANCE_ANALYSIS || \ + (defined(WIN32) && !defined(UNDER_CE)) || \ + gcdFPGA_BUILD + +# define gcdFRAMEINFO_STATISTIC 1 +#else +# define gcdFRAMEINFO_STATISTIC 0 +#endif + +#endif + +/* + gcdDEC_ENABLE_AHB + Enable DEC300 compression AHB mode or not. +*/ +#ifndef gcdDEC_ENABLE_AHB +# define gcdDEC_ENABLE_AHB 0 +#endif + +/* + gcdENABLE_UNIFIED_CONSTANT + Enable unified constant or not. +*/ +#ifndef gcdENABLE_UNIFIED_CONSTANT +# define gcdENABLE_UNIFIED_CONSTANT 1 +#endif + +/* + Core configurations. By default enable all cores. +*/ +#ifndef gcdENABLE_3D +# define gcdENABLE_3D 1 +#endif + +#ifndef gcdENABLE_2D +# define gcdENABLE_2D 1 +#endif + +#ifndef gcdENABLE_VG +# define gcdENABLE_VG 0 +#endif + +#ifndef gcdVG_ONLY +# define gcdVG_ONLY (!gcdENABLE_3D && !gcdENABLE_2D && gcdENABLE_VG) +#endif + +#if defined(WIN32) && !defined(UNDER_CE) && (gcdENABLE_VG == 1) + +#ifdef gcdUSE_VX +#undef gcdUSE_VX +#endif + +#ifdef COMMAND_PROCESSOR_VERSION +#undef COMMAND_PROCESSOR_VERSION +#endif + +#ifdef gcdENABLE_TRUST_APPLICATION +#undef gcdENABLE_TRUST_APPLICATION +#endif + +#ifdef gcdENABLE_3D +#undef gcdENABLE_3D +#endif + +#ifdef gcdENABLE_2D +#undef gcdENABLE_2D +#endif + +#define gcdENABLE_3D 0 +#define gcdENABLE_2D 0 +#define gcdUSE_VX 0 +#define COMMAND_PROCESSOR_VERSION 2 +#define gcdENABLE_TRUST_APPLICATION 0 + +#endif /* Only for GC355 Cmodel build. */ + +#ifndef gcdGC355_PROFILER +# define gcdGC355_PROFILER 0 +#endif + +/* + This definition must be paired with VIVANTE_PROFILER_SYSTEM_MEMORY +*/ +#ifndef gcdGC355_MEM_PRINT +# define gcdGC355_MEM_PRINT 0 +#else +#if (!((gcdENABLE_3D == 0) && (gcdENABLE_2D == 0) && (gcdENABLE_VG == 1))) +# undef gcdGC355_MEM_PRINT +# define gcdGC355_MEM_PRINT 0 +# endif +#endif + + +/* + gcdRECORD_COMMAND +*/ +#ifndef gcdRECORD_COMMAND +# define gcdRECORD_COMMAND 0 +#endif + +/* + gcdALLOC_CMD_FROM_RESERVE + + Provide a way by which location of command buffer can be + specified. This is a DEBUG option to limit command buffer + to some memory range. +*/ +#ifndef gcdALLOC_CMD_FROM_RESERVE +# define gcdALLOC_CMD_FROM_RESERVE 0 +#endif + +/* + gcdBOUNDARY_CHECK + + When enabled, add bounary before and after a range of + GPU address. So overflow can be trapped by MMU exception. + This is a debug option for new MMU and mmuException module parameter + is enabled. +*/ +#ifndef gcdBOUNDARY_CHECK +# define gcdBOUNDARY_CHECK 0 +#endif + +/* + gcdRENDER_QUALITY_CHECK + + When enabled, we disable performance opt patch + to get know rendering quality comparing with other vendor. +*/ +#ifndef gcdRENDER_QUALITY_CHECK +# define gcdRENDER_QUALITY_CHECK 0 +#endif + +/* + gcdSYSTRACE + + When enabled, we embed systrace in function header/footer + to gather time information on linux platforms include android. + '1' to trace API (EGL, ES11, ES2x, ES3x, etc) + '2' to trace HAL (except compiler) + '4' to trace HAL compiler + See gc_hal_user_debug.c for more detailed trace zones. +*/ +#ifndef gcdSYSTRACE +# define gcdSYSTRACE 0 +#endif + +#ifndef gcdENABLE_APPCTXT_BLITDRAW +# define gcdENABLE_APPCTXT_BLITDRAW 0 +#endif + +/* + When enabled, use 1K mode for MMU version 2.0. otherwise use 4K mode. +*/ +#ifndef gcdENABLE_MMU_1KMODE +# define gcdENABLE_MMU_1KMODE 1 +#endif + +/* + gcdENABLE_TRUST_APPLICATION + + When enabled, trust application is used to handle 'security' registers. + + 1) If HW doesn't have robust and security feature, this option is meaningless. + 2) If HW have robust and security and this option is not enable, + security registers are handled by non secure driver. It is for + platform doesn't want/need to use trust zone. +*/ +#ifndef gcdENABLE_TRUST_APPLICATION +#if (defined(_WIN32) && !defined(UNDER_CE)) || (defined (LINUX) && !defined(EMULATOR)) +# define gcdENABLE_TRUST_APPLICATION 1 +#else +# define gcdENABLE_TRUST_APPLICATION 0 +#endif +#endif + +/* Disable gcdENABLE_TRUST_APPLICATION when oboslete gcdSECURITY enabled. */ +#if gcdSECURITY +#undef gcdENABLE_TRUST_APPLICATION +#define gcdENABLE_TRUST_APPLICATION 0 +#endif + +#ifndef gcdMMU_SECURE_AREA_SIZE +#if defined(gcdENABLE_MMU_1KMODE) +# define gcdMMU_SECURE_AREA_SIZE 32 +#else +# define gcdMMU_SECURE_AREA_SIZE 128 +#endif +#endif + +#ifndef gcdVX_OPTIMIZER +# define gcdVX_OPTIMIZER 0 +#endif + +#ifndef gcdALLOC_ON_FAULT +# define gcdALLOC_ON_FAULT 0 +#endif + +/* + gcdDISABLE_GPU_VIRTUAL_ADDRESS + + When enabled, disable MMU and all virtual allocated from MMU. +*/ +#ifndef gcdDISABLE_GPU_VIRTUAL_ADDRESS +# define gcdDISABLE_GPU_VIRTUAL_ADDRESS 0 +#endif + +/* + gcd2D_COMPRESSION_DEC400_ALIGN_MODE + + Only for DEC400 compression. + Set 0 as 16bytes aligned. 1 as 32bytes aligned. 2 as 64bytes aligned. + Default is 0 which means 32bytes aligned. +*/ +#ifndef gcd2D_COMPRESSION_DEC400_ALIGN_MODE +# define gcd2D_COMPRESSION_DEC400_ALIGN_MODE 1 +#endif + +/* + gcdENABLE_KERNEL_FENCE + When enabled, use kernel fence to do resource tracking. +*/ +#ifndef gcdENABLE_KENREL_FENCE +# define gcdENABLE_KERNEL_FENCE 0 +#endif + +/* + gcdUSE_VXC_BINARY + When enabled, will use prebuilt shader binary in VX driver. + */ +#ifndef gcdUSE_VXC_BINARY +# define gcdUSE_VXC_BINARY 0 +#endif + +/* + gcdFEATURE_SANITYCHECK + When enabled, will do hardware feature sanity check, each + used hardware feature should be printed out. + */ +#ifndef gcdFEATURE_SANITYCHECK +# define gcdFEATURE_SANITYCHECK 0 +#endif + + +/* + VIVANTE_PROFILER_SYSTEM_MEMORY + + This define enables the profiling data for system memory allocated by driver +*/ +#ifndef VIVANTE_PROFILER_SYSTEM_MEMORY +# define VIVANTE_PROFILER_SYSTEM_MEMORY 1 +# define VP_MALLOC_OFFSET (16) + +#endif + +#define gcdHAL_TEST 1 +#define gcdUSE_ZWP_SYNCHRONIZATION 1 + +/* + gcdUSE_SINGLE_CONTEXT + When enabled, will enable single context. + */ +#ifndef gcdUSE_SINGLE_CONTEXT +# define gcdUSE_SINGLE_CONTEXT 0 +#endif + +/* + gcdKERNEL_QUERY_PERFORMANCE_COUNTER_V8 + When enabled, will enable query new performance counter of V8.0 in kernel + space. + */ +#ifndef gcdKERNEL_QUERY_PERFORMANCE_COUNTER_V8 +# define gcdKERNEL_QUERY_PERFORMANCE_COUNTER_V8 0 +#endif + +/* + gcdIGNORE_DRIVER_VERSIONS_MISMATCH + When enabled, driver will ignore user and kernel driver version mismatch. +*/ +#ifndef gcdIGNORE_DRIVER_VERSIONS_MISMATCH +# define gcdIGNORE_DRIVER_VERSIONS_MISMATCH 1 +#endif + +/* + gcdEXTERNAL_SRAM_DEFAULT_POOL + When enabled, external SRAM can be used for the initial command, + but the external SRAM base and size must be set by customer. + AXI-SRAM only can be used if pool type is speficied + with gcvSRAM_EXTERNAL[X] when allocating video memory. +*/ +#ifndef gcdEXTERNAL_SRAM_DEFAULT_POOL +# define gcdEXTERNAL_SRAM_DEFAULT_POOL 0 +#endif + +/* + gcdENABLE_RECOVERY_ALL_CORES + When enabled, will recovery all cores when the gpu hang. +*/ +#ifndef gcdENABLE_RECOVERY_ALL_CORES +# define gcdENABLE_RECOVERY_ALL_CORES 1 +#endif + +#endif /* __gc_hal_options_h_ */ + +/* + * gcdENABLE_VIDEO_MEMORY_TRACE + * Dynamic trace video memory, if set to 1. + * Depends on kernel support. + * Only support Linux OS currently. + */ +#ifndef gcdENABLE_VIDEO_MEMORY_TRACE +#ifdef gcdANDROID +# define gcdENABLE_VIDEO_MEMORY_TRACE 1 +# else +# define gcdENABLE_VIDEO_MEMORY_TRACE 0 +# endif +#endif + + diff --git a/include_v6.4.3.p4.6/gc_hal_profiler.h b/include_v6.4.3.p4.6/gc_hal_profiler.h new file mode 100644 index 0000000..85d77dd --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_profiler.h @@ -0,0 +1,936 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_profiler_h_ +#define __gc_hal_profiler_h_ + +#include "shared/gc_hal_profiler_shared.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GLVERTEX_OBJECT 10 +#define GLVERTEX_OBJECT_BYTES 11 + +#define GLINDEX_OBJECT 20 +#define GLINDEX_OBJECT_BYTES 21 + +#define GLTEXTURE_OBJECT 30 +#define GLTEXTURE_OBJECT_BYTES 31 + +#define GLBUFOBJ_OBJECT 40 +#define GLBUFOBJ_OBJECT_BYTES 41 + +#define ES11_CALLS 151 +#define ES11_DRAWCALLS (ES11_CALLS + 1) +#define ES11_STATECHANGECALLS (ES11_DRAWCALLS + 1) +#define ES11_POINTCOUNT (ES11_STATECHANGECALLS + 1) +#define ES11_LINECOUNT (ES11_POINTCOUNT + 1) +#define ES11_TRIANGLECOUNT (ES11_LINECOUNT + 1) + +#define ES30_CALLS 159 +#define ES30_DRAWCALLS (ES30_CALLS + 1) +#define ES30_STATECHANGECALLS (ES30_DRAWCALLS + 1) +#define ES30_POINTCOUNT (ES30_STATECHANGECALLS + 1) +#define ES30_LINECOUNT (ES30_POINTCOUNT + 1) +#define ES30_TRIANGLECOUNT (ES30_LINECOUNT + 1) + +#define VG11_CALLS 88 +#define VG11_DRAWCALLS (VG11_CALLS + 1) +#define VG11_STATECHANGECALLS (VG11_DRAWCALLS + 1) +#define VG11_FILLCOUNT (VG11_STATECHANGECALLS + 1) +#define VG11_STROKECOUNT (VG11_FILLCOUNT + 1) +/* End of Driver API ID Definitions. */ + +/* HAL & MISC IDs. */ +#define HAL_VERTBUFNEWBYTEALLOC 1 +#define HAL_VERTBUFTOTALBYTEALLOC (HAL_VERTBUFNEWBYTEALLOC + 1) +#define HAL_VERTBUFNEWOBJALLOC (HAL_VERTBUFTOTALBYTEALLOC + 1) +#define HAL_VERTBUFTOTALOBJALLOC (HAL_VERTBUFNEWOBJALLOC + 1) +#define HAL_INDBUFNEWBYTEALLOC (HAL_VERTBUFTOTALOBJALLOC + 1) +#define HAL_INDBUFTOTALBYTEALLOC (HAL_INDBUFNEWBYTEALLOC + 1) +#define HAL_INDBUFNEWOBJALLOC (HAL_INDBUFTOTALBYTEALLOC + 1) +#define HAL_INDBUFTOTALOBJALLOC (HAL_INDBUFNEWOBJALLOC + 1) +#define HAL_TEXBUFNEWBYTEALLOC (HAL_INDBUFTOTALOBJALLOC + 1) +#define HAL_TEXBUFTOTALBYTEALLOC (HAL_TEXBUFNEWBYTEALLOC + 1) +#define HAL_TEXBUFNEWOBJALLOC (HAL_TEXBUFTOTALBYTEALLOC + 1) +#define HAL_TEXBUFTOTALOBJALLOC (HAL_TEXBUFNEWOBJALLOC + 1) + +#define GPU_CYCLES 1 +#define GPU_READ64BYTE (GPU_CYCLES + 1) +#define GPU_WRITE64BYTE (GPU_READ64BYTE + 1) +#define GPU_TOTALCYCLES (GPU_WRITE64BYTE + 1) +#define GPU_IDLECYCLES (GPU_TOTALCYCLES + 1) + +#define VS_INSTCOUNT 1 +#define VS_BRANCHINSTCOUNT (VS_INSTCOUNT + 1) +#define VS_TEXLDINSTCOUNT (VS_BRANCHINSTCOUNT + 1) +#define VS_RENDEREDVERTCOUNT (VS_TEXLDINSTCOUNT + 1) +#define VS_SOURCE (VS_RENDEREDVERTCOUNT + 1) +#define VS_NONIDLESTARVECOUNT (VS_SOURCE + 1) +#define VS_STARVELCOUNT (VS_NONIDLESTARVECOUNT + 1) +#define VS_STALLCOUNT (VS_STARVELCOUNT + 1) +#define VS_PROCESSCOUNT (VS_STALLCOUNT + 1) + +#define PS_INSTCOUNT 1 +#define PS_BRANCHINSTCOUNT (PS_INSTCOUNT + 1) +#define PS_TEXLDINSTCOUNT (PS_BRANCHINSTCOUNT + 1) +#define PS_RENDEREDPIXCOUNT (PS_TEXLDINSTCOUNT + 1) +#define PS_SOURCE (PS_RENDEREDPIXCOUNT + 1) +#define PS_NONIDLESTARVECOUNT (PS_SOURCE + 1) +#define PS_STARVELCOUNT (PS_NONIDLESTARVECOUNT + 1) +#define PS_STALLCOUNT (PS_STARVELCOUNT + 1) +#define PS_PROCESSCOUNT (PS_STALLCOUNT + 1) +#define PS_SHADERCYCLECOUNT (PS_PROCESSCOUNT + 1) + +#define PA_INVERTCOUNT 1 +#define PA_INPRIMCOUNT (PA_INVERTCOUNT + 1) +#define PA_OUTPRIMCOUNT (PA_INPRIMCOUNT + 1) +#define PA_DEPTHCLIPCOUNT (PA_OUTPRIMCOUNT + 1) +#define PA_TRIVIALREJCOUNT (PA_DEPTHCLIPCOUNT + 1) +#define PA_CULLCOUNT (PA_TRIVIALREJCOUNT + 1) +#define PA_NONIDLESTARVECOUNT (PA_CULLCOUNT + 1) +#define PA_STARVELCOUNT (PA_NONIDLESTARVECOUNT + 1) +#define PA_STALLCOUNT (PA_STARVELCOUNT + 1) +#define PA_PROCESSCOUNT (PA_STALLCOUNT + 1) + +#define SE_TRIANGLECOUNT 1 +#define SE_LINECOUNT (SE_TRIANGLECOUNT + 1) +#define SE_STARVECOUNT (SE_LINECOUNT + 1) +#define SE_STALLCOUNT (SE_STARVECOUNT + 1) +#define SE_RECEIVETRIANGLECOUNT (SE_STALLCOUNT + 1) +#define SE_SENDTRIANGLECOUNT (SE_RECEIVETRIANGLECOUNT + 1) +#define SE_RECEIVELINESCOUNT (SE_SENDTRIANGLECOUNT + 1) +#define SE_SENDLINESCOUNT (SE_RECEIVELINESCOUNT + 1) +#define SE_NONIDLESTARVECOUNT (SE_SENDLINESCOUNT + 1) +#define SE_PROCESSCOUNT (SE_NONIDLESTARVECOUNT + 1) + +#define RA_VALIDPIXCOUNT 1 +#define RA_TOTALQUADCOUNT (RA_VALIDPIXCOUNT + 1) +#define RA_VALIDQUADCOUNTEZ (RA_TOTALQUADCOUNT + 1) +#define RA_TOTALPRIMCOUNT (RA_VALIDQUADCOUNTEZ + 1) +#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT + 1) +#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1) +#define RA_EEZCULLCOUNT (RA_PREFCACHEMISSCOUNT + 1) +#define RA_NONIDLESTARVECOUNT (RA_EEZCULLCOUNT + 1) +#define RA_STARVELCOUNT (RA_NONIDLESTARVECOUNT + 1) +#define RA_STALLCOUNT (RA_STARVELCOUNT + 1) +#define RA_PROCESSCOUNT (RA_STALLCOUNT + 1) + +#define TX_TOTBILINEARREQ 1 +#define TX_TOTTRILINEARREQ (TX_TOTBILINEARREQ + 1) +#define TX_TOTDISCARDTEXREQ (TX_TOTTRILINEARREQ + 1) +#define TX_TOTTEXREQ (TX_TOTDISCARDTEXREQ + 1) +#define TX_MEMREADCOUNT (TX_TOTTEXREQ + 1) +#define TX_MEMREADIN8BCOUNT (TX_MEMREADCOUNT + 1) +#define TX_CACHEMISSCOUNT (TX_MEMREADIN8BCOUNT + 1) +#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT + 1) +#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1) +#define TX_NONIDLESTARVECOUNT (TX_CACHEMISSTEXELCOUNT+ 1) +#define TX_STARVELCOUNT (TX_NONIDLESTARVECOUNT + 1) +#define TX_STALLCOUNT (TX_STARVELCOUNT + 1) +#define TX_PROCESSCOUNT (TX_STALLCOUNT + 1) + +#define PE_KILLEDBYCOLOR 1 +#define PE_KILLEDBYDEPTH (PE_KILLEDBYCOLOR + 1) +#define PE_DRAWNBYCOLOR (PE_KILLEDBYDEPTH + 1) +#define PE_DRAWNBYDEPTH (PE_DRAWNBYCOLOR + 1) + +#define MC_READREQ8BPIPE 1 +#define MC_READREQ8BIP (MC_READREQ8BPIPE + 1) +#define MC_WRITEREQ8BPIPE (MC_READREQ8BIP + 1) +#define MC_AXIMINLATENCY (MC_WRITEREQ8BPIPE + 1) +#define MC_AXIMAXLATENCY (MC_AXIMINLATENCY + 1) +#define MC_AXITOTALLATENCY (MC_AXIMAXLATENCY + 1) +#define MC_AXISAMPLECOUNT (MC_AXITOTALLATENCY + 1) + +#define AXI_READREQSTALLED 1 +#define AXI_WRITEREQSTALLED (AXI_READREQSTALLED + 1) +#define AXI_WRITEDATASTALLED (AXI_WRITEREQSTALLED + 1) + +#define FE_DRAWCOUNT 1 +#define FE_OUTVERTEXCOUNT (FE_DRAWCOUNT + 1) +#define FE_STALLCOUNT (FE_OUTVERTEXCOUNT + 1) +#define FE_STARVECOUNT (FE_STALLCOUNT + 1) + +#define PVS_INSTRCOUNT 1 +#define PVS_ALUINSTRCOUNT (PVS_INSTRCOUNT + 1) +#define PVS_TEXINSTRCOUNT (PVS_ALUINSTRCOUNT + 1) +#define PVS_ATTRIBCOUNT (PVS_TEXINSTRCOUNT + 1) +#define PVS_UNIFORMCOUNT (PVS_ATTRIBCOUNT + 1) +#define PVS_FUNCTIONCOUNT (PVS_UNIFORMCOUNT + 1) +#define PVS_SOURCE (PVS_FUNCTIONCOUNT + 1) + +#define PPS_INSTRCOUNT 1 +#define PPS_ALUINSTRCOUNT (PPS_INSTRCOUNT + 1) +#define PPS_TEXINSTRCOUNT (PPS_ALUINSTRCOUNT + 1) +#define PPS_ATTRIBCOUNT (PPS_TEXINSTRCOUNT + 1) +#define PPS_UNIFORMCOUNT (PPS_ATTRIBCOUNT + 1) +#define PPS_FUNCTIONCOUNT (PPS_UNIFORMCOUNT + 1) +#define PPS_SOURCE (PPS_FUNCTIONCOUNT + 1) +/* End of MISC Counter IDs. */ + + +/* Category Constants. */ +#define VPHEADER 0x010000 +#define VPG_INFO 0x020000 +#define VPG_TIME 0x030000 +#define VPG_MEM 0x040000 +#define VPG_ES11 0x050000 +#define VPG_ES30 0x060000 +#define VPG_VG11 0x070000 +#define VPG_HAL 0x080000 +#define VPG_HW 0x090000 +#define VPG_GPU 0x0a0000 +#define VPG_VS 0x0b0000 +#define VPG_PS 0x0c0000 +#define VPG_PA 0x0d0000 +#define VPG_SETUP 0x0e0000 +#define VPG_RA 0x0f0000 +#define VPG_TX 0x100000 +#define VPG_PE 0x110000 +#define VPG_MC 0x120000 +#define VPG_AXI 0x130000 +#define VPG_PROG 0x140000 +#define VPG_PVS 0x150000 +#define VPG_PPS 0x160000 +#define VPG_ES11_TIME 0x170000 +#define VPG_ES30_TIME 0x180000 +#define VPG_FRAME 0x190000 +#define VPG_ES11_DRAW 0x200000 +#define VPG_ES30_DRAW 0x210000 +#define VPG_VG11_TIME 0x220000 +#define VPG_FE 0x230000 +#define VPG_MULTI_GPU 0x240000 +#define VPNG_FE 0x250000 +#define VPNG_VS 0x260000 +#define VPNG_PS 0x270000 +#define VPNG_PA 0x280000 +#define VPNG_SETUP 0x290000 +#define VPNG_RA 0x2a0000 +#define VPNG_TX 0x2b0000 +#define VPNG_PE 0x2c0000 +#define VPNG_MCC 0x2d0000 +#define VPNG_MCZ 0x2e0000 +#define VPNG_HI 0x2f0000 +#define VPNG_L2 0x300000 +#define VPG_FINISH 0x310000 +#define VPG_END 0xff0000 + +/* Info. */ +#define VPC_INFOCOMPANY (VPG_INFO + 1) +#define VPC_INFOVERSION (VPC_INFOCOMPANY + 1) +#define VPC_INFORENDERER (VPC_INFOVERSION + 1) +#define VPC_INFOREVISION (VPC_INFORENDERER + 1) +#define VPC_INFODRIVER (VPC_INFOREVISION + 1) +#define VPC_INFODRIVERMODE (VPC_INFODRIVER + 1) +#define VPC_INFOSCREENSIZE (VPC_INFODRIVERMODE + 1) + +/* Counter Constants. */ +#define VPC_ELAPSETIME (VPG_TIME + 1) +#define VPC_CPUTIME (VPC_ELAPSETIME + 1) + +#define VPC_MEMMAXRES (VPG_MEM + 1) +#define VPC_MEMSHARED (VPC_MEMMAXRES + 1) +#define VPC_MEMUNSHAREDDATA (VPC_MEMSHARED + 1) +#define VPC_MEMUNSHAREDSTACK (VPC_MEMUNSHAREDDATA + 1) + +/* OpenGL ES11 Statics Counter IDs. */ +#define VPC_ES11CALLS (VPG_ES11 + ES11_CALLS) +#define VPC_ES11DRAWCALLS (VPG_ES11 + ES11_DRAWCALLS) +#define VPC_ES11STATECHANGECALLS (VPG_ES11 + ES11_STATECHANGECALLS) +#define VPC_ES11POINTCOUNT (VPG_ES11 + ES11_POINTCOUNT) +#define VPC_ES11LINECOUNT (VPG_ES11 + ES11_LINECOUNT) +#define VPC_ES11TRIANGLECOUNT (VPG_ES11 + ES11_TRIANGLECOUNT) + +/* OpenGL ES30 Statistics Counter IDs. */ +#define VPC_ES30CALLS (VPG_ES30 + ES30_CALLS) +#define VPC_ES30DRAWCALLS (VPG_ES30 + ES30_DRAWCALLS) +#define VPC_ES30STATECHANGECALLS (VPG_ES30 + ES30_STATECHANGECALLS) +#define VPC_ES30POINTCOUNT (VPG_ES30 + ES30_POINTCOUNT) +#define VPC_ES30LINECOUNT (VPG_ES30 + ES30_LINECOUNT) +#define VPC_ES30TRIANGLECOUNT (VPG_ES30 + ES30_TRIANGLECOUNT) + +/* OpenVG Statistics Counter IDs. */ +#define VPC_VG11CALLS (VPG_VG11 + VG11_CALLS) +#define VPC_VG11DRAWCALLS (VPG_VG11 + VG11_DRAWCALLS) +#define VPC_VG11STATECHANGECALLS (VPG_VG11 + VG11_STATECHANGECALLS) +#define VPC_VG11FILLCOUNT (VPG_VG11 + VG11_FILLCOUNT) +#define VPC_VG11STROKECOUNT (VPG_VG11 + VG11_STROKECOUNT) + +/* HAL Counters. */ +#define VPC_HALVERTBUFNEWBYTEALLOC (VPG_HAL + HAL_VERTBUFNEWBYTEALLOC) +#define VPC_HALVERTBUFTOTALBYTEALLOC (VPG_HAL + HAL_VERTBUFTOTALBYTEALLOC) +#define VPC_HALVERTBUFNEWOBJALLOC (VPG_HAL + HAL_VERTBUFNEWOBJALLOC) +#define VPC_HALVERTBUFTOTALOBJALLOC (VPG_HAL + HAL_VERTBUFTOTALOBJALLOC) +#define VPC_HALINDBUFNEWBYTEALLOC (VPG_HAL + HAL_INDBUFNEWBYTEALLOC) +#define VPC_HALINDBUFTOTALBYTEALLOC (VPG_HAL + HAL_INDBUFTOTALBYTEALLOC) +#define VPC_HALINDBUFNEWOBJALLOC (VPG_HAL + HAL_INDBUFNEWOBJALLOC) +#define VPC_HALINDBUFTOTALOBJALLOC (VPG_HAL + HAL_INDBUFTOTALOBJALLOC) +#define VPC_HALTEXBUFNEWBYTEALLOC (VPG_HAL + HAL_TEXBUFNEWBYTEALLOC) +#define VPC_HALTEXBUFTOTALBYTEALLOC (VPG_HAL + HAL_TEXBUFTOTALBYTEALLOC) +#define VPC_HALTEXBUFNEWOBJALLOC (VPG_HAL + HAL_TEXBUFNEWOBJALLOC) +#define VPC_HALTEXBUFTOTALOBJALLOC (VPG_HAL + HAL_TEXBUFTOTALOBJALLOC) + +/* HW: GPU Counters. */ +#define VPC_GPUCYCLES (VPG_GPU + GPU_CYCLES) +#define VPC_GPUREAD64BYTE (VPG_GPU + GPU_READ64BYTE) +#define VPC_GPUWRITE64BYTE (VPG_GPU + GPU_WRITE64BYTE) +#define VPC_GPUTOTALCYCLES (VPG_GPU + GPU_TOTALCYCLES) +#define VPC_GPUIDLECYCLES (VPG_GPU + GPU_IDLECYCLES) + +/* HW: Shader Counters. */ +#define VPC_VSINSTCOUNT (VPG_VS + VS_INSTCOUNT) +#define VPC_VSBRANCHINSTCOUNT (VPG_VS + VS_BRANCHINSTCOUNT) +#define VPC_VSTEXLDINSTCOUNT (VPG_VS + VS_TEXLDINSTCOUNT) +#define VPC_VSRENDEREDVERTCOUNT (VPG_VS + VS_RENDEREDVERTCOUNT) +#define VPC_VSNONIDLESTARVECOUNT (VPG_VS + VS_NONIDLESTARVECOUNT) +#define VPC_VSSTARVELCOUNT (VPG_VS + VS_STARVELCOUNT) +#define VPC_VSSTALLCOUNT (VPG_VS + VS_STALLCOUNT) +#define VPC_VSPROCESSCOUNT (VPG_VS + VS_PROCESSCOUNT) +/* HW: PS Count. */ +#define VPC_PSINSTCOUNT (VPG_PS + PS_INSTCOUNT) +#define VPC_PSBRANCHINSTCOUNT (VPG_PS + PS_BRANCHINSTCOUNT) +#define VPC_PSTEXLDINSTCOUNT (VPG_PS + PS_TEXLDINSTCOUNT) +#define VPC_PSRENDEREDPIXCOUNT (VPG_PS + PS_RENDEREDPIXCOUNT) +#define VPC_PSNONIDLESTARVECOUNT (VPG_PS + PS_NONIDLESTARVECOUNT) +#define VPC_PSSTARVELCOUNT (VPG_PS + PS_STARVELCOUNT) +#define VPC_PSSTALLCOUNT (VPG_PS + PS_STALLCOUNT) +#define VPC_PSPROCESSCOUNT (VPG_PS + PS_PROCESSCOUNT) +#define VPC_PSSHADERCYCLECOUNT (VPG_PS + PS_SHADERCYCLECOUNT) + +/* HW: PA Counters. */ +#define VPC_PAINVERTCOUNT (VPG_PA + PA_INVERTCOUNT) +#define VPC_PAINPRIMCOUNT (VPG_PA + PA_INPRIMCOUNT) +#define VPC_PAOUTPRIMCOUNT (VPG_PA + PA_OUTPRIMCOUNT) +#define VPC_PADEPTHCLIPCOUNT (VPG_PA + PA_DEPTHCLIPCOUNT) +#define VPC_PATRIVIALREJCOUNT (VPG_PA + PA_TRIVIALREJCOUNT) +#define VPC_PACULLCOUNT (VPG_PA + PA_CULLCOUNT) +#define VPC_PANONIDLESTARVECOUNT (VPG_PA + PA_NONIDLESTARVECOUNT) +#define VPC_PASTARVELCOUNT (VPG_PA + PA_STARVELCOUNT) +#define VPC_PASTALLCOUNT (VPG_PA + PA_STALLCOUNT) +#define VPC_PAPROCESSCOUNT (VPG_PA + PA_PROCESSCOUNT) + +/* HW: Setup Counters. */ +#define VPC_SETRIANGLECOUNT (VPG_SETUP + SE_TRIANGLECOUNT) +#define VPC_SELINECOUNT (VPG_SETUP + SE_LINECOUNT) +#define VPC_SESTARVECOUNT (VPG_SETUP + SE_STARVECOUNT) +#define VPC_SESTALLCOUNT (VPG_SETUP + SE_STALLCOUNT) +#define VPC_SERECEIVETRIANGLECOUNT (VPG_SETUP + SE_RECEIVETRIANGLECOUNT) +#define VPC_SESENDTRIANGLECOUNT (VPG_SETUP + SE_SENDTRIANGLECOUNT) +#define VPC_SERECEIVELINESCOUNT (VPG_SETUP + SE_RECEIVELINESCOUNT) +#define VPC_SESENDLINESCOUNT (VPG_SETUP + SE_SENDLINESCOUNT) +#define VPC_SENONIDLESTARVECOUNT (VPG_SETUP + SE_NONIDLESTARVECOUNT) +#define VPC_SEPROCESSCOUNT (VPG_SETUP + SE_PROCESSCOUNT) + +/* HW: RA Counters. */ +#define VPC_RAVALIDPIXCOUNT (VPG_RA + RA_VALIDPIXCOUNT) +#define VPC_RATOTALQUADCOUNT (VPG_RA + RA_TOTALQUADCOUNT) +#define VPC_RAVALIDQUADCOUNTEZ (VPG_RA + RA_VALIDQUADCOUNTEZ) +#define VPC_RATOTALPRIMCOUNT (VPG_RA + RA_TOTALPRIMCOUNT) +#define VPC_RAPIPECACHEMISSCOUNT (VPG_RA + RA_PIPECACHEMISSCOUNT) +#define VPC_RAPREFCACHEMISSCOUNT (VPG_RA + RA_PREFCACHEMISSCOUNT) +#define VPC_RAEEZCULLCOUNT (VPG_RA + RA_EEZCULLCOUNT) +#define VPC_RANONIDLESTARVECOUNT (VPG_RA + RA_NONIDLESTARVECOUNT) +#define VPC_RASTARVELCOUNT (VPG_RA + RA_STARVELCOUNT) +#define VPC_RASTALLCOUNT (VPG_RA + RA_STALLCOUNT) +#define VPC_RAPROCESSCOUNT (VPG_RA + RA_PROCESSCOUNT) + +/* HW: TEX Counters. */ +#define VPC_TXTOTBILINEARREQ (VPG_TX + TX_TOTBILINEARREQ) +#define VPC_TXTOTTRILINEARREQ (VPG_TX + TX_TOTTRILINEARREQ) +#define VPC_TXTOTDISCARDTEXREQ (VPG_TX + TX_TOTDISCARDTEXREQ) +#define VPC_TXTOTTEXREQ (VPG_TX + TX_TOTTEXREQ) +#define VPC_TXMEMREADCOUNT (VPG_TX + TX_MEMREADCOUNT) +#define VPC_TXMEMREADIN8BCOUNT (VPG_TX + TX_MEMREADIN8BCOUNT) +#define VPC_TXCACHEMISSCOUNT (VPG_TX + TX_CACHEMISSCOUNT) +#define VPC_TXCACHEHITTEXELCOUNT (VPG_TX + TX_CACHEHITTEXELCOUNT) +#define VPC_TXCACHEMISSTEXELCOUNT (VPG_TX + TX_CACHEMISSTEXELCOUNT) +#define VPC_TXNONIDLESTARVECOUNT (VPG_TX + TX_NONIDLESTARVECOUNT) +#define VPC_TXSTARVELCOUNT (VPG_TX + TX_STARVELCOUNT) +#define VPC_TXSTALLCOUNT (VPG_TX + TX_STALLCOUNT) +#define VPC_TXPROCESSCOUNT (VPG_TX + TX_PROCESSCOUNT) + +/* HW: PE Counters. */ +#define VPC_PEKILLEDBYCOLOR (VPG_PE + PE_KILLEDBYCOLOR) +#define VPC_PEKILLEDBYDEPTH (VPG_PE + PE_KILLEDBYDEPTH) +#define VPC_PEDRAWNBYCOLOR (VPG_PE + PE_DRAWNBYCOLOR) +#define VPC_PEDRAWNBYDEPTH (VPG_PE + PE_DRAWNBYDEPTH) + +/* HW: MC Counters. */ +#define VPC_MCREADREQ8BPIPE (VPG_MC + MC_READREQ8BPIPE) +#define VPC_MCREADREQ8BIP (VPG_MC + MC_READREQ8BIP) +#define VPC_MCWRITEREQ8BPIPE (VPG_MC + MC_WRITEREQ8BPIPE) +#define VPC_MCAXIMINLATENCY (VPG_MC + MC_AXIMINLATENCY) +#define VPC_MCAXIMAXLATENCY (VPG_MC + MC_AXIMAXLATENCY) +#define VPC_MCAXITOTALLATENCY (VPG_MC + MC_AXITOTALLATENCY) +#define VPC_MCAXISAMPLECOUNT (VPG_MC + MC_AXISAMPLECOUNT) + +/* HW: AXI Counters. */ +#define VPC_AXIREADREQSTALLED (VPG_AXI + AXI_READREQSTALLED) +#define VPC_AXIWRITEREQSTALLED (VPG_AXI + AXI_WRITEREQSTALLED) +#define VPC_AXIWRITEDATASTALLED (VPG_AXI + AXI_WRITEDATASTALLED) + +/* HW: FE Counters. */ +#define VPC_FEDRAWCOUNT (VPG_FE + FE_DRAWCOUNT) +#define VPC_FEOUTVERTEXCOUNT (VPG_FE + FE_OUTVERTEXCOUNT) +#define VPC_FESTALLCOUNT (VPG_FE + FE_STALLCOUNT) +#define VPC_FESTARVECOUNT (VPG_FE + FE_STARVECOUNT) + +/* HW: Shader Counters. */ +#define VPNC_VSINSTCOUNT (VPNG_VS + 1) +#define VPNC_VSBRANCHINSTCOUNT (VPNG_VS + 2) +#define VPNC_VSTEXLDINSTCOUNT (VPNG_VS + 3) +#define VPNC_VSRENDEREDVERTCOUNT (VPNG_VS + 4) +#define VPNC_VSNONIDLESTARVECOUNT (VPNG_VS + 5) +#define VPNC_VSSTARVELCOUNT (VPNG_VS + 6) +#define VPNC_VSSTALLCOUNT (VPNG_VS + 7) +#define VPNC_VSPROCESSCOUNT (VPNG_VS + 8) +#define VPNC_VSSHADERCYCLECOUNT (VPNG_VS + 9) +#define VPNC_VS_COUNT VPNC_VSSHADERCYCLECOUNT - VPNG_VS + +/* HW: PS Count. */ +#define VPNC_PSINSTCOUNT (VPNG_PS + 1) +#define VPNC_PSBRANCHINSTCOUNT (VPNG_PS + 2) +#define VPNC_PSTEXLDINSTCOUNT (VPNG_PS + 3) +#define VPNC_PSRENDEREDPIXCOUNT (VPNG_PS + 4) +#define VPNC_PSNONIDLESTARVECOUNT (VPNG_PS + 5) +#define VPNC_PSSTARVELCOUNT (VPNG_PS + 6) +#define VPNC_PSSTALLCOUNT (VPNG_PS + 7) +#define VPNC_PSPROCESSCOUNT (VPNG_PS + 8) +#define VPNC_PSSHADERCYCLECOUNT (VPNG_PS + 9) +#define VPNC_PS_COUNT VPNC_PSSHADERCYCLECOUNT - VPNG_PS + +/* HW: PA Counters. */ +#define VPNC_PAINVERTCOUNT (VPNG_PA + 1) +#define VPNC_PAINPRIMCOUNT (VPNG_PA + 2) +#define VPNC_PAOUTPRIMCOUNT (VPNG_PA + 3) +#define VPNC_PADEPTHCLIPCOUNT (VPNG_PA + 4) +#define VPNC_PATRIVIALREJCOUNT (VPNG_PA + 5) +#define VPNC_PACULLPRIMCOUNT (VPNG_PA + 6) +#define VPNC_PADROPPRIMCOUNT (VPNG_PA + 7) +#define VPNC_PAFRCLIPPRIMCOUNT (VPNG_PA + 8) +#define VPNC_PAFRCLIPDROPPRIMCOUNT (VPNG_PA + 9) +#define VPNC_PANONIDLESTARVECOUNT (VPNG_PA + 10) +#define VPNC_PASTARVELCOUNT (VPNG_PA + 11) +#define VPNC_PASTALLCOUNT (VPNG_PA + 12) +#define VPNC_PAPROCESSCOUNT (VPNG_PA + 13) +#define VPNC_PA_COUNT VPNC_PAPROCESSCOUNT - VPNG_PA + +/* HW: Setup Counters. */ +#define VPNC_SECULLTRIANGLECOUNT (VPNG_SETUP + 1) +#define VPNC_SECULLLINECOUNT (VPNG_SETUP + 2) +#define VPNC_SECLIPTRIANGLECOUNT (VPNG_SETUP + 3) +#define VPNC_SECLIPLINECOUNT (VPNG_SETUP + 4) +#define VPNC_SESTARVECOUNT (VPNG_SETUP + 5) +#define VPNC_SESTALLCOUNT (VPNG_SETUP + 6) +#define VPNC_SERECEIVETRIANGLECOUNT (VPNG_SETUP + 7) +#define VPNC_SESENDTRIANGLECOUNT (VPNG_SETUP + 8) +#define VPNC_SERECEIVELINESCOUNT (VPNG_SETUP + 9) +#define VPNC_SESENDLINESCOUNT (VPNG_SETUP + 10) +#define VPNC_SENONIDLESTARVECOUNT (VPNG_SETUP + 11) +#define VPNC_SETRIVIALREJLINECOUNT (VPNG_SETUP + 12) +#define VPNC_SEPROCESSCOUNT (VPNG_SETUP + 13) +#define VPNC_SE_COUNT VPNC_SEPROCESSCOUNT - VPNG_SETUP + +/* HW: RA Counters. */ +#define VPNC_RAVALIDPIXCOUNT (VPNG_RA + 1) +#define VPNC_RATOTALQUADCOUNT (VPNG_RA + 2) +#define VPNC_RAVALIDQUADCOUNTEZ (VPNG_RA + 3) +#define VPNC_RAINPUTPRIMCOUNT (VPNG_RA + 4) +#define VPNC_RAPIPECACHEMISSCOUNT (VPNG_RA + 5) +#define VPNC_RAPREFCACHEMISSCOUNT (VPNG_RA + 6) +#define VPNC_RAPIPEHZCACHEMISSCOUNT (VPNG_RA + 7) +#define VPNC_RAPREFHZCACHEMISSCOUNT (VPNG_RA + 8) +#define VPNC_RAOUTPUTQUADCOUNT (VPNG_RA + 9) +#define VPNC_RAOUTPUTPIXELCOUNT (VPNG_RA + 10) +#define VPNC_RAEEZCULLCOUNT (VPNG_RA + 11) +#define VPNC_RANONIDLESTARVECOUNT (VPNG_RA + 12) +#define VPNC_RASTARVELCOUNT (VPNG_RA + 13) +#define VPNC_RASTALLCOUNT (VPNG_RA + 14) +#define VPNC_RAPROCESSCOUNT (VPNG_RA + 15) +#define VPNC_RA_COUNT VPNC_RAPROCESSCOUNT - VPNG_RA + +/* HW: TEX Counters. */ +#define VPNC_TXTOTBILINEARREQ (VPNG_TX + 1) +#define VPNC_TXTOTTRILINEARREQ (VPNG_TX + 2) +#define VPNC_TXTOTDISCARDTEXREQ (VPNG_TX + 3) +#define VPNC_TXTOTTEXREQ (VPNG_TX + 4) +#define VPNC_TXMC0MISSCOUNT (VPNG_TX + 5) +#define VPNC_TXMC0REQCOUNT (VPNG_TX + 6) +#define VPNC_TXMC1MISSCOUNT (VPNG_TX + 7) +#define VPNC_TXMC1REQCOUNT (VPNG_TX + 8) +#define VPNC_TX_COUNT VPNC_TXMC1REQCOUNT - VPNG_TX + +/* HW: PE Counters. */ +#define VPNC_PE0KILLEDBYCOLOR (VPNG_PE + 1) +#define VPNC_PE0KILLEDBYDEPTH (VPNG_PE + 2) +#define VPNC_PE0DRAWNBYCOLOR (VPNG_PE + 3) +#define VPNC_PE0DRAWNBYDEPTH (VPNG_PE + 4) +#define VPNC_PE1KILLEDBYCOLOR (VPNG_PE + 5) +#define VPNC_PE1KILLEDBYDEPTH (VPNG_PE + 6) +#define VPNC_PE1DRAWNBYCOLOR (VPNG_PE + 7) +#define VPNC_PE1DRAWNBYDEPTH (VPNG_PE + 8) +#define VPNC_PE_COUNT VPNC_PE1DRAWNBYDEPTH - VPNG_PE + +/* HW: MCC Counters. */ +#define VPNC_MCCREADREQ8BCOLORPIPE (VPNG_MCC + 1) +#define VPNC_MCCREADREQ8BSOCOLORPIPE (VPNG_MCC + 2) +#define VPNC_MCCWRITEREQ8BCOLORPIPE (VPNG_MCC + 3) +#define VPNC_MCCREADREQSOCOLORPIPE (VPNG_MCC + 4) +#define VPNC_MCCWRITEREQCOLORPIPE (VPNG_MCC + 5) +#define VPNC_MCCREADREQ8BDEPTHPIPE (VPNG_MCC + 6) +#define VPNC_MCCREADREQ8BSFDEPTHPIPE (VPNG_MCC + 7) +#define VPNC_MCCWRITEREQ8BDEPTHPIPE (VPNG_MCC + 8) +#define VPNC_MCCREADREQSFDEPTHPIPE (VPNG_MCC + 9) +#define VPNC_MCCWRITEREQDEPTHPIPE (VPNG_MCC + 10) +#define VPNC_MCCREADREQ8BOTHERPIPE (VPNG_MCC + 11) +#define VPNC_MCCWRITEREQ8BOTHERPIPE (VPNG_MCC + 12) +#define VPNC_MCCREADREQOTHERPIPE (VPNG_MCC + 13) +#define VPNC_MCCWRITEREQOTHERPIPE (VPNG_MCC + 14) +#define VPNC_MCCAXIMINLATENCY (VPNG_MCC + 15) +#define VPNC_MCCAXIMAXLATENCY (VPNG_MCC + 16) +#define VPNC_MCCAXITOTALLATENCY (VPNG_MCC + 17) +#define VPNC_MCCAXISAMPLECOUNT (VPNG_MCC + 18) +#define VPNC_MCCFEREADBANDWIDTH (VPNG_MCC + 19) +#define VPNC_MCCMMUREADBANDWIDTH (VPNG_MCC + 20) +#define VPNC_MCCBLTREADBANDWIDTH (VPNG_MCC + 21) +#define VPNC_MCCSH0READBANDWIDTH (VPNG_MCC + 22) +#define VPNC_MCCSH1READBANDWIDTH (VPNG_MCC + 23) +#define VPNC_MCCPEWRITEBANDWIDTH (VPNG_MCC + 24) +#define VPNC_MCCBLTWRITEBANDWIDTH (VPNG_MCC + 25) +#define VPNC_MCCSH0WRITEBANDWIDTH (VPNG_MCC + 26) +#define VPNC_MCCSH1WRITEBANDWIDTH (VPNG_MCC + 27) +#define VPNC_MCC_COUNT VPNC_MCCSH1WRITEBANDWIDTH - VPNG_MCC + +/* HW: MCZ Counters. */ +#define VPNC_MCZREADREQ8BCOLORPIPE (VPNG_MCZ + 1) +#define VPNC_MCZREADREQ8BSOCOLORPIPE (VPNG_MCZ + 2) +#define VPNC_MCZWRITEREQ8BCOLORPIPE (VPNG_MCZ + 3) +#define VPNC_MCZREADREQSOCOLORPIPE (VPNG_MCZ + 4) +#define VPNC_MCZWRITEREQCOLORPIPE (VPNG_MCZ + 5) +#define VPNC_MCZREADREQ8BDEPTHPIPE (VPNG_MCZ + 6) +#define VPNC_MCZREADREQ8BSFDEPTHPIPE (VPNG_MCZ + 7) +#define VPNC_MCZWRITEREQ8BDEPTHPIPE (VPNG_MCZ + 8) +#define VPNC_MCZREADREQSFDEPTHPIPE (VPNG_MCZ + 9) +#define VPNC_MCZWRITEREQDEPTHPIPE (VPNG_MCZ + 10) +#define VPNC_MCZREADREQ8BOTHERPIPE (VPNG_MCZ + 11) +#define VPNC_MCZWRITEREQ8BOTHERPIPE (VPNG_MCZ + 12) +#define VPNC_MCZREADREQOTHERPIPE (VPNG_MCZ + 13) +#define VPNC_MCZWRITEREQOTHERPIPE (VPNG_MCZ + 14) +#define VPNC_MCZAXIMINLATENCY (VPNG_MCZ + 15) +#define VPNC_MCZAXIMAXLATENCY (VPNG_MCZ + 16) +#define VPNC_MCZAXITOTALLATENCY (VPNG_MCZ + 17) +#define VPNC_MCZAXISAMPLECOUNT (VPNG_MCZ + 18) +#define VPNC_MCZ_COUNT VPNC_MCZAXISAMPLECOUNT - VPNG_MCZ + +/* HW: HI Counters. */ +#define VPNC_HI0READ8BYTE (VPNG_HI + 1) +#define VPNC_HI0WRITE8BYTE (VPNG_HI + 2) +#define VPNC_HI0READREQ (VPNG_HI + 3) +#define VPNC_HI0WRITEREQ (VPNG_HI + 4) +#define VPNC_HI0AXIREADREQSTALL (VPNG_HI + 5) +#define VPNC_HI0AXIWRITEREQSTALL (VPNG_HI + 6) +#define VPNC_HI0AXIWRITEDATASTALL (VPNG_HI + 7) +#define VPNC_HI1READ8BYTE (VPNG_HI + 8) +#define VPNC_HI1WRITE8BYTE (VPNG_HI + 9) +#define VPNC_HI1READREQ (VPNG_HI + 10) +#define VPNC_HI1WRITEREQ (VPNG_HI + 11) +#define VPNC_HI1AXIREADREQSTALL (VPNG_HI + 12) +#define VPNC_HI1AXIWRITEREQSTALL (VPNG_HI + 13) +#define VPNC_HI1AXIWRITEDATASTALL (VPNG_HI + 14) +#define VPNC_HITOTALCYCLES (VPNG_HI + 15) +#define VPNC_HIIDLECYCLES (VPNG_HI + 16) +#define VPNC_HIREAD8BYTE (VPNG_HI + 17) +#define VPNC_HIWRITE8BYTE (VPNG_HI + 18) +#define VPNC_HIOCBREAD16BYTE (VPNG_HI + 19) +#define VPNC_HIOCBWRITE16BYTE (VPNG_HI + 20) +#define VPNC_HI_COUNT VPNC_HIOCBWRITE16BYTE - VPNG_HI + +/* HW: L2 Counters. */ +#define VPNC_L2AXI0READREQCOUNT (VPNG_L2 + 1) +#define VPNC_L2AXI1READREQCOUNT (VPNG_L2 + 2) +#define VPNC_L2AXI0WRITEREQCOUNT (VPNG_L2 + 3) +#define VPNC_L2AXI1WRITEREQCOUNT (VPNG_L2 + 4) +#define VPNC_L2READTRANSREQBYAXI0 (VPNG_L2 + 5) +#define VPNC_L2READTRANSREQBYAXI1 (VPNG_L2 + 6) +#define VPNC_L2WRITETRANSREQBYAXI0 (VPNG_L2 + 7) +#define VPNC_L2WRITETRANSREQBYAXI1 (VPNG_L2 + 8) +#define VPNC_L2AXI0MINLATENCY (VPNG_L2 + 9) +#define VPNC_L2AXI0MAXLATENCY (VPNG_L2 + 10) +#define VPNC_L2AXI0TOTLATENCY (VPNG_L2 + 11) +#define VPNC_L2AXI0TOTREQCOUNT (VPNG_L2 + 12) +#define VPNC_L2AXI1MINLATENCY (VPNG_L2 + 13) +#define VPNC_L2AXI1MAXLATENCY (VPNG_L2 + 14) +#define VPNC_L2AXI1TOTLATENCY (VPNG_L2 + 15) +#define VPNC_L2AXI1TOTREQCOUNT (VPNG_L2 + 16) +#define VPNC_L2_COUNT VPNC_L2AXI1TOTREQCOUNT - VPNG_L2 + +/* HW: FE Counters. */ +#define VPNC_FEDRAWCOUNT (VPNG_FE + 1) +#define VPNC_FEOUTVERTEXCOUNT (VPNG_FE + 2) +#define VPNC_FECACHEMISSCOUNT (VPNG_FE + 3) +#define VPNC_FECACHELKCOUNT (VPNG_FE + 4) +#define VPNC_FESTALLCOUNT (VPNG_FE + 5) +#define VPNC_FESTARVECOUNT (VPNG_FE + 6) +#define VPNC_FEPROCESSCOUNT (VPNG_FE + 7) +#define VPNC_FE_COUNT VPNC_FEPROCESSCOUNT - VPNG_FE + +#define TOTAL_COUNTER_NUMBER (VPNC_FE_COUNT + VPNC_VS_COUNT + VPNC_PA_COUNT + VPNC_SE_COUNT + VPNC_RA_COUNT \ + + VPNC_PS_COUNT + VPNC_TX_COUNT + VPNC_PE_COUNT + VPNC_MCC_COUNT + VPNC_MCZ_COUNT \ + + VPNC_HI_COUNT + VPNC_L2_COUNT) + +#define TOTAL_MODULE_NUMBER 12 + +/* PROGRAM: Shader program counters. */ +#define VPC_PVSINSTRCOUNT (VPG_PVS + PVS_INSTRCOUNT) +#define VPC_PVSALUINSTRCOUNT (VPG_PVS + PVS_ALUINSTRCOUNT) +#define VPC_PVSTEXINSTRCOUNT (VPG_PVS + PVS_TEXINSTRCOUNT) +#define VPC_PVSATTRIBCOUNT (VPG_PVS + PVS_ATTRIBCOUNT) +#define VPC_PVSUNIFORMCOUNT (VPG_PVS + PVS_UNIFORMCOUNT) +#define VPC_PVSFUNCTIONCOUNT (VPG_PVS + PVS_FUNCTIONCOUNT) +#define VPC_PVSSOURCE (VPG_PVS + PVS_SOURCE) + +#define VPC_PPSINSTRCOUNT (VPG_PPS + PPS_INSTRCOUNT) +#define VPC_PPSALUINSTRCOUNT (VPG_PPS + PPS_ALUINSTRCOUNT) +#define VPC_PPSTEXINSTRCOUNT (VPG_PPS + PPS_TEXINSTRCOUNT) +#define VPC_PPSATTRIBCOUNT (VPG_PPS + PPS_ATTRIBCOUNT) +#define VPC_PPSUNIFORMCOUNT (VPG_PPS + PPS_UNIFORMCOUNT) +#define VPC_PPSFUNCTIONCOUNT (VPG_PPS + PPS_FUNCTIONCOUNT) +#define VPC_PPSSOURCE (VPG_PPS + PPS_SOURCE) + +#define VPC_PROGRAMHANDLE (VPG_PROG + 1) + +#define VPC_ES30_DRAW_NO (VPG_ES30_DRAW + 1) +#define VPC_ES11_DRAW_NO (VPG_ES11_DRAW + 1) +#define VPC_ES30_GPU_NO (VPG_MULTI_GPU + 1) + + +#define MODULE_FRONT_END_COUNTER_NUM 0x5 +#define MODULE_VERTEX_SHADER_COUNTER_NUM 0x9 +#define MODULE_PRIMITIVE_ASSEMBLY_COUNTER_NUM 0xC +#define MODULE_SETUP_COUNTER_NUM 0xD +#define MODULE_RASTERIZER_COUNTER_NUM 0xE +#define MODULE_PIXEL_SHADER_COUNTER_NUM 0x9 +#define MODULE_TEXTURE_COUNTER_NUM 0x8 +#define MODULE_PIXEL_ENGINE_COUNTER_NUM 0x8 +#define MODULE_MEMORY_CONTROLLER_COLOR_COUNTER_NUM 0xC +#define MODULE_MEMORY_CONTROLLER_DEPTH_COUNTER_NUM 0xC +#define MODULE_HOST_INTERFACE0_COUNTER_NUM 0x9 +#define MODULE_HOST_INTERFACE1_COUNTER_NUM 0x7 +#define MODULE_GPUL2_CACHE_COUNTER_NUM 0xE +#define TOTAL_PROBE_NUMBER (MODULE_FRONT_END_COUNTER_NUM + MODULE_VERTEX_SHADER_COUNTER_NUM + MODULE_PRIMITIVE_ASSEMBLY_COUNTER_NUM \ + + MODULE_SETUP_COUNTER_NUM + MODULE_RASTERIZER_COUNTER_NUM + MODULE_PIXEL_SHADER_COUNTER_NUM \ + + MODULE_TEXTURE_COUNTER_NUM + MODULE_PIXEL_ENGINE_COUNTER_NUM + MODULE_MEMORY_CONTROLLER_COLOR_COUNTER_NUM \ + + MODULE_MEMORY_CONTROLLER_DEPTH_COUNTER_NUM + MODULE_HOST_INTERFACE0_COUNTER_NUM + MODULE_HOST_INTERFACE1_COUNTER_NUM \ + + MODULE_GPUL2_CACHE_COUNTER_NUM) + + +#ifdef ANDROID +#define DEFAULT_PROFILE_FILE_NAME "/sdcard/vprofiler.vpd" +#else +#define DEFAULT_PROFILE_FILE_NAME "vprofiler.vpd" +#endif + +#define VPHEADER_VERSION "VP20" + +#define VPFILETYPE_GL "10" + +#define VPFILETYPE_CL "00" + +#if gcdENDIAN_BIG +#define BIG_ENDIAN_TRANS_INT(x) ((gctUINT32)(\ + (((gctUINT32)(x) & (gctUINT32)0x000000FFUL) << 24) | \ + (((gctUINT32)(x) & (gctUINT32)0x0000FF00UL) << 8) | \ + (((gctUINT32)(x) & (gctUINT32)0x00FF0000UL) >> 8) | \ + (((gctUINT32)(x) & (gctUINT32)0xFF000000UL) >> 24))) +#else +#define BIG_ENDIAN_TRANS_INT(x) x +#endif + +/* Write a data value. */ +#define gcmWRITE_VALUE(IntData) \ + do \ + { \ + gceSTATUS status; \ + gctINT32 value = IntData; \ + value = BIG_ENDIAN_TRANS_INT(value); \ + gcmERR_BREAK(gcoPROFILER_Write(Profiler, gcmSIZEOF(value), &value)); \ + } \ + while (gcvFALSE) + +#define gcmWRITE_CONST(Const) \ + do \ + { \ + gceSTATUS status; \ + gctINT32 data = Const; \ + data = BIG_ENDIAN_TRANS_INT(data); \ + gcmERR_BREAK(gcoPROFILER_Write(Profiler, gcmSIZEOF(data), &data)); \ + } \ + while (gcvFALSE) + +#define gcmWRITE_COUNTER(Counter, Value) \ + gcmWRITE_CONST(Counter); \ + gcmWRITE_VALUE(Value) + +/* Write a data value. */ +#define gcmRECORD_VALUE(IntData) \ + do \ + { \ + gctINT32 value = IntData; \ + value = BIG_ENDIAN_TRANS_INT(value); \ + counterData[counterIndex++] = value; \ + } \ + while (gcvFALSE) + +#define gcmRECORD_CONST(Const) \ + do \ + { \ + gctINT32 data = Const; \ + data = BIG_ENDIAN_TRANS_INT(data); \ + counterData[counterIndex++] = data; \ + } \ + while (gcvFALSE) + +#define gcmRECORD_COUNTER(Counter, Value) \ + gcmRECORD_CONST(Counter); \ + gcmRECORD_VALUE(Value) + +/* Write a string value (char*). */ +#define gcmWRITE_STRING(String) \ + do \ + { \ + gceSTATUS status; \ + gctINT32 length; \ + length = (gctINT32) gcoOS_StrLen((gctSTRING)String, gcvNULL); \ + length = BIG_ENDIAN_TRANS_INT(length); \ + gcmERR_BREAK(gcoPROFILER_Write(Profiler, gcmSIZEOF(length), &length)); \ + gcmERR_BREAK(gcoPROFILER_Write(Profiler, length, String)); \ + } \ + while (gcvFALSE) + +#define gcmWRITE_BUFFER(Size, Buffer) \ + do \ + { \ + gceSTATUS status; \ + gcmERR_BREAK(gcoPROFILER_Write(Profiler, Size, Buffer)); \ + } \ + while (gcvFALSE) + + +#define gcmGET_COUNTER(counter, counterId) \ + do \ + { \ + if (*(memory + (counterId + offset) * (1 << clusterIDWidth)) == 0xdeaddead) \ + { \ + counter = 0xdeaddead; \ + } \ + else \ + { \ + gctUINT32 i; \ + gctUINT32_PTR Memory = memory; \ + counter = 0; \ + Memory = memory + TOTAL_PROBE_NUMBER * CoreId * (1 << clusterIDWidth); \ + for (i = 0; i < (gctUINT32)(1 << clusterIDWidth); i++) \ + { \ + counter += *(Memory + (counterId + offset) * (1 << clusterIDWidth) + i); \ + } \ + } \ + } \ + while (gcvFALSE) + +#define gcmGET_LATENCY_COUNTER(minLatency, maxLatency, counterId) \ + do \ + { \ + if (*(memory + (counterId + offset) * (1 << clusterIDWidth)) == 0xdeaddead) \ + { \ + minLatency = maxLatency = 0xdeaddead; \ + } \ + else \ + { \ + gctUINT32 i; \ + gctUINT32_PTR Memory = memory; \ + Memory = memory + TOTAL_PROBE_NUMBER * CoreId * (1 << clusterIDWidth); \ + for (i = 0; i < (gctUINT32)(1 << clusterIDWidth); i++) \ + { \ + maxLatency += ((*(Memory + (counterId + offset) * (1 << clusterIDWidth) + i) & 0xfff000) >> 12); \ + minLatency += (*(Memory + (counterId + offset) * (1 << clusterIDWidth) + i) & 0x000fff); \ + if (minLatency == 4095) \ + minLatency = 0; \ + } \ + } \ + } \ + while (gcvFALSE) + +#define NumOfPerFrameBuf 16 +#define NumOfPerDrawBuf 128 + +typedef struct gcsCounterBuffer * gcsCounterBuffer_PTR; + +struct gcsCounterBuffer +{ + gcsPROFILER_COUNTERS *counters; + gctHANDLE couterBufobj; + gctUINT32 probeAddress; + gctPOINTER logicalAddress; + gceCOUNTER_OPTYPE opType; + gctUINT32 opID; + gctUINT32 startPos; + gctUINT32 endPos; + gctUINT32 dataSize; + gctBOOL available; + gctBOOL needDump; + gcsCounterBuffer_PTR next; + gcsCounterBuffer_PTR prev; +}; + +typedef struct _gcoPROFILER * gcoPROFILER; + +struct _gcoPROFILER +{ + gctBOOL enable; + gctBOOL enablePrint; + gctBOOL disableProbe; + gctBOOL probeMode; + + gctFILE file; + gctCHAR* fileName; + + gcsCounterBuffer_PTR counterBuf; + gctUINT32 bufferCount; + + gctBOOL perDrawMode; + gctBOOL needDump; + gctBOOL counterEnable; + + gceProfilerClient profilerClient; + + /*query some features from hw*/ + gctUINT32 coreCount; + gctUINT32 shaderCoreCount; + gctBOOL bHalti4; + gctBOOL psRenderPixelFix; + gctBOOL axiBus128bits; +}; + +typedef struct _gcsPROBESTATES +{ + gceProbeStatus status; + gctUINT32 probeAddress; +}gcsPROBESTATES; + +typedef struct _gckPROFILER +{ + /* Profile mode */ + gceProfilerMode profileMode; + /* Enable profiling */ + gctBOOL profileEnable; + /* Clear profile register or not*/ + gctBOOL profileCleanRegister; +}gckPROFILER; + +/* Construct a Profiler object per context. */ +gceSTATUS +gcoPROFILER_Construct( + OUT gcoPROFILER * Profiler + ); + +gceSTATUS +gcoPROFILER_Destroy( + IN gcoPROFILER Profiler + ); + +gceSTATUS +gcoPROFILER_Initialize( + IN gcoPROFILER Profiler + ); + +gceSTATUS +gcoPROFILER_Disable( + void + ); + +gceSTATUS +gcoPROFILER_EnableCounters( + IN gcoPROFILER Profiler, + IN gceCOUNTER_OPTYPE operationType + ); + +gceSTATUS +gcoPROFILER_End( + IN gcoPROFILER Profiler, + IN gceCOUNTER_OPTYPE operationType, + IN gctUINT32 OpID + ); + +gceSTATUS +gcoPROFILER_Write( + IN gcoPROFILER Profiler, + IN gctSIZE_T ByteCount, + IN gctCONST_POINTER Data + ); + +gceSTATUS +gcoPROFILER_Flush( + IN gcoPROFILER Profiler + ); +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_profiler_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_raster.h b/include_v6.4.3.p4.6/gc_hal_raster.h new file mode 100644 index 0000000..1daf4a6 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_raster.h @@ -0,0 +1,1122 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_raster_h_ +#define __gc_hal_raster_h_ + +#include "gc_hal_enum.h" +#include "gc_hal_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ +****************************** Object Declarations ***************************** +\******************************************************************************/ + +typedef struct _gcoBRUSH * gcoBRUSH; +typedef struct _gcoBRUSH_CACHE * gcoBRUSH_CACHE; + +/******************************************************************************\ +******************************** gcoBRUSH Object ******************************* +\******************************************************************************/ + +/* Create a new solid color gcoBRUSH object. */ +gceSTATUS +gcoBRUSH_ConstructSingleColor( + IN gcoHAL Hal, + IN gctUINT32 ColorConvert, + IN gctUINT32 Color, + IN gctUINT64 Mask, + gcoBRUSH * Brush + ); + +/* Create a new monochrome gcoBRUSH object. */ +gceSTATUS +gcoBRUSH_ConstructMonochrome( + IN gcoHAL Hal, + IN gctUINT32 OriginX, + IN gctUINT32 OriginY, + IN gctUINT32 ColorConvert, + IN gctUINT32 FgColor, + IN gctUINT32 BgColor, + IN gctUINT64 Bits, + IN gctUINT64 Mask, + gcoBRUSH * Brush + ); + +/* Create a color gcoBRUSH object. */ +gceSTATUS +gcoBRUSH_ConstructColor( + IN gcoHAL Hal, + IN gctUINT32 OriginX, + IN gctUINT32 OriginY, + IN gctPOINTER Address, + IN gceSURF_FORMAT Format, + IN gctUINT64 Mask, + gcoBRUSH * Brush + ); + +/* Destroy an gcoBRUSH object. */ +gceSTATUS +gcoBRUSH_Destroy( + IN gcoBRUSH Brush + ); + +/******************************************************************************\ +******************************** gcoSURF Object ******************************* +\******************************************************************************/ + +/* Set cipping rectangle. */ +gceSTATUS +gcoSURF_SetClipping( + IN gcoSURF Surface + ); + +/* Clear one or more rectangular areas. */ +gceSTATUS +gcoSURF_Clear2D( + IN gcoSURF DestSurface, + IN gctUINT32 RectCount, + IN gcsRECT_PTR DestRect, + IN gctUINT32 LoColor, + IN gctUINT32 HiColor + ); + +/* Draw one or more Bresenham lines. */ +gceSTATUS +gcoSURF_Line( + IN gcoSURF Surface, + IN gctUINT32 LineCount, + IN gcsRECT_PTR Position, + IN gcoBRUSH Brush, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop + ); + +/* Generic rectangular blit. */ +gceSTATUS +gcoSURF_Blit( + IN OPTIONAL gcoSURF SrcSurface, + IN gcoSURF DestSurface, + IN gctUINT32 RectCount, + IN OPTIONAL gcsRECT_PTR SrcRect, + IN gcsRECT_PTR DestRect, + IN OPTIONAL gcoBRUSH Brush, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN OPTIONAL gceSURF_TRANSPARENCY Transparency, + IN OPTIONAL gctUINT32 TransparencyColor, + IN OPTIONAL gctPOINTER Mask, + IN OPTIONAL gceSURF_MONOPACK MaskPack + ); + +/* Monochrome blit. */ +gceSTATUS +gcoSURF_MonoBlit( + IN gcoSURF DestSurface, + IN gctPOINTER Source, + IN gceSURF_MONOPACK SourcePack, + IN gcsPOINT_PTR SourceSize, + IN gcsPOINT_PTR SourceOrigin, + IN gcsRECT_PTR DestRect, + IN OPTIONAL gcoBRUSH Brush, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gctBOOL ColorConvert, + IN gctUINT8 MonoTransparency, + IN gceSURF_TRANSPARENCY Transparency, + IN gctUINT32 FgColor, + IN gctUINT32 BgColor + ); + +/* Filter blit. */ +gceSTATUS +gcoSURF_FilterBlit( + IN gcoSURF SrcSurface, + IN gcoSURF DestSurface, + IN gcsRECT_PTR SrcRect, + IN gcsRECT_PTR DestRect, + IN gcsRECT_PTR DestSubRect + ); + +/* Enable alpha blending engine in the hardware and disengage the ROP engine. */ +gceSTATUS +gcoSURF_EnableAlphaBlend( + IN gcoSURF Surface, + IN gctUINT8 SrcGlobalAlphaValue, + IN gctUINT8 DstGlobalAlphaValue, + IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode, + IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode, + IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode, + IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode, + IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode, + IN gceSURF_BLEND_FACTOR_MODE DstFactorMode, + IN gceSURF_PIXEL_COLOR_MODE SrcColorMode, + IN gceSURF_PIXEL_COLOR_MODE DstColorMode + ); + +/* Disable alpha blending engine in the hardware and engage the ROP engine. */ +gceSTATUS +gcoSURF_DisableAlphaBlend( + IN gcoSURF Surface + ); + +gceSTATUS +gcoSURF_SetDither( + IN gcoSURF Surface, + IN gctBOOL Dither + ); + +gceSTATUS +gcoSURF_Set2DSource( + gcoSURF Surface, + gceSURF_ROTATION Rotation + ); + +gceSTATUS +gcoSURF_Set2DTarget( + gcoSURF Surface, + gceSURF_ROTATION Rotation + ); + +/******************************************************************************\ +********************************** gco2D Object ********************************* +\******************************************************************************/ + +/* Construct a new gco2D object. */ +gceSTATUS +gco2D_Construct( + IN gcoHAL Hal, + OUT gco2D * Hardware + ); + +/* Destroy an gco2D object. */ +gceSTATUS +gco2D_Destroy( + IN gco2D Hardware + ); + +/* Sets the maximum number of brushes in the brush cache. */ +gceSTATUS +gco2D_SetBrushLimit( + IN gco2D Hardware, + IN gctUINT MaxCount + ); + +/* Flush the brush. */ +gceSTATUS +gco2D_FlushBrush( + IN gco2D Engine, + IN gcoBRUSH Brush, + IN gceSURF_FORMAT Format + ); + +/* Program the specified solid color brush. */ +gceSTATUS +gco2D_LoadSolidBrush( + IN gco2D Engine, + IN gceSURF_FORMAT Format, + IN gctUINT32 ColorConvert, + IN gctUINT32 Color, + IN gctUINT64 Mask + ); + +gceSTATUS +gco2D_LoadMonochromeBrush( + IN gco2D Engine, + IN gctUINT32 OriginX, + IN gctUINT32 OriginY, + IN gctUINT32 ColorConvert, + IN gctUINT32 FgColor, + IN gctUINT32 BgColor, + IN gctUINT64 Bits, + IN gctUINT64 Mask + ); + +gceSTATUS +gco2D_LoadColorBrush( + IN gco2D Engine, + IN gctUINT32 OriginX, + IN gctUINT32 OriginY, + IN gctUINT32 Address, + IN gceSURF_FORMAT Format, + IN gctUINT64 Mask + ); + +/* Configure monochrome source. */ +gceSTATUS +gco2D_SetMonochromeSource( + IN gco2D Engine, + IN gctBOOL ColorConvert, + IN gctUINT8 MonoTransparency, + IN gceSURF_MONOPACK DataPack, + IN gctBOOL CoordRelative, + IN gceSURF_TRANSPARENCY Transparency, + IN gctUINT32 FgColor, + IN gctUINT32 BgColor + ); + +/* Configure color source. */ +gceSTATUS +gco2D_SetColorSource( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctBOOL CoordRelative, + IN gceSURF_TRANSPARENCY Transparency, + IN gctUINT32 TransparencyColor + ); + +/* Configure color source extension for full rotation. */ +gceSTATUS +gco2D_SetColorSourceEx( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight, + IN gctBOOL CoordRelative, + IN gceSURF_TRANSPARENCY Transparency, + IN gctUINT32 TransparencyColor + ); + +/* Same as gco2D_SetColorSourceEx, but with better 64bit SW-path support. +** Please do NOT export the API now. +*/ +gceSTATUS +gco2D_SetColorSource64( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctPOINTER Logical, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight, + IN gctBOOL CoordRelative, + IN gceSURF_TRANSPARENCY Transparency, + IN gctUINT32 TransparencyColor + ); + +/* Configure color source. */ +gceSTATUS +gco2D_SetColorSourceAdvanced( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight, + IN gctBOOL CoordRelative + ); + +gceSTATUS +gco2D_SetColorSourceN( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight, + IN gctUINT32 SurfaceNumber + ); + +/* Configure masked color source. */ +gceSTATUS +gco2D_SetMaskedSource( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gctBOOL CoordRelative, + IN gceSURF_MONOPACK MaskPack + ); + +/* Configure masked color source extension for full rotation. */ +gceSTATUS +gco2D_SetMaskedSourceEx( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gctBOOL CoordRelative, + IN gceSURF_MONOPACK MaskPack, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight + ); + +/* Same as gco2D_SetMaskedSourceEx, but with better 64bit SW-path support. +** Please do NOT export the API now. +*/ +gceSTATUS +gco2D_SetMaskedSource64( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctPOINTER Logical, + IN gctUINT32 Stride, + IN gceSURF_FORMAT Format, + IN gctBOOL CoordRelative, + IN gceSURF_MONOPACK MaskPack, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight + ); + +/* Setup the source rectangle. */ +gceSTATUS +gco2D_SetSource( + IN gco2D Engine, + IN gcsRECT_PTR SrcRect + ); + +/* Set clipping rectangle. */ +gceSTATUS +gco2D_SetClipping( + IN gco2D Engine, + IN gcsRECT_PTR Rect + ); + +/* Configure destination. */ +gceSTATUS +gco2D_SetTarget( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth + ); + +/* Configure destination extension for full rotation. */ +gceSTATUS +gco2D_SetTargetEx( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctUINT32 Stride, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight + ); + +/* Same as gco2D_SetTargetEx, but with better 64bit SW-path support. +** Please do NOT export the API now. +*/ +gceSTATUS +gco2D_SetTarget64( + IN gco2D Engine, + IN gctUINT32 Address, + IN gctPOINTER Logical, + IN gctUINT32 Stride, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight + ); + +/* Calculate and program the stretch factors. */ +gceSTATUS +gco2D_CalcStretchFactor( + IN gco2D Engine, + IN gctINT32 SrcSize, + IN gctINT32 DestSize, + OUT gctUINT32_PTR Factor + ); + +gceSTATUS +gco2D_SetStretchFactors( + IN gco2D Engine, + IN gctUINT32 HorFactor, + IN gctUINT32 VerFactor + ); + +/* Calculate and program the stretch factors based on the rectangles. */ +gceSTATUS +gco2D_SetStretchRectFactors( + IN gco2D Engine, + IN gcsRECT_PTR SrcRect, + IN gcsRECT_PTR DestRect + ); + +/* Create a new solid color gcoBRUSH object. */ +gceSTATUS +gco2D_ConstructSingleColorBrush( + IN gco2D Engine, + IN gctUINT32 ColorConvert, + IN gctUINT32 Color, + IN gctUINT64 Mask, + gcoBRUSH * Brush + ); + +/* Create a new monochrome gcoBRUSH object. */ +gceSTATUS +gco2D_ConstructMonochromeBrush( + IN gco2D Engine, + IN gctUINT32 OriginX, + IN gctUINT32 OriginY, + IN gctUINT32 ColorConvert, + IN gctUINT32 FgColor, + IN gctUINT32 BgColor, + IN gctUINT64 Bits, + IN gctUINT64 Mask, + gcoBRUSH * Brush + ); + +/* Create a color gcoBRUSH object. */ +gceSTATUS +gco2D_ConstructColorBrush( + IN gco2D Engine, + IN gctUINT32 OriginX, + IN gctUINT32 OriginY, + IN gctPOINTER Address, + IN gceSURF_FORMAT Format, + IN gctUINT64 Mask, + gcoBRUSH * Brush + ); + +/* Clear one or more rectangular areas. */ +gceSTATUS +gco2D_Clear( + IN gco2D Engine, + IN gctUINT32 RectCount, + IN gcsRECT_PTR Rect, + IN gctUINT32 Color32, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +/* Draw one or more Bresenham lines. */ +gceSTATUS +gco2D_Line( + IN gco2D Engine, + IN gctUINT32 LineCount, + IN gcsRECT_PTR Position, + IN gcoBRUSH Brush, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +/* Draw one or more Bresenham lines based on the 32-bit color. */ +gceSTATUS +gco2D_ColorLine( + IN gco2D Engine, + IN gctUINT32 LineCount, + IN gcsRECT_PTR Position, + IN gctUINT32 Color32, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +/* Generic blit. */ +gceSTATUS +gco2D_Blit( + IN gco2D Engine, + IN gctUINT32 RectCount, + IN gcsRECT_PTR Rect, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +gceSTATUS +gco2D_Blend( + IN gco2D Engine, + IN gctUINT32 SrcCount, + IN gctUINT32 RectCount, + IN gcsRECT_PTR Rect, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +/* Batch blit. */ +gceSTATUS +gco2D_BatchBlit( + IN gco2D Engine, + IN gctUINT32 RectCount, + IN gcsRECT_PTR SrcRect, + IN gcsRECT_PTR DestRect, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +/* Stretch blit. */ +gceSTATUS +gco2D_StretchBlit( + IN gco2D Engine, + IN gctUINT32 RectCount, + IN gcsRECT_PTR Rect, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +/* Monochrome blit. */ +gceSTATUS +gco2D_MonoBlit( + IN gco2D Engine, + IN gctPOINTER StreamBits, + IN gcsPOINT_PTR StreamSize, + IN gcsRECT_PTR StreamRect, + IN gceSURF_MONOPACK SrcStreamPack, + IN gceSURF_MONOPACK DestStreamPack, + IN gcsRECT_PTR DestRect, + IN gctUINT32 FgRop, + IN gctUINT32 BgRop, + IN gceSURF_FORMAT DestFormat + ); + +gceSTATUS +gco2D_MonoBlitEx( + IN gco2D Engine, + IN gctPOINTER StreamBits, + IN gctINT32 StreamStride, + IN gctINT32 StreamWidth, + IN gctINT32 StreamHeight, + IN gctINT32 StreamX, + IN gctINT32 StreamY, + IN gctUINT32 FgColor, + IN gctUINT32 BgColor, + IN gcsRECT_PTR SrcRect, + IN gcsRECT_PTR DstRect, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop + ); + +/* Set kernel size. */ +gceSTATUS +gco2D_SetKernelSize( + IN gco2D Engine, + IN gctUINT8 HorKernelSize, + IN gctUINT8 VerKernelSize + ); + +/* Set filter type. */ +gceSTATUS +gco2D_SetFilterType( + IN gco2D Engine, + IN gceFILTER_TYPE FilterType + ); + +/* Set the filter kernel by user. */ +gceSTATUS +gco2D_SetUserFilterKernel( + IN gco2D Engine, + IN gceFILTER_PASS_TYPE PassType, + IN gctUINT16_PTR KernelArray + ); + +/* Select the pass(es) to be done for user defined filter. */ +gceSTATUS +gco2D_EnableUserFilterPasses( + IN gco2D Engine, + IN gctBOOL HorPass, + IN gctBOOL VerPass + ); + +/* Frees the temporary buffer allocated by filter blit operation. */ +gceSTATUS +gco2D_FreeFilterBuffer( + IN gco2D Engine + ); + +/* Filter blit. */ +gceSTATUS +gco2D_FilterBlit( + IN gco2D Engine, + IN gctUINT32 SrcAddress, + IN gctUINT SrcStride, + IN gctUINT32 SrcUAddress, + IN gctUINT SrcUStride, + IN gctUINT32 SrcVAddress, + IN gctUINT SrcVStride, + IN gceSURF_FORMAT SrcFormat, + IN gceSURF_ROTATION SrcRotation, + IN gctUINT32 SrcSurfaceWidth, + IN gcsRECT_PTR SrcRect, + IN gctUINT32 DestAddress, + IN gctUINT DestStride, + IN gceSURF_FORMAT DestFormat, + IN gceSURF_ROTATION DestRotation, + IN gctUINT32 DestSurfaceWidth, + IN gcsRECT_PTR DestRect, + IN gcsRECT_PTR DestSubRect + ); + +/* Filter blit extension for full rotation. */ +gceSTATUS +gco2D_FilterBlitEx( + IN gco2D Engine, + IN gctUINT32 SrcAddress, + IN gctUINT SrcStride, + IN gctUINT32 SrcUAddress, + IN gctUINT SrcUStride, + IN gctUINT32 SrcVAddress, + IN gctUINT SrcVStride, + IN gceSURF_FORMAT SrcFormat, + IN gceSURF_ROTATION SrcRotation, + IN gctUINT32 SrcSurfaceWidth, + IN gctUINT32 SrcSurfaceHeight, + IN gcsRECT_PTR SrcRect, + IN gctUINT32 DestAddress, + IN gctUINT DestStride, + IN gceSURF_FORMAT DestFormat, + IN gceSURF_ROTATION DestRotation, + IN gctUINT32 DestSurfaceWidth, + IN gctUINT32 DestSurfaceHeight, + IN gcsRECT_PTR DestRect, + IN gcsRECT_PTR DestSubRect + ); + +gceSTATUS +gco2D_FilterBlitEx2( + IN gco2D Engine, + IN gctUINT32_PTR SrcAddresses, + IN gctUINT32 SrcAddressNum, + IN gctUINT32_PTR SrcStrides, + IN gctUINT32 SrcStrideNum, + IN gceTILING SrcTiling, + IN gceSURF_FORMAT SrcFormat, + IN gceSURF_ROTATION SrcRotation, + IN gctUINT32 SrcSurfaceWidth, + IN gctUINT32 SrcSurfaceHeight, + IN gcsRECT_PTR SrcRect, + IN gctUINT32_PTR DestAddresses, + IN gctUINT32 DestAddressNum, + IN gctUINT32_PTR DestStrides, + IN gctUINT32 DestStrideNum, + IN gceTILING DestTiling, + IN gceSURF_FORMAT DestFormat, + IN gceSURF_ROTATION DestRotation, + IN gctUINT32 DestSurfaceWidth, + IN gctUINT32 DestSurfaceHeight, + IN gcsRECT_PTR DestRect, + IN gcsRECT_PTR DestSubRect + ); + +/* Enable alpha blending engine in the hardware and disengage the ROP engine. */ +gceSTATUS +gco2D_EnableAlphaBlend( + IN gco2D Engine, + IN gctUINT8 SrcGlobalAlphaValue, + IN gctUINT8 DstGlobalAlphaValue, + IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode, + IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode, + IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode, + IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode, + IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode, + IN gceSURF_BLEND_FACTOR_MODE DstFactorMode, + IN gceSURF_PIXEL_COLOR_MODE SrcColorMode, + IN gceSURF_PIXEL_COLOR_MODE DstColorMode + ); + +/* Enable alpha blending engine in the hardware. */ +gceSTATUS +gco2D_EnableAlphaBlendAdvanced( + IN gco2D Engine, + IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode, + IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode, + IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode, + IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode, + IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode, + IN gceSURF_BLEND_FACTOR_MODE DstFactorMode + ); + +/* Enable alpha blending engine with Porter Duff rule. */ +gceSTATUS +gco2D_SetPorterDuffBlending( + IN gco2D Engine, + IN gce2D_PORTER_DUFF_RULE Rule + ); + +/* Disable alpha blending engine in the hardware and engage the ROP engine. */ +gceSTATUS +gco2D_DisableAlphaBlend( + IN gco2D Engine + ); + +/* Retrieve the maximum number of 32-bit data chunks for a single DE command. */ +gctUINT32 +gco2D_GetMaximumDataCount( + void + ); + +/* Retrieve the maximum number of rectangles, that can be passed in a single DE command. */ +gctUINT32 +gco2D_GetMaximumRectCount( + void + ); + +/* Returns the pixel alignment of the surface. */ +gceSTATUS +gco2D_GetPixelAlignment( + gceSURF_FORMAT Format, + gcsPOINT_PTR Alignment + ); + +/* Retrieve monochrome stream pack size. */ +gceSTATUS +gco2D_GetPackSize( + IN gceSURF_MONOPACK StreamPack, + OUT gctUINT32 * PackWidth, + OUT gctUINT32 * PackHeight + ); + +/* Flush the 2D pipeline. */ +gceSTATUS +gco2D_Flush( + IN gco2D Engine + ); + +/* Load 256-entry color table for INDEX8 source surfaces. */ +gceSTATUS +gco2D_LoadPalette( + IN gco2D Engine, + IN gctUINT FirstIndex, + IN gctUINT IndexCount, + IN gctPOINTER ColorTable, + IN gctBOOL ColorConvert + ); + +/* Enable/disable 2D BitBlt mirrorring. */ +gceSTATUS +gco2D_SetBitBlitMirror( + IN gco2D Engine, + IN gctBOOL HorizontalMirror, + IN gctBOOL VerticalMirror + ); + +/* + * Set the transparency for source, destination and pattern. + * It also enable or disable the DFB color key mode. + */ +gceSTATUS +gco2D_SetTransparencyAdvancedEx( + IN gco2D Engine, + IN gce2D_TRANSPARENCY SrcTransparency, + IN gce2D_TRANSPARENCY DstTransparency, + IN gce2D_TRANSPARENCY PatTransparency, + IN gctBOOL EnableDFBColorKeyMode + ); + +/* Set the transparency for source, destination and pattern. */ +gceSTATUS +gco2D_SetTransparencyAdvanced( + IN gco2D Engine, + IN gce2D_TRANSPARENCY SrcTransparency, + IN gce2D_TRANSPARENCY DstTransparency, + IN gce2D_TRANSPARENCY PatTransparency + ); + +/* Set the source color key. */ +gceSTATUS +gco2D_SetSourceColorKeyAdvanced( + IN gco2D Engine, + IN gctUINT32 ColorKey + ); + +/* Set the source color key range. */ +gceSTATUS +gco2D_SetSourceColorKeyRangeAdvanced( + IN gco2D Engine, + IN gctUINT32 ColorKeyLow, + IN gctUINT32 ColorKeyHigh + ); + +/* Set the target color key. */ +gceSTATUS +gco2D_SetTargetColorKeyAdvanced( + IN gco2D Engine, + IN gctUINT32 ColorKey + ); + +/* Set the target color key range. */ +gceSTATUS +gco2D_SetTargetColorKeyRangeAdvanced( + IN gco2D Engine, + IN gctUINT32 ColorKeyLow, + IN gctUINT32 ColorKeyHigh + ); + +/* Set the YUV color space mode. */ +gceSTATUS +gco2D_SetYUVColorMode( + IN gco2D Engine, + IN gce2D_YUV_COLOR_MODE Mode + ); + +/* Setup the source global color value in ARGB8 format. */ +gceSTATUS gco2D_SetSourceGlobalColorAdvanced( + IN gco2D Engine, + IN gctUINT32 Color32 + ); + +/* Setup the target global color value in ARGB8 format. */ +gceSTATUS gco2D_SetTargetGlobalColorAdvanced( + IN gco2D Engine, + IN gctUINT32 Color32 + ); + +/* Setup the source and target pixel multiply modes. */ +gceSTATUS +gco2D_SetPixelMultiplyModeAdvanced( + IN gco2D Engine, + IN gce2D_PIXEL_COLOR_MULTIPLY_MODE SrcPremultiplySrcAlpha, + IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstPremultiplyDstAlpha, + IN gce2D_GLOBAL_COLOR_MULTIPLY_MODE SrcPremultiplyGlobalMode, + IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstDemultiplyDstAlpha + ); + +/* Set the GPU clock cycles after which the idle engine will keep auto-flushing. */ +gceSTATUS +gco2D_SetAutoFlushCycles( + IN gco2D Engine, + IN gctUINT32 Cycles + ); + +#if VIVANTE_PROFILER +/* Read the profile registers available in the 2D engine and sets them in the profile. + The function will also reset the pixelsRendered counter every time. +*/ +gceSTATUS +gco2D_ProfileEngine( + IN gco2D Engine, + OPTIONAL gcs2D_PROFILE_PTR Profile + ); +#endif + +/* Enable or disable 2D dithering. */ +gceSTATUS +gco2D_EnableDither( + IN gco2D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco2D_SetGenericSource( + IN gco2D Engine, + IN gctUINT32_PTR Addresses, + IN gctUINT32 AddressNum, + IN gctUINT32_PTR Strides, + IN gctUINT32 StrideNum, + IN gceTILING Tiling, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight +); + +gceSTATUS +gco2D_SetGenericTarget( + IN gco2D Engine, + IN gctUINT32_PTR Addresses, + IN gctUINT32 AddressNum, + IN gctUINT32_PTR Strides, + IN gctUINT32 StrideNum, + IN gceTILING Tiling, + IN gceSURF_FORMAT Format, + IN gceSURF_ROTATION Rotation, + IN gctUINT32 SurfaceWidth, + IN gctUINT32 SurfaceHeight +); + +gceSTATUS +gco2D_SetCurrentSourceIndex( + IN gco2D Engine, + IN gctUINT32 SrcIndex + ); + +gceSTATUS +gco2D_MultiSourceBlit( + IN gco2D Engine, + IN gctUINT32 SourceMask, + IN gcsRECT_PTR DestRect, + IN gctUINT32 RectCount + ); + +gceSTATUS +gco2D_SetROP( + IN gco2D Engine, + IN gctUINT8 FgRop, + IN gctUINT8 BgRop + ); + +gceSTATUS +gco2D_SetGdiStretchMode( + IN gco2D Engine, + IN gctBOOL Enable + ); + +gceSTATUS +gco2D_SetSourceTileStatus( + IN gco2D Engine, + IN gce2D_TILE_STATUS_CONFIG TSControl, + IN gceSURF_FORMAT CompressedFormat, + IN gctUINT32 ClearValue, + IN gctUINT32 GpuAddress + ); + +gceSTATUS +gco2D_SetTargetTileStatus( + IN gco2D Engine, + IN gce2D_TILE_STATUS_CONFIG TileStatusConfig, + IN gceSURF_FORMAT CompressedFormat, + IN gctUINT32 ClearValue, + IN gctUINT32 GpuAddress + ); + +gceSTATUS +gco2D_QueryU32( + IN gco2D Engine, + IN gce2D_QUERY Item, + OUT gctUINT32_PTR Value + ); + +gceSTATUS +gco2D_SetStateU32( + IN gco2D Engine, + IN gce2D_STATE State, + IN gctUINT32 Value + ); + +gceSTATUS +gco2D_SetStateArrayI32( + IN gco2D Engine, + IN gce2D_STATE State, + IN gctINT32_PTR Array, + IN gctINT32 ArraySize + ); + +gceSTATUS +gco2D_SetStateArrayU32( + IN gco2D Engine, + IN gce2D_STATE State, + IN gctUINT32_PTR Array, + IN gctINT32 ArraySize + ); + +gceSTATUS +gco2D_SetTargetRect( + IN gco2D Engine, + IN gcsRECT_PTR Rect + ); + +gceSTATUS +gco2D_Set2DEngine( + IN gco2D Engine + ); + +gceSTATUS +gco2D_UnSet2DEngine( + IN gco2D Engine + ); + +gceSTATUS +gco2D_Get2DEngine( + OUT gco2D * Engine + ); + +gceSTATUS +gco2D_Commit( + IN gco2D Engine, + IN gctBOOL Stall + ); + +gceSTATUS +gco2D_NatureRotateTranslation( + IN gctBOOL IsSrcRot, + IN gce2D_NATURE_ROTATION NatureRotation, + IN gctINT32 SrcSurfaceWidth, + IN gctINT32 SrcSurfaceHeight, + IN gctINT32 DstSurfaceWidth, + IN gctINT32 DstSurfaceHeight, + IN OUT gcsRECT_PTR SrcRect, + IN OUT gcsRECT_PTR DstRect, + OUT gceSURF_ROTATION * SrcRotation, + OUT gceSURF_ROTATION * DstRotation + ); + +/* Set source endian mode. */ +gceSTATUS +gco2D_SetSourceEndianMode( + IN gco2D Engine, + IN gceENDIAN_MODE eEndianMode + ); + +/* Set target endian mode. */ +gceSTATUS +gco2D_SetTargetEndianMode( + IN gco2D Engine, + IN gceENDIAN_MODE eEndianMode + ); + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_raster_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_security_interface.h b/include_v6.4.3.p4.6/gc_hal_security_interface.h new file mode 100644 index 0000000..d5953dd --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_security_interface.h @@ -0,0 +1,159 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef _GC_HAL_SECURITY_INTERFACE_H_ +#define _GC_HAL_SECURITY_INTERFACE_H_ +struct kernel_start_command { + kernel_packet_command_t command; /*! The command (always needs to be the first entry in a structure). */ + gctUINT8 gpu; /*! Which GPU. */ + gctUINT32 address; + gctUINT32 bytes; +}; + +/*! + @brief gckCOMMAND Object requests TrustZone to submit command buffer. + @discussion + Code in trustzone will check content of command buffer after copying command buffer to TrustZone. + */ +struct kernel_submit { + kernel_packet_command_t command; /*! The command (always needs to be the first entry in a structure). */ + gctUINT8 gpu; /*! Which GPU. */ + gctUINT8 kernel_command; /*! Whether it is a kernel command. */ + gctUINT32 command_buffer_handle; /*! Handle to command buffer. */ + gctUINT32 offset; /* Offset in command buffer. */ + gctUINT32 * command_buffer; /*! Content of command buffer need to be submit. */ + gctUINT32 command_buffer_length; /*! Length of command buffer. */ +}; + + +/*! + @brief gckVIDMEM Object requests TrustZone to allocate security memory. + @discussion + Allocate a buffer from security GPU memory. + */ +struct kernel_allocate_security_memory { + kernel_packet_command_t command; /*! The command (always needs to be the first entry in a structure). */ + gctUINT32 bytes; /*! Requested bytes. */ + gctUINT32 memory_handle; /*! Handle of allocated memory. */ +}; + +/*! + @brief gckVIDMEM Object requests TrustZone to allocate security memory. + @discussion + Free a video memory buffer from security GPU memory. + */ +struct kernel_free_security_memory { + kernel_packet_command_t command; /*! The command (always needs to be the first entry in a structure). */ + gctUINT32 memory_handle; /*! Handle of allocated memory. */ +}; + +struct kernel_execute { + kernel_packet_command_t command; /*! The command (always needs to be the first entry in a structure). */ + gctUINT8 gpu; /*! Which GPU. */ + gctUINT8 kernel_command; /*! Whether it is a kernel command. */ + gctUINT32 * command_buffer; /*! Content of command buffer need to be submit. */ + gctUINT32 command_buffer_length; /*! Length of command buffer. */ +}; + +typedef struct kernel_map_scatter_gather { + gctUINT32 bytes; + gctUINT32 physical; + struct kernel_map_scatter_gather *next; +} +kernel_map_scatter_gather_t; + +struct kernel_map_memory { + kernel_packet_command_t command; + kernel_map_scatter_gather_t *scatter; + gctUINT32 *physicals; + gctPHYS_ADDR_T physical; /*! Contiguous physical address range. */ + gctUINT32 pageCount; + gctUINT32 gpuAddress; +}; + +struct kernel_unmap_memory { + gctUINT32 gpuAddress; + gctUINT32 pageCount; +}; + +struct kernel_read_mmu_exception { + gctUINT32 mmuStatus; + gctUINT32 mmuException; +}; + +struct kernel_handle_mmu_exception { + gctUINT32 mmuStatus; + gctPHYS_ADDR_T physical; + gctUINT32 gpuAddress; +}; + +typedef struct _gcsTA_INTERFACE { + kernel_packet_command_t command; + union { + struct kernel_submit Submit; + struct kernel_start_command StartCommand; + struct kernel_allocate_security_memory AllocateSecurityMemory; + struct kernel_execute Execute; + struct kernel_map_memory MapMemory; + struct kernel_unmap_memory UnmapMemory; + struct kernel_read_mmu_exception ReadMMUException; + struct kernel_handle_mmu_exception HandleMMUException; + } u; + gceSTATUS result; +} gcsTA_INTERFACE; + +#endif + + diff --git a/include_v6.4.3.p4.6/gc_hal_statistics.h b/include_v6.4.3.p4.6/gc_hal_statistics.h new file mode 100644 index 0000000..1f3ba06 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_statistics.h @@ -0,0 +1,128 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_statistics_h_ +#define __gc_hal_statistics_h_ + + +#define VIV_STAT_ENABLE_STATISTICS 0 + +/* Toal number of frames for which the frame time is accounted. We have storage + to keep frame times for last this many frames. +*/ +#define VIV_STAT_FRAME_BUFFER_SIZE 30 + + +/* + Total number of frames sampled for a mode. This means + + # of frames for HZ Current : VIV_STAT_EARLY_Z_SAMPLE_FRAMES + # of frames for HZ Switched : VIV_STAT_EARLY_Z_SAMPLE_FRAMES + + + -------------------------------------------------------- + : (2 * VIV_STAT_EARLY_Z_SAMPLE_FRAMES) frames needed + + IMPORTANT: This total must be smaller than VIV_STAT_FRAME_BUFFER_SIZE +*/ +#define VIV_STAT_EARLY_Z_SAMPLE_FRAMES 7 +#define VIV_STAT_EARLY_Z_LATENCY_FRAMES 2 + +/* Multiplication factor for previous Hz off mode. Make it more than 1.0 to advertise HZ on.*/ +#define VIV_STAT_EARLY_Z_FACTOR (1.05f) + +/* HAL statistics information. */ +typedef struct _gcsSTATISTICS_EARLYZ +{ + gctUINT switchBackCount; + gctUINT nextCheckPoint; + gctBOOL disabled; +} +gcsSTATISTICS_EARLYZ; + + +/* HAL statistics information. */ +typedef struct _gcsSTATISTICS +{ + gctUINT64 frameTime[VIV_STAT_FRAME_BUFFER_SIZE]; + gctUINT64 previousFrameTime; + gctUINT frame; + gcsSTATISTICS_EARLYZ earlyZ; +} +gcsSTATISTICS; + + +/* Add a frame based data into current statistics. */ +void +gcfSTATISTICS_AddData( + IN gceSTATISTICS Key, + IN gctUINT Value + ); + +/* Marks the frame end and triggers statistical calculations and decisions.*/ +void +gcfSTATISTICS_MarkFrameEnd ( + void + ); + +/* Sets whether the dynmaic HZ is disabled or not .*/ +void +gcfSTATISTICS_DisableDynamicEarlyZ ( + IN gctBOOL Disabled + ); + +#endif /*__gc_hal_statistics_h_ */ + + + diff --git a/include_v6.4.3.p4.6/gc_hal_types.h b/include_v6.4.3.p4.6/gc_hal_types.h new file mode 100644 index 0000000..455355e --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_types.h @@ -0,0 +1,61 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#include "gc_hal_version.h" +#include "gc_hal_options.h" +#include "shared/gc_hal_types_shared.h" + + + diff --git a/include_v6.4.3.p4.6/gc_hal_version.h b/include_v6.4.3.p4.6/gc_hal_version.h new file mode 100644 index 0000000..bae0d25 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_version.h @@ -0,0 +1,71 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_version_h_ +#define __gc_hal_version_h_ + +#define gcvVERSION_MAJOR 6 + +#define gcvVERSION_MINOR 4 + +#define gcvVERSION_PATCH 3 + +#define gcvVERSION_BUILD 398061 + +#define gcvVERSION_STRING "6.4.3.p4.398061" + +#endif /* __gc_hal_version_h_ */ + + diff --git a/include_v6.4.3.p4.6/gc_hal_vg.h b/include_v6.4.3.p4.6/gc_hal_vg.h new file mode 100644 index 0000000..45933f5 --- /dev/null +++ b/include_v6.4.3.p4.6/gc_hal_vg.h @@ -0,0 +1,736 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_vg_h_ +#define __gc_hal_vg_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include "gc_hal_types.h" +#include "gc_hal_enum.h" +#include "gc_hal_base.h" +#include "shared/gc_hal_vg_shared.h" + +#if gcdENABLE_VG + +/* Thread routine type. */ +#if defined(LINUX) + typedef gctINT gctTHREADFUNCRESULT; + typedef gctPOINTER gctTHREADFUNCPARAMETER; +# define gctTHREADFUNCTYPE +#elif defined(WIN32) + typedef gctUINT gctTHREADFUNCRESULT; + typedef gctPOINTER gctTHREADFUNCPARAMETER; +# define gctTHREADFUNCTYPE __stdcall +#elif defined(__QNXNTO__) + typedef void * gctTHREADFUNCRESULT; + typedef gctPOINTER gctTHREADFUNCPARAMETER; +# define gctTHREADFUNCTYPE +#endif + +typedef gctTHREADFUNCRESULT (gctTHREADFUNCTYPE * gctTHREADFUNC) ( + gctTHREADFUNCPARAMETER ThreadParameter + ); + + +#if defined(gcvDEBUG) +# undef gcvDEBUG +#endif + +#define gcdFORCE_DEBUG 0 +#define gcdFORCE_MESSAGES 0 + + +#if DBG || defined(DEBUG) || defined(_DEBUG) || gcdFORCE_DEBUG +# define gcvDEBUG 1 +#else +# define gcvDEBUG 0 +#endif + +#define _gcmERROR_RETURN(prefix, func) \ + status = func; \ + if (gcmIS_ERROR(status)) \ + { \ + prefix##PRINT_VERSION(); \ + prefix##TRACE(gcvLEVEL_ERROR, \ + #prefix "ERR_RETURN: status=%d(%s) @ %s(%d)", \ + status, gcoOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \ + return status; \ + } \ + do { } while (gcvFALSE) + +#define gcmERROR_RETURN(func) _gcmERROR_RETURN(gcm, func) + +#define gcmLOG_LOCATION() + +#define gcmkIS_ERROR(status) (status < 0) + +#define gcmALIGNDOWN(n, align) \ +(\ + (n) & ~((align) - 1) \ +) + +#define gcmIS_VALID_INDEX(Index, Array) \ + (((gctUINT) (Index)) < gcmCOUNTOF(Array)) + + +#define gcmIS_NAN(x) \ +(\ + ((* (gctUINT32_PTR) &(x)) & 0x7FFFFFFF) == 0x7FFFFFFF \ +) + +#define gcmLERP(v1, v2, w) \ + ((v1) * (w) + (v2) * (1.0f - (w))) + +#define gcmINTERSECT(Start1, Start2, Length) \ + (gcmABS((Start1) - (Start2)) < (Length)) + +/******************************************************************************* +** +** gcmERR_GOTO +** +** Prints a message and terminates the current loop on error. +** +** ASSUMPTIONS: +** +** 'status' variable of gceSTATUS type must be defined. +** +** ARGUMENTS: +** +** Function +** Function to evaluate. +*/ + +#define gcmERR_GOTO(Function) \ + status = Function; \ + if (gcmIS_ERROR(status)) \ + { \ + gcmTRACE(\ + gcvLEVEL_ERROR, \ + "gcmERR_GOTO: status=%d @ line=%d in function %s.\n", \ + status, __LINE__, __FUNCTION__ \ + ); \ + goto ErrorHandler; \ + } + +#if gcvDEBUG || gcdFORCE_MESSAGES +# define gcmVERIFY_BOOLEAN(Expression) \ + gcmASSERT(\ + ((Expression) == gcvFALSE ) || \ + ((Expression) == gcvTRUE ) \ + ) +#else +# define gcmVERIFY_BOOLEAN(Expression) +#endif + +/******************************************************************************* +** +** gcmVERIFYFIELDFIT +** +** Verify whether the value fits in the field. +** +** ARGUMENTS: +** +** data Data value. +** reg Name of register. +** field Name of field within register. +** value Value for field. +*/ +#define gcmVERIFYFIELDFIT(reg, field, value) \ + gcmASSERT(\ + (value) <= gcmFIELDMAX(reg, field) \ + ) +/******************************************************************************* +** +** gcmFIELDMAX +** +** Get field maximum value. +** +** ARGUMENTS: +** +** reg Name of register. +** field Name of field within register. +*/ +#define gcmFIELDMAX(reg, field) \ +(\ + (gctUINT32) \ + (\ + (__gcmGETSIZE(reg##_##field) == 32) \ + ? ~0U \ + : (~(~0U << __gcmGETSIZE(reg##_##field))) \ + ) \ +) + + +/* ANSI C does not have the 'f' functions, define replacements here. */ +#define gcmSINF(x) ((gctFLOAT) sin(x)) +#define gcmCOSF(x) ((gctFLOAT) cos(x)) +#define gcmASINF(x) ((gctFLOAT) asin(x)) +#define gcmACOSF(x) ((gctFLOAT) acos(x)) +#define gcmSQRTF(x) ((gctFLOAT) sqrt(x)) +#define gcmFABSF(x) ((gctFLOAT) fabs(x)) +#define gcmFMODF(x, y) ((gctFLOAT) fmod((x), (y))) +#define gcmCEILF(x) ((gctFLOAT) ceil(x)) +#define gcmFLOORF(x) ((gctFLOAT) floor(x)) + + + +/* Fixed point constants. */ +#define gcvZERO_X ((gctFIXED_POINT) 0x00000000) +#define gcvHALF_X ((gctFIXED_POINT) 0x00008000) +#define gcvONE_X ((gctFIXED_POINT) 0x00010000) +#define gcvNEGONE_X ((gctFIXED_POINT) 0xFFFF0000) +#define gcvTWO_X ((gctFIXED_POINT) 0x00020000) + +/* Integer constants. */ +#define gcvMAX_POS_INT ((gctINT) 0x7FFFFFFF) +#define gcvMAX_NEG_INT ((gctINT) 0x80000000) + +/* Float constants. */ +#define gcvMAX_POS_FLOAT ((gctFLOAT) 3.4028235e+038) +#define gcvMAX_NEG_FLOAT ((gctFLOAT) -3.4028235e+038) + +/******************************************************************************\ +***************************** Miscellaneous Macro ****************************** +\******************************************************************************/ + +#define gcmKB2BYTES(Kilobyte) \ +(\ + (Kilobyte) << 10 \ +) + +#define gcmMB2BYTES(Megabyte) \ +(\ + (Megabyte) << 20 \ +) + +#define gcmMAT(Matrix, Row, Column) \ +(\ + (Matrix) [(Row) * 3 + (Column)] \ +) + +#define gcmMAKE2CHAR(Char1, Char2) \ +(\ + ((gctUINT16) (gctUINT8) (Char1) << 0) | \ + ((gctUINT16) (gctUINT8) (Char2) << 8) \ +) + +#define gcmMAKE4CHAR(Char1, Char2, Char3, Char4) \ +(\ + ((gctUINT32)(gctUINT8) (Char1) << 0) | \ + ((gctUINT32)(gctUINT8) (Char2) << 8) | \ + ((gctUINT32)(gctUINT8) (Char3) << 16) | \ + ((gctUINT32)(gctUINT8) (Char4) << 24) \ +) + +/* some platforms need to fix the physical address for HW to access*/ +#define gcmFIXADDRESS(address) \ +(\ + (address)\ +) + +#define gcmkFIXADDRESS(address) \ +(\ + (address)\ +) + +/*----------------------------------------------------------------------------*/ +/*----------------------------- Semaphore Object -----------------------------*/ + +/* Increment the value of a semaphore. */ +gceSTATUS +gckOS_IncrementSemaphore( + IN gckOS Os, + IN gctSEMAPHORE Semaphore + ); + +/* Decrement the value of a semaphore (waiting might occur). */ +gceSTATUS +gckOS_DecrementSemaphore( + IN gckOS Os, + IN gctSEMAPHORE Semaphore + ); + + +/*----------------------------------------------------------------------------*/ +/*------------------------------- Thread Object ------------------------------*/ + +/* Start a thread. */ +gceSTATUS +gckOS_StartThread( + IN gckOS Os, + IN gctTHREADFUNC ThreadFunction, + IN gctPOINTER ThreadParameter, + OUT gctTHREAD * Thread + ); + +/* Stop a thread. */ +gceSTATUS +gckOS_StopThread( + IN gckOS Os, + IN gctTHREAD Thread + ); + +/* Verify whether the thread is still running. */ +gceSTATUS +gckOS_VerifyThread( + IN gckOS Os, + IN gctTHREAD Thread + ); + + +/* Construct a new gckVGKERNEL object. */ +gceSTATUS +gckVGKERNEL_Construct( + IN gckOS Os, + IN gctPOINTER Context, + IN gckKERNEL inKernel, + OUT gckVGKERNEL * Kernel + ); + +/* Destroy an gckVGKERNEL object. */ +gceSTATUS +gckVGKERNEL_Destroy( + IN gckVGKERNEL Kernel + ); + +/* Unmap memory. */ +gceSTATUS +gckKERNEL_UnmapMemory( + IN gckKERNEL Kernel, + IN gctPHYS_ADDR Physical, + IN gctSIZE_T Bytes, + IN gctPOINTER Logical, + IN gctUINT32 ProcessID + ); + +/* Dispatch a user-level command. */ +gceSTATUS +gckVGKERNEL_Dispatch( + IN gckKERNEL Kernel, + IN OUT struct _gcsHAL_INTERFACE * Interface + ); + +/* Query command buffer requirements. */ +gceSTATUS +gckKERNEL_QueryCommandBuffer( + IN gckKERNEL Kernel, + OUT gcsCOMMAND_BUFFER_INFO_PTR Information + ); + +/******************************************************************************\ +******************************* gckVGHARDWARE Object ****************************** +\******************************************************************************/ + +/* Construct a new gckVGHARDWARE object. */ +gceSTATUS +gckVGHARDWARE_Construct( + IN gckOS Os, + OUT gckVGHARDWARE * Hardware + ); + +/* Destroy an gckVGHARDWARE object. */ +gceSTATUS +gckVGHARDWARE_Destroy( + IN gckVGHARDWARE Hardware + ); + +/* Query system memory requirements. */ +gceSTATUS +gckVGHARDWARE_QuerySystemMemory( + IN gckVGHARDWARE Hardware, + OUT gctSIZE_T * SystemSize, + OUT gctUINT32 * SystemBaseAddress + ); + +/* Build virtual address. */ +gceSTATUS +gckVGHARDWARE_BuildVirtualAddress( + IN gckVGHARDWARE Hardware, + IN gctUINT32 Index, + IN gctUINT32 Offset, + OUT gctUINT32 * Address + ); + +/* Kickstart the command processor. */ +gceSTATUS +gckVGHARDWARE_Execute( + IN gckVGHARDWARE Hardware, + IN gctUINT32 Address, + IN gctUINT32 Count + ); + +/* Query the available memory. */ +gceSTATUS +gckVGHARDWARE_QueryMemory( + IN gckVGHARDWARE Hardware, + OUT gctSIZE_T * InternalSize, + OUT gctUINT32 * InternalBaseAddress, + OUT gctUINT32 * InternalAlignment, + OUT gctSIZE_T * ExternalSize, + OUT gctUINT32 * ExternalBaseAddress, + OUT gctUINT32 * ExternalAlignment, + OUT gctUINT32 * HorizontalTileSize, + OUT gctUINT32 * VerticalTileSize + ); + +/* Query the identity of the hardware. */ +gceSTATUS +gckVGHARDWARE_QueryChipIdentity( + IN gckVGHARDWARE Hardware, + OUT gceCHIPMODEL* ChipModel, + OUT gctUINT32* ChipRevision, + OUT gctUINT32* ProductID, + OUT gctUINT32* EcoID, + OUT gctUINT32* CustomerID, + OUT gctUINT32* ChipFeatures, + OUT gctUINT32* ChipMinorFeatures, + OUT gctUINT32* ChipMinorFeatures1 + ); + +/* Convert an API format. */ +gceSTATUS +gckVGHARDWARE_ConvertFormat( + IN gckVGHARDWARE Hardware, + IN gceSURF_FORMAT Format, + OUT gctUINT32 * BitsPerPixel, + OUT gctUINT32 * BytesPerTile + ); + +/* Split a harwdare specific address into API stuff. */ +gceSTATUS +gckVGHARDWARE_SplitMemory( + IN gckVGHARDWARE Hardware, + IN gctUINT32 Address, + OUT gcePOOL * Pool, + OUT gctUINT32 * Offset + ); + +/* Convert logical address to hardware specific address. */ +gceSTATUS +gckVGHARDWARE_ConvertLogical( + IN gckVGHARDWARE Hardware, + IN gctPOINTER Logical, + IN gctBOOL InUserSpace, + OUT gctUINT32 * Address + ); + +/* Program MMU. */ +gceSTATUS +gckVGHARDWARE_SetMMU( + IN gckVGHARDWARE Hardware, + IN gctPOINTER Logical + ); + +/* Flush the MMU. */ +gceSTATUS +gckVGHARDWARE_FlushMMU( + IN gckVGHARDWARE Hardware + ); + +/* Get idle register. */ +gceSTATUS +gckVGHARDWARE_GetIdle( + IN gckVGHARDWARE Hardware, + OUT gctUINT32 * Data + ); + +/* Flush the caches. */ +gceSTATUS +gckVGHARDWARE_Flush( + IN gckVGHARDWARE Hardware, + IN gceKERNEL_FLUSH Flush, + IN gctPOINTER Logical, + IN OUT gctSIZE_T * Bytes + ); + +/* Enable/disable fast clear. */ +gceSTATUS +gckVGHARDWARE_SetFastClear( + IN gckVGHARDWARE Hardware, + IN gctINT Enable + ); + +gceSTATUS +gckVGHARDWARE_ReadInterrupt( + IN gckVGHARDWARE Hardware, + OUT gctUINT32_PTR IDs + ); + +/* Power management. */ +gceSTATUS +gckVGHARDWARE_SetPowerState( + IN gckVGHARDWARE Hardware, + IN gceCHIPPOWERSTATE State + ); + +gceSTATUS +gckVGHARDWARE_QueryPowerManagementState( + IN gckVGHARDWARE Hardware, + OUT gceCHIPPOWERSTATE* State + ); + +gceSTATUS +gckVGHARDWARE_EnablePowerManagement( + IN gckVGHARDWARE Hardware, + IN gctBOOL Enable + ); + +gceSTATUS +gckVGHARDWARE_SetPowerOffTimeout( + IN gckVGHARDWARE Hardware, + IN gctUINT32 Timeout + ); + +gceSTATUS +gckVGHARDWARE_QueryPowerOffTimeout( + IN gckVGHARDWARE Hardware, + OUT gctUINT32* Timeout + ); + +gceSTATUS +gckVGHARDWARE_QueryIdle( + IN gckVGHARDWARE Hardware, + OUT gctBOOL_PTR IsIdle + ); +/******************************************************************************\ +*************************** Command Buffer Structures ************************** +\******************************************************************************/ + +/* Vacant command buffer marker. */ +#define gcvVACANT_BUFFER ((gcsCOMPLETION_SIGNAL_PTR) ((gctSIZE_T)1)) + +/******************************************************************************\ +***************************** gckVGINTERRUPT Object ****************************** +\******************************************************************************/ + +typedef struct _gckVGINTERRUPT * gckVGINTERRUPT; + +typedef gceSTATUS (* gctINTERRUPT_HANDLER)( + IN gckVGKERNEL Kernel + ); + +gceSTATUS +gckVGINTERRUPT_Construct( + IN gckVGKERNEL Kernel, + OUT gckVGINTERRUPT * Interrupt + ); + +gceSTATUS +gckVGINTERRUPT_Destroy( + IN gckVGINTERRUPT Interrupt + ); + +gceSTATUS +gckVGINTERRUPT_Enable( + IN gckVGINTERRUPT Interrupt, + IN OUT gctINT32_PTR Id, + IN gctINTERRUPT_HANDLER Handler + ); + +gceSTATUS +gckVGINTERRUPT_Disable( + IN gckVGINTERRUPT Interrupt, + IN gctINT32 Id + ); + +#ifndef __QNXNTO__ + +gceSTATUS +gckVGINTERRUPT_Enque( + IN gckVGINTERRUPT Interrupt + ); + +#else + +gceSTATUS +gckVGINTERRUPT_Enque( + IN gckVGINTERRUPT Interrupt, + OUT gckOS *Os, + OUT gctSEMAPHORE *Semaphore + ); + +#endif + +gceSTATUS +gckVGINTERRUPT_DumpState( + IN gckVGINTERRUPT Interrupt + ); + + +/******************************************************************************\ +******************************* gckVGCOMMAND Object ******************************* +\******************************************************************************/ + +typedef struct _gckVGCOMMAND * gckVGCOMMAND; + +/* Construct a new gckVGCOMMAND object. */ +gceSTATUS +gckVGCOMMAND_Construct( + IN gckVGKERNEL Kernel, + IN gctUINT TaskGranularity, + IN gctUINT QueueSize, + OUT gckVGCOMMAND * Command + ); + +/* Destroy an gckVGCOMMAND object. */ +gceSTATUS +gckVGCOMMAND_Destroy( + IN gckVGCOMMAND Command + ); + +/* Query command buffer attributes. */ +gceSTATUS +gckVGCOMMAND_QueryCommandBuffer( + IN gckVGCOMMAND Command, + OUT gcsCOMMAND_BUFFER_INFO_PTR Information + ); + +/* Allocate a command queue. */ +gceSTATUS +gckVGCOMMAND_Allocate( + IN gckVGCOMMAND Command, + IN gctSIZE_T Size, + OUT gcsCMDBUFFER_PTR * CommandBuffer, + OUT gctPOINTER * Data + ); + +/* Release memory held by the command queue. */ +gceSTATUS +gckVGCOMMAND_Free( + IN gckVGCOMMAND Command, + IN gcsCMDBUFFER_PTR CommandBuffer + ); + +/* Schedule the command queue for execution. */ +gceSTATUS +gckVGCOMMAND_Execute( + IN gckVGCOMMAND Command, + IN gcsCMDBUFFER_PTR CommandBuffer + ); + +/* Commit a buffer to the command queue. */ +gceSTATUS +gckVGCOMMAND_Commit( + IN gckVGCOMMAND Command, + IN gcsVGCONTEXT_PTR Context, + IN gcsVGCMDQUEUE_PTR Queue, + IN gctUINT EntryCount, + IN gcsTASK_MASTER_TABLE_PTR TaskTable + ); + +/******************************************************************************\ +********************************* gckVGMMU Object ******************************** +\******************************************************************************/ + +typedef struct _gckVGMMU * gckVGMMU; + +/* Construct a new gckVGMMU object. */ +gceSTATUS +gckVGMMU_Construct( + IN gckVGKERNEL Kernel, + IN gctUINT32 MmuSize, + OUT gckVGMMU * Mmu + ); + +/* Destroy an gckVGMMU object. */ +gceSTATUS +gckVGMMU_Destroy( + IN gckVGMMU Mmu + ); + +/* Allocate pages inside the MMU. */ +gceSTATUS +gckVGMMU_AllocatePages( + IN gckVGMMU Mmu, + IN gctSIZE_T PageCount, + OUT gctPOINTER * PageTable, + OUT gctUINT32 * Address + ); + +/* Remove a page table from the MMU. */ +gceSTATUS +gckVGMMU_FreePages( + IN gckVGMMU Mmu, + IN gctPOINTER PageTable, + IN gctSIZE_T PageCount + ); + +/* Set the MMU page with info. */ +gceSTATUS +gckVGMMU_SetPage( + IN gckVGMMU Mmu, + IN gctUINT32 PageAddress, + IN gctUINT32 *PageEntry + ); + +/* Flush MMU */ +gceSTATUS +gckVGMMU_Flush( + IN gckVGMMU Mmu + ); + +#endif /* gcdENABLE_VG */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __gc_hal_h_ */ + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_base_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_base_shared.h new file mode 100644 index 0000000..dcb8e11 --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_base_shared.h @@ -0,0 +1,105 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_base_shared_h_ +#define __gc_hal_base_shared_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define gcdEXTERNAL_MEMORY_NAME_MAX 32 +#define gcdEXTERNAL_MEMORY_DATA_MAX 8 + +typedef struct _gcsEXTERNAL_MEMORY_INFO +{ + /* Name of allocator used to attach this memory. */ + gctCHAR allocatorName[gcdEXTERNAL_MEMORY_NAME_MAX]; + + /* User defined data which will be passed to allocator. */ + gctUINT32 userData[gcdEXTERNAL_MEMORY_DATA_MAX]; +} +gcsEXTERNAL_MEMORY_INFO; + +#define gcdBINARY_TRACE_MESSAGE_SIZE 240 + +typedef struct _gcsBINARY_TRACE_MESSAGE * gcsBINARY_TRACE_MESSAGE_PTR; +typedef struct _gcsBINARY_TRACE_MESSAGE +{ + gctUINT32 signature; + gctUINT32 pid; + gctUINT32 tid; + gctUINT32 line; + gctUINT32 numArguments; + gctUINT8 payload; +} +gcsBINARY_TRACE_MESSAGE; + +/* gcsOBJECT object defintinon. */ +typedef struct _gcsOBJECT +{ + /* Type of an object. */ + gceOBJECT_TYPE type; +} +gcsOBJECT; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_base_shared_h_ */ + + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_driver_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_driver_shared.h new file mode 100644 index 0000000..f096d28 --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_driver_shared.h @@ -0,0 +1,1307 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_driver_shared_h_ +#define __gc_hal_driver_shared_h_ + +#include "gc_hal_enum_shared.h" +#include "gc_hal_types_shared.h" + +#if gcdENABLE_VG +#include "gc_hal_driver_vg.h" +#endif + +#if defined(__QNXNTO__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* The number of context buffers per user. */ +#if gcdCAPTURE_ONLY_MODE +#define gcdCONTEXT_BUFFER_COUNT 1 +#else +#define gcdCONTEXT_BUFFER_COUNT 2 +#endif + +/******************************************************************************\ +******************************* I/O Control Codes ****************************** +\******************************************************************************/ + +#define gcvHAL_CLASS "galcore" +#define IOCTL_GCHAL_INTERFACE 30000 +#define IOCTL_GCHAL_PROFILER_INTERFACE 30001 +#define IOCTL_GCHAL_TERMINATE 30002 + +#undef CONFIG_ANDROID_RESERVED_MEMORY_ACCOUNT +/******************************************************************************\ +****************************** Interface Structure ***************************** +\******************************************************************************/ + +#define gcdMAX_PROFILE_FILE_NAME 128 +#define gcdMAX_FLAT_MAPPING_COUNT 16 + +/* gcvHAL_CHIP_INFO */ +typedef struct _gcsHAL_CHIP_INFO +{ + /* Chip count. */ + OUT gctINT32 count; + + /* Chip types. */ + OUT gceHARDWARE_TYPE types[gcdCHIP_COUNT]; + + /* Chip IDs. */ + OUT gctUINT32 ids[gcvCORE_COUNT]; + + OUT gctUINT32 coreIndexs[gcvCORE_COUNT]; +} +gcsHAL_CHIP_INFO; + +/* gcvHAL_VERSION */ +typedef struct _gcsHAL_VERSION +{ + /* version: ... */ + OUT gctINT32 major; + OUT gctINT32 minor; + OUT gctINT32 patch; + + /* Build version. */ + OUT gctUINT32 build; +} +gcsHAL_VERSION; + +/* gcvHAL_SET_TIMEOUT. */ +typedef struct _gcsHAL_SET_TIMEOUT +{ + gctUINT32 timeOut; +} +gcsHAL_SET_TIMEOUT; + +/* gcvHAL_QUERY_VIDEO_MEMORY */ +typedef struct _gcsHAL_QUERY_VIDEO_MEMORY +{ + /* Physical memory address of internal memory. Just a name. */ + OUT gctUINT32 internalPhysName; + /* Size in bytes of internal memory. */ + OUT gctUINT64 internalSize; + + /* Physical memory address of external memory. Just a name. */ + OUT gctUINT32 externalPhysName; + /* Size in bytes of external memory.*/ + OUT gctUINT64 externalSize; + + /* Physical memory address of contiguous memory. Just a name. */ + OUT gctUINT32 contiguousPhysName; + /* Size in bytes of contiguous memory.*/ + OUT gctUINT64 contiguousSize; +} +gcsHAL_QUERY_VIDEO_MEMORY; + +/* gcvHAL_QUERY_CHIP_IDENTITY */ +typedef struct _gcsHAL_QUERY_CHIP_IDENTITY * gcsHAL_QUERY_CHIP_IDENTITY_PTR; +typedef struct _gcsHAL_QUERY_CHIP_IDENTITY +{ + + /* Chip model. */ + gceCHIPMODEL chipModel; + + /* Revision value.*/ + gctUINT32 chipRevision; + + /* Chip date. */ + gctUINT32 chipDate; + + /* Supported feature fields. */ + gctUINT32 chipFeatures; + + /* Supported minor feature fields. */ + gctUINT32 chipMinorFeatures; + + /* Supported minor feature 1 fields. */ + gctUINT32 chipMinorFeatures1; + + /* Supported minor feature 2 fields. */ + gctUINT32 chipMinorFeatures2; + + /* Supported minor feature 3 fields. */ + gctUINT32 chipMinorFeatures3; + + /* Supported minor feature 4 fields. */ + gctUINT32 chipMinorFeatures4; + + /* Supported minor feature 5 fields. */ + gctUINT32 chipMinorFeatures5; + + /* Supported minor feature 6 fields. */ + gctUINT32 chipMinorFeatures6; + + /* Number of streams supported. */ + gctUINT32 streamCount; + + /* Number of pixel pipes. */ + gctUINT32 pixelPipes; + + /* Number of resolve pipes. */ + gctUINT32 resolvePipes; + + /* Number of instructions. */ + gctUINT32 instructionCount; + + /* Number of constants. */ + gctUINT32 numConstants; + + /* Number of varyings */ + gctUINT32 varyingsCount; + + /* Number of 3D GPUs */ + gctUINT32 gpuCoreCount; + + /* Physical mask of all AVAILABLE clusters in core.*/ + gctUINT32 clusterAvailMask; + + /* Product ID */ + gctUINT32 productID; + + /* Special chip flag bits */ + gceCHIP_FLAG chipFlags; + + /* ECO ID. */ + gctUINT32 ecoID; + + /* Customer ID. */ + gctUINT32 customerID; + + /* CPU view physical address and size of SRAMs. */ + gctUINT64 sRAMBases[gcvSRAM_INTER_COUNT]; + gctUINT32 sRAMSizes[gcvSRAM_INTER_COUNT]; + + gctUINT64 platformFlagBits; +} +gcsHAL_QUERY_CHIP_IDENTITY; + +/* gcvHAL_QUERY_CHIP_OPTION. */ +typedef struct _gcsHAL_QUERY_CHIP_OPTIONS * gcsHAL_QUERY_CHIP_OPTIONS_PTR; +typedef struct _gcsHAL_QUERY_CHIP_OPTIONS +{ + gctBOOL gpuProfiler; + gctBOOL allowFastClear; + gctBOOL powerManagement; + /* Whether use new MMU. It is meaningless + ** for old MMU since old MMU is always enabled. + */ + gctBOOL enableMMU; + gceCOMPRESSION_OPTION allowCompression; + gctBOOL smallBatch; + gctUINT32 uscL1CacheRatio; + gctUINT32 uscAttribCacheRatio; + gctUINT32 userClusterMask; + + /* Internal SRAM. */ + gctUINT32 sRAMGPUVirtAddrs[gcvSRAM_INTER_COUNT]; + gctUINT32 sRAMSizes[gcvSRAM_INTER_COUNT]; + gctUINT32 sRAMCount; + + /* External SRAM. */ + gctPHYS_ADDR_T extSRAMCPUPhysAddrs[gcvSRAM_EXT_COUNT]; + gctPHYS_ADDR_T extSRAMGPUPhysAddrs[gcvSRAM_EXT_COUNT]; + gctUINT32 extSRAMGPUVirtAddrs[gcvSRAM_EXT_COUNT]; + gctUINT32 extSRAMGPUPhysNames[gcvSRAM_EXT_COUNT]; + gctUINT32 extSRAMSizes[gcvSRAM_EXT_COUNT]; + gctUINT32 extSRAMCount; + + gceSECURE_MODE secureMode; + gctBOOL enableNNTPParallel; + gctUINT enableSwtilingPhase1; + + gctBOOL hasShader; +} +gcsHAL_QUERY_CHIP_OPTIONS; + +/* gcvHAL_QUERY_CHIP_FREQUENCY. */ +typedef struct _gcsHAL_QUERY_CHIP_FREQUENCY * gcsHAL_QUERY_CHIP_FREQUENCY_PTR; +typedef struct _gcsHAL_QUERY_CHIP_FREQUENCY +{ + OUT gctUINT32 mcClk; + OUT gctUINT32 shClk; +} +gcsHAL_QUERY_CHIP_FREQUENCY; + +/* Obsolete for userpace. */ +/* gcvHAL_ALLOCATE_NON_PAGED_MEMORY */ +typedef struct _gcsHAL_ALLOCATE_NON_PAGED_MEMORY +{ + /* Allocation flags. */ + IN gctUINT32 flags; + + /* Number of bytes to allocate. */ + IN OUT gctUINT64 bytes; + + /* Physical address of allocation. Just a name. */ + OUT gctUINT32 physName; + + /* Logical address of allocation. */ + OUT gctUINT64 logical; +} +gcsHAL_ALLOCATE_NON_PAGED_MEMORY; + +/* Obsolete for userpace. */ +/* gcvHAL_FREE_NON_PAGED_MEMORY */ +typedef struct _gcsHAL_FREE_NON_PAGED_MEMORY +{ + /* Number of bytes allocated. */ + IN gctUINT64 bytes; + + /* Physical address of allocation. Just a name. */ + IN gctUINT32 physName; + + /* Logical address of allocation. */ + IN gctUINT64 logical; +} +gcsHAL_FREE_NON_PAGED_MEMORY; + +/* Video memory allocation. */ +/* gcvHAL_ALLOCATE_LINEAR_VIDEO_MEMORY */ +typedef struct _gcsHAL_ALLOCATE_LINEAR_VIDEO_MEMORY +{ + /* Number of bytes to allocate. */ + IN OUT gctUINT64 bytes; + + /* Buffer alignment. */ + IN gctUINT32 alignment; + + /* Type of allocation, see gceVIDMEM_TYPE. */ + IN gctUINT32 type; + + /* Flag of allocation. */ + IN gctUINT32 flag; + + /* Memory pool to allocate from. */ + IN OUT gctUINT32 pool; + + /* Internal SRAM index. */ + IN gctINT32 sRAMIndex; + /* External SRAM index. */ + IN gctINT32 extSRAMIndex; + + /* Allocated video memory. */ + OUT gctUINT32 node; +} +gcsHAL_ALLOCATE_LINEAR_VIDEO_MEMORY; + +typedef struct _gcsUSER_MEMORY_DESC +{ + /* Import flag. */ + gctUINT32 flag; + + /* gcvALLOC_FLAG_DMABUF */ + gctUINT32 handle; + gctUINT64 dmabuf; + + /* gcvALLOC_FLAG_USERMEMORY */ + gctUINT64 logical; + gctUINT64 physical; + gctUINT32 size; + + /* gcvALLOC_FLAG_EXTERNAL_MEMORY */ + gcsEXTERNAL_MEMORY_INFO externalMemoryInfo; +} +gcsUSER_MEMORY_DESC; + +/* gcvHAL_WRAP_USER_MEMORY. */ +typedef struct _gcsHAL_WRAP_USER_MEMORY +{ + /* Description of user memory. */ + IN gcsUSER_MEMORY_DESC desc; + + /* Video memory allocation type. */ + IN gctUINT32 type; + + /* Output video mmory node. */ + OUT gctUINT32 node; + + /* size of the node in bytes */ + OUT gctUINT64 bytes; +} +gcsHAL_WRAP_USER_MEMORY; + +/* gcvHAL_RELEASE_VIDEO_MEMORY */ +typedef struct _gcsHAL_RELEASE_VIDEO_MEMORY +{ + /* Allocated video memory. */ + IN gctUINT32 node; + +#ifdef __QNXNTO__ + /* Mapped logical address to unmap in user space. */ + OUT gctUINT64 memory; + + /* Number of bytes to allocated. */ + OUT gctUINT64 bytes; +#endif +} +gcsHAL_RELEASE_VIDEO_MEMORY; + +/* gcvHAL_LOCK_VIDEO_MEMORY */ +typedef struct _gcsHAL_LOCK_VIDEO_MEMORY +{ + /* Allocated video memory. */ + IN gctUINT32 node; + + /* Cache configuration. */ + /* Only gcvPOOL_VIRTUAL can be configured */ + IN gctBOOL cacheable; + + /* Hardware specific address. */ + OUT gctUINT32 address; + + /* Mapped logical address. */ + OUT gctUINT64 memory; + + /* Customer priviate handle*/ + OUT gctUINT32 gid; + + /* Bus address of a contiguous video node. */ + OUT gctUINT64 physicalAddress; + +#if gcdCAPTURE_ONLY_MODE + IN gctBOOL queryCapSize; + IN gctPOINTER captureLogical; + OUT gctSIZE_T captureSize; +#endif +} +gcsHAL_LOCK_VIDEO_MEMORY; + +/* gcvHAL_UNLOCK_VIDEO_MEMORY */ +typedef struct _gcsHAL_UNLOCK_VIDEO_MEMORY +{ + /* Allocated video memory. */ + IN gctUINT64 node; + + /* Video memory allocation type. */ + IN gctUINT32 type; + + /* Pool of the unlock node */ + OUT gctUINT32 pool; + + /* Bytes of the unlock node */ + OUT gctUINT64 bytes; + + /* Flag to unlock surface asynchroneously. */ + IN OUT gctBOOL asynchroneous; + +#if gcdCAPTURE_ONLY_MODE + OUT gctPOINTER captureLogical; +#endif +} +gcsHAL_UNLOCK_VIDEO_MEMORY; + +/* gcvHAL_BOTTOM_HALF_UNLOCK_VIDEO_MEMORY: */ +typedef struct _gcsHAL_BOTTOM_HALF_UNLOCK_VIDEO_MEMORY +{ + /* Allocated video memory. */ + IN gctUINT32 node; + + /* Video memory allocation type. */ + IN gctUINT32 type; +} +gcsHAL_BOTTOM_HALF_UNLOCK_VIDEO_MEMORY; + +/* gcvHAL_EXPORT_VIDEO_MEMORY. */ +typedef struct _gcsHAL_EXPORT_VIDEO_MEMORY +{ + /* Allocated video memory. */ + IN gctUINT32 node; + + /* Export flags */ + IN gctUINT32 flags; + + /* Exported dma_buf fd */ + OUT gctINT32 fd; +} +gcsHAL_EXPORT_VIDEO_MEMORY; + +/* gcvHAL_NAME_VIDEO_MEMORY. */ +typedef struct _gcsHAL_NAME_VIDEO_MEMORY +{ + IN gctUINT32 handle; + OUT gctUINT32 name; +} +gcsHAL_NAME_VIDEO_MEMORY; + +/* gcvHAL_IMPORT_VIDEO_MEMORY. */ +typedef struct _gcsHAL_IMPORT_VIDEO_MEMORY +{ + IN gctUINT32 name; + OUT gctUINT32 handle; +} +gcsHAL_IMPORT_VIDEO_MEMORY; + +/* gcvHAL_MAP_MEMORY */ +typedef struct _gcsHAL_MAP_MEMORY +{ + /* Physical memory address to map. Just a name on Linux/Qnx. */ + IN gctUINT32 physName; + + /* Number of bytes in physical memory to map. */ + IN gctUINT64 bytes; + + /* Address of mapped memory. */ + OUT gctUINT64 logical; +} +gcsHAL_MAP_MEMORY; + +/* gcvHAL_UNMAP_MEMORY */ +typedef struct _gcsHAL_UNMAP_MEMORY +{ + /* Physical memory address to unmap. Just a name on Linux/Qnx. */ + IN gctUINT32 physName; + + /* Number of bytes in physical memory to unmap. */ + IN gctUINT64 bytes; + + /* Address of mapped memory to unmap. */ + IN gctUINT64 logical; +} +gcsHAL_UNMAP_MEMORY; + +/* gcvHAL_CACHE */ +typedef struct _gcsHAL_CACHE +{ + IN gceCACHEOPERATION operation; + IN gctUINT64 process; + IN gctUINT64 logical; + IN gctUINT64 bytes; + IN gctUINT32 node; +} +gcsHAL_CACHE; + +/* gcvHAL_ATTACH */ +typedef struct _gcsHAL_ATTACH +{ + /* Handle of context buffer object. */ + OUT gctUINT32 context; + + /* Maximum state in the buffer. */ + OUT gctUINT64 maxState; + + /* Number of states in the buffer. */ + OUT gctUINT32 numStates; + + /* Map context buffer to user or not. */ + IN gctBOOL map; + + /* Physical of context buffer. */ + OUT gctUINT64 logicals[2]; + + /* Bytes of context buffer. */ + OUT gctUINT32 bytes; + +#if gcdCAPTURE_ONLY_MODE + IN gctBOOL queryCapSize; + IN gctPOINTER contextLogical[gcdCONTEXT_BUFFER_COUNT]; + OUT gctSIZE_T captureSize; +#endif +} +gcsHAL_ATTACH; + +/* gcvHAL_DETACH */ +typedef struct _gcsHAL_DETACH +{ + /* Context buffer object gckCONTEXT. Just a name. */ + IN gctUINT32 context; +} +gcsHAL_DETACH; + + +/* gcvHAL_EVENT_COMMIT. */ +typedef struct _gcsHAL_EVENT_COMMIT +{ + /* Event queue in gcsQUEUE. */ + IN gctUINT64 queue; +} +gcsHAL_EVENT_COMMIT; + +typedef struct _gcsHAL_COMMAND_LOCATION +{ + gctUINT32 priority; + gctUINT32 channelId; + + gctUINT32 videoMemNode; + + gctUINT32 address; + gctUINT64 logical; + gctUINT32 startOffset; + /* size includes reservedHead and reservedTail. */ + gctUINT32 size; + + gctUINT32 reservedHead; + gctUINT32 reservedTail; + + /* Pointer to patch list. */ + gctUINT64 patchHead; + + /* + * Location index of exit commands, ie where to put the chipEnable/link back + * commands in the reservedTail area. + * It's used in fully shared command buffer for multiple cores. + */ + gctUINT32 exitIndex; + gctUINT32 entryPipe; + gctUINT32 exitPipe; + + /* struct _gcsHAL_COMMAND_LOCATION * next; */ + gctUINT64 next; + +#if gcdCAPTURE_ONLY_MODE + gctPOINTER contextLogical[gcdCONTEXT_BUFFER_COUNT]; +#endif +} +gcsHAL_COMMAND_LOCATION; + +typedef struct _gcsHAL_SUBCOMMIT +{ + gctUINT32 coreId; + + /* user gcsSTATE_DELTA_PTR. */ + gctUINT64 delta; + + /* Kernel gckCONTEXT. */ + gctUINT64 context; + + /* Event queue in user gcsQUEUE *. */ + gctUINT64 queue; + + /* Locate the commands. */ + gcsHAL_COMMAND_LOCATION commandBuffer; + + /* struct _gcsHAL_SUBCOMMIT * next; */ + gctUINT64 next; +} +gcsHAL_SUBCOMMIT; + +/* gcvHAL_COMMIT */ +typedef struct _gcsHAL_COMMIT +{ + gcsHAL_SUBCOMMIT subCommit; + + gctBOOL shared; + + gctBOOL contextSwitched; + + /* Commit stamp of this commit. */ + OUT gctUINT64 commitStamp; +} +gcsHAL_COMMIT; + +#if gcdENABLE_VG +/* gcvHAL_COMMIT */ +typedef struct _gcsHAL_VGCOMMIT +{ + /* Context buffer. gcsVGCONTEXT_PTR */ + IN gctUINT64 context; + + /* Command queue. gcsVGCMDQUEUE_PTR */ + IN gctUINT64 queue; + + /* Number of entries in the queue. */ + IN gctUINT32 entryCount; + + /* Task table. gcsTASK_MASTER_TABLE_PTR */ + IN gctUINT64 taskTable; +} +gcsHAL_VGCOMMIT; +#endif + +typedef struct _gcsHAL_COMMIT_DONE +{ + IN gctUINT64 context; +} +gcsHAL_COMMIT_DONE; + +/* gcvHAL_USER_SIGNAL */ +typedef struct _gcsHAL_USER_SIGNAL +{ + /* Command. */ + gceUSER_SIGNAL_COMMAND_CODES command; + + /* Signal ID. */ + IN OUT gctINT32 id; + + /* Reset mode. */ + IN gctBOOL manualReset; + + /* Wait timedout. */ + IN gctUINT32 wait; + + /* State. */ + IN gctBOOL state; +} +gcsHAL_USER_SIGNAL; + +/* gcvHAL_SIGNAL. */ +typedef struct _gcsHAL_SIGNAL +{ + /* Signal handle to signal gctSIGNAL. */ + IN gctUINT64 signal; + + /* Reserved gctSIGNAL. */ + IN gctUINT64 auxSignal; + + /* Process owning the signal gctHANDLE. */ + IN gctUINT64 process; + +#if defined(__QNXNTO__) + /* Client pulse event. */ + IN struct sigevent event; + + /* Set by server. */ + IN gctINT32 rcvid; +#endif + /* Event generated from where of pipeline */ + IN gceKERNEL_WHERE fromWhere; +} +gcsHAL_SIGNAL; + +/* gcvHAL_WRITE_DATA. */ +typedef struct _gcsHAL_WRITE_DATA +{ + /* Address to write data to. */ + IN gctUINT32 address; + + /* Data to write. */ + IN gctUINT32 data; +} +gcsHAL_WRITE_DATA; + +/* gcvHAL_READ_REGISTER */ +typedef struct _gcsHAL_READ_REGISTER +{ + /* Logical address of memory to write data to. */ + IN gctUINT32 address; + + /* Data read. */ + OUT gctUINT32 data; +} +gcsHAL_READ_REGISTER; + +/* gcvHAL_WRITE_REGISTER */ +typedef struct _gcsHAL_WRITE_REGISTER +{ + /* Logical address of memory to write data to. */ + IN gctUINT32 address; + + /* Data read. */ + IN gctUINT32 data; +} +gcsHAL_WRITE_REGISTER; + +/* gcvHAL_READ_REGISTER_EX */ +typedef struct _gcsHAL_READ_REGISTER_EX +{ + /* Logical address of memory to write data to. */ + IN gctUINT32 address; + + IN gctUINT32 coreSelect; + + /* Data read. */ + OUT gctUINT32 data[4]; +} +gcsHAL_READ_REGISTER_EX; + +/* gcvHAL_WRITE_REGISTER_EX */ +typedef struct _gcsHAL_WRITE_REGISTER_EX +{ + /* Logical address of memory to write data to. */ + IN gctUINT32 address; + + IN gctUINT32 coreSelect; + + /* Data read. */ + IN gctUINT32 data[4]; +} +gcsHAL_WRITE_REGISTER_EX; + +#if VIVANTE_PROFILER +/* gcvHAL_GET_PROFILE_SETTING */ +typedef struct _gcsHAL_GET_PROFILE_SETTING +{ + /* Enable profiling */ + OUT gctBOOL enable; + /* Profile mode */ + OUT gceProfilerMode profileMode; +} +gcsHAL_GET_PROFILE_SETTING; + +/* gcvHAL_SET_PROFILE_SETTING */ +typedef struct _gcsHAL_SET_PROFILE_SETTING +{ + /* Enable profiling */ + IN gctBOOL enable; + /* Profile mode */ + IN gceProfilerMode profileMode; +} +gcsHAL_SET_PROFILE_SETTING; + +/* gcvHAL_READ_PROFILER_REGISTER_SETTING */ +typedef struct _gcsHAL_READ_PROFILER_REGISTER_SETTING +{ + /*Should Clear Register*/ + IN gctBOOL bclear; +} +gcsHAL_READ_PROFILER_REGISTER_SETTING; + +typedef struct _gcsHAL_READ_ALL_PROFILE_REGISTERS_PART1 +{ + /* Context buffer object gckCONTEXT. Just a name. */ + IN gctUINT32 context; + + /* Data read. */ + OUT gcsPROFILER_COUNTERS_PART1 Counters; +} +gcsHAL_READ_ALL_PROFILE_REGISTERS_PART1; + +typedef struct _gcsHAL_READ_ALL_PROFILE_REGISTERS_PART2 +{ + /* Context buffer object gckCONTEXT. Just a name. */ + IN gctUINT32 context; + + /* Data read. */ + OUT gcsPROFILER_COUNTERS_PART2 Counters; +} +gcsHAL_READ_ALL_PROFILE_REGISTERS_PART2; + +/* gcvHAL_PROFILE_REGISTERS_2D */ +typedef struct _gcsHAL_PROFILE_REGISTERS_2D +{ + /* Data read in gcs2D_PROFILE. */ + OUT gctUINT64 hwProfile2D; +} +gcsHAL_PROFILE_REGISTERS_2D; +#endif + +/* gcvHAL_SET_POWER_MANAGEMENT_STATE */ +typedef struct _gcsHAL_SET_POWER_MANAGEMENT +{ + /* Data read. */ + IN gceCHIPPOWERSTATE state; +} +gcsHAL_SET_POWER_MANAGEMENT; + +/* gcvHAL_QUERY_POWER_MANAGEMENT_STATE */ +typedef struct _gcsHAL_QUERY_POWER_MANAGEMENT +{ + /* Data read. */ + OUT gceCHIPPOWERSTATE state; + + /* Idle query. */ + OUT gctBOOL isIdle; +} +gcsHAL_QUERY_POWER_MANAGEMENT; + +/* gcvHAL_CONFIG_POWER_MANAGEMENT. */ +typedef struct _gcsHAL_CONFIG_POWER_MANAGEMENT +{ + IN gctBOOL enable; + OUT gctBOOL oldValue; +} +gcsHAL_CONFIG_POWER_MANAGEMENT; + +typedef struct _gcsFLAT_MAPPING_RANGE +{ + gctUINT64 start; + gctUINT64 end; + gctUINT32 size; + gceFLATMAP_FLAG flag; +} +gcsFLAT_MAPPING_RANGE; + +/* gcvHAL_GET_BASE_ADDRESS */ +typedef struct _gcsHAL_GET_BASE_ADDRESS +{ + /* Physical memory address of internal memory. */ + OUT gctUINT32 baseAddress; + + OUT gctUINT32 flatMappingRangeCount; + + OUT gcsFLAT_MAPPING_RANGE flatMappingRanges[gcdMAX_FLAT_MAPPING_COUNT]; +} +gcsHAL_GET_BASE_ADDRESS; + +typedef struct _gcsHAL_SET_DEBUG_LEVEL_ZONE +{ + IN gctUINT32 level; + IN gctUINT32 zones; + IN gctBOOL enable; +} +gcsHAL_SET_DEBUG_LEVEL_ZONE; + +/* gcvHAL_DEBUG_DUMP. */ +typedef struct _gcsHAL_DEBUG_DUMP +{ + /* gceDUMP_BUFFER_TYPE type. */ + IN gctUINT32 type; + + IN gctUINT64 ptr; + IN gctUINT32 address; + IN gctUINT32 size; +} +gcsHAL_DEBUG_DUMP; + + +/* gcvHAL_TIMESTAMP */ +typedef struct _gcsHAL_TIMESTAMP +{ + /* Timer select. */ + IN gctUINT32 timer; + + /* Timer request type (0-stop, 1-start, 2-send delta). */ + IN gctUINT32 request; + + /* Result of delta time in microseconds. */ + OUT gctINT32 timeDelta; +} +gcsHAL_TIMESTAMP; + +/* gcvHAL_DATABASE */ +typedef struct _gcsHAL_DATABASE +{ + /* Set to gcvTRUE if you want to query a particular process ID. + ** Set to gcvFALSE to query the last detached process. */ + IN gctBOOL validProcessID; + + /* Process ID to query. */ + IN gctUINT32 processID; + + /* Information. */ + OUT gcuDATABASE_INFO vidMem; + OUT gcuDATABASE_INFO nonPaged; + OUT gcuDATABASE_INFO contiguous; + OUT gcuDATABASE_INFO gpuIdle; + + /* Detail information about video memory. */ + OUT gcuDATABASE_INFO vidMemPool[3]; +} +gcsHAL_DATABASE; + +/* gcvHAL_GET_FRAME_INFO. */ +typedef struct _gcsHAL_GET_FRAME_INFO +{ + /* gcsHAL_FRAME_INFO* */ + OUT gctUINT64 frameInfo; +} +gcsHAL_GET_FRAME_INFO; + +#if gcdENABLE_VG +/* gcvHAL_QUERY_COMMAND_BUFFER */ +typedef struct _gcsHAL_QUERY_COMMAND_BUFFER +{ + /* Command buffer attributes. */ + OUT gcsCOMMAND_BUFFER_INFO information; +} +gcsHAL_QUERY_COMMAND_BUFFER; +#endif + +typedef struct _gcsHAL_SET_FSCALE_VALUE +{ + IN gctUINT32 value; + IN gctUINT32 shValue; +} +gcsHAL_SET_FSCALE_VALUE; + +typedef struct _gcsHAL_GET_FSCALE_VALUE +{ + OUT gctUINT32 value; + OUT gctUINT32 minValue; + OUT gctUINT32 maxValue; +} +gcsHAL_GET_FSCALE_VALUE; + +/* gcvHAL_QUERY_RESET_TIME_STAMP. */ +typedef struct _gcsHAL_QUERY_RESET_TIME_STAMP +{ + OUT gctUINT64 timeStamp; + OUT gctUINT64 contextID; +} +gcsHAL_QUERY_RESET_TIME_STAMP; + +/* gcvHAL_CREATE_NATIVE_FENCE. */ +typedef struct _gcsHAL_CREATE_NATIVE_FENCE +{ + /* Signal id. */ + IN gctUINT64 signal; + + /* Native fence file descriptor. */ + OUT gctINT32 fenceFD; + +} +gcsHAL_CREATE_NATIVE_FENCE; + +/* gcvHAL_WAIT_NATIVE_FENCE. */ +typedef struct _gcsHAL_WAIT_NATIVE_FENCE +{ + /* Native fence file descriptor. */ + IN gctINT32 fenceFD; + + /* Wait timeout. */ + IN gctUINT32 timeout; +} +gcsHAL_WAIT_NATIVE_FENCE; + +/* gcvHAL_SHBUF. */ +typedef struct _gcsHAL_SHBUF +{ + gceSHBUF_COMMAND_CODES command; + + /* Shared buffer. */ + IN OUT gctUINT64 id; + + /* User data to be shared. */ + IN gctUINT64 data; + + /* Data size. */ + IN OUT gctUINT32 bytes; +} +gcsHAL_SHBUF; + +/* gcvHAL_GET_GRAPHIC_BUFFER_FD. */ +/* + * Fd representation of android graphic buffer contents. + * Currently, it is only to reference video nodes, signal, etc to avoid being + * destroyed when trasfering across processes. + */ +typedef struct _gcsHAL_GET_GRAPHIC_BUFFER_FD +{ + /* Max 3 video nodes, node handle here. */ + IN gctUINT32 node[3]; + + /* A shBuf. */ + IN gctUINT64 shBuf; + + /* A signal. */ + IN gctUINT64 signal; + + OUT gctINT32 fd; +} +gcsHAL_GET_GRAPHIC_BUFFER_FD; + +typedef struct _gcsHAL_VIDEO_MEMORY_METADATA +{ + /* Allocated video memory. */ + IN gctUINT32 node; + + IN gctUINT32 readback; + + INOUT gctINT32 ts_fd; + INOUT gctUINT32 fc_enabled; + INOUT gctUINT32 fc_value; + INOUT gctUINT32 fc_value_upper; + + INOUT gctUINT32 compressed; + INOUT gctUINT32 compress_format; +} +gcsHAL_VIDEO_MEMORY_METADATA; + +/* gcvHAL_GET_VIDEO_MEMORY_FD. */ +typedef struct _gcsHAL_GET_VIDEO_MEMORY_FD +{ + IN gctUINT32 handle; + OUT gctINT32 fd; +} +gcsHAL_GET_VIDEO_MEMORY_FD; + +/* gcvHAL_DESTROY_MMU. */ +typedef struct _gcsHAL_DESTROY_MMU +{ + /* Mmu object. */ + IN gctUINT64 mmu; +} +gcsHAL_DESTROY_MMU; + +/* gcvHAL_WAIT_FENCE. */ +typedef struct _gcsHAL_WAIT_FENCE +{ + IN gctUINT32 handle; + IN gctUINT32 timeOut; +} +gcsHAL_WAIT_FENCE; + +/* gcvHAL_DEVICE_MUTEX: */ +typedef struct _gcsHAL_DEVICE_MUTEX +{ + /* Lock or Release device mutex. */ + gctBOOL isMutexLocked; +} +gcsHAL_DEVICE_MUTEX; + + +#if gcdDEC_ENABLE_AHB +/* gcvHAL_DEC300_READ. */ +typedef struct _gcsHAL_DEC300_READ +{ + gctUINT32 enable; + gctUINT32 readId; + gctUINT32 format; + gctUINT32 strides[3]; + gctUINT32 is3D; + gctUINT32 isMSAA; + gctUINT32 clearValue; + gctUINT32 isTPC; + gctUINT32 isTPCCompressed; + gctUINT32 surfAddrs[3]; + gctUINT32 tileAddrs[3]; +} +DEC300Read; + +/* gcvHAL_DEC300_WRITE. */ +typedef struct _gcsHAL_DEC300_WRITE +{ + gctUINT32 enable; + gctUINT32 readId; + gctUINT32 writeId; + gctUINT32 format; + gctUINT32 surfAddr; + gctUINT32 tileAddr; +} +DEC300Write; + +/* gcvHAL_DEC300_FLUSH. */ +typedef struct _gcsHAL_DEC300_FLUSH +{ + IN gctUINT8 useless; +} +DEC300Flush; + +/* gcvHAL_DEC300_FLUSH_WAIT. */ +typedef struct _gcsHAL_DEC300_FLUSH_WAIT +{ + IN gctUINT32 done; +} +DEC300FlushWait; +#endif + + +typedef struct _gcsHAL_INTERFACE +{ + /* Command code. */ + gceHAL_COMMAND_CODES command; + + /* Hardware type. */ + gceHARDWARE_TYPE hardwareType; + + /* Core index for current hardware type. */ + gctUINT32 coreIndex; + + /* Status value. */ + gceSTATUS status; + + /* Engine */ + gceENGINE engine; + + /* Ignore information from TSL when doing IO control */ + gctBOOL ignoreTLS; + + /* The mutext already acquired */ + IN gctBOOL commitMutex; + + /* Union of command structures. */ + union _u + { + gcsHAL_CHIP_INFO ChipInfo; + gcsHAL_VERSION Version; + gcsHAL_SET_TIMEOUT SetTimeOut; + + gcsHAL_QUERY_VIDEO_MEMORY QueryVideoMemory; + gcsHAL_QUERY_CHIP_IDENTITY QueryChipIdentity; + gcsHAL_QUERY_CHIP_OPTIONS QueryChipOptions; + gcsHAL_QUERY_CHIP_FREQUENCY QueryChipFrequency; + + gcsHAL_ALLOCATE_NON_PAGED_MEMORY AllocateNonPagedMemory; + gcsHAL_FREE_NON_PAGED_MEMORY FreeNonPagedMemory; + + gcsHAL_ALLOCATE_LINEAR_VIDEO_MEMORY AllocateLinearVideoMemory; + gcsHAL_WRAP_USER_MEMORY WrapUserMemory; + gcsHAL_RELEASE_VIDEO_MEMORY ReleaseVideoMemory; + + gcsHAL_LOCK_VIDEO_MEMORY LockVideoMemory; + gcsHAL_UNLOCK_VIDEO_MEMORY UnlockVideoMemory; + gcsHAL_BOTTOM_HALF_UNLOCK_VIDEO_MEMORY BottomHalfUnlockVideoMemory; + + gcsHAL_EXPORT_VIDEO_MEMORY ExportVideoMemory; + gcsHAL_NAME_VIDEO_MEMORY NameVideoMemory; + gcsHAL_IMPORT_VIDEO_MEMORY ImportVideoMemory; + + gcsHAL_MAP_MEMORY MapMemory; + gcsHAL_UNMAP_MEMORY UnmapMemory; + + gcsHAL_CACHE Cache; + + gcsHAL_ATTACH Attach; + gcsHAL_DETACH Detach; + + gcsHAL_EVENT_COMMIT Event; + gcsHAL_COMMIT Commit; +#if gcdENABLE_VG + gcsHAL_VGCOMMIT VGCommit; +#endif + gcsHAL_COMMIT_DONE CommitDone; + + gcsHAL_USER_SIGNAL UserSignal; + gcsHAL_SIGNAL Signal; + + gcsHAL_WRITE_DATA WriteData; + gcsHAL_READ_REGISTER ReadRegisterData; + gcsHAL_WRITE_REGISTER WriteRegisterData; + gcsHAL_READ_REGISTER_EX ReadRegisterDataEx; + gcsHAL_WRITE_REGISTER_EX WriteRegisterDataEx; + + gcsHAL_SET_POWER_MANAGEMENT SetPowerManagement; + gcsHAL_QUERY_POWER_MANAGEMENT QueryPowerManagement; + gcsHAL_CONFIG_POWER_MANAGEMENT ConfigPowerManagement; + + gcsHAL_GET_BASE_ADDRESS GetBaseAddress; + + gcsHAL_SET_DEBUG_LEVEL_ZONE DebugLevelZone; + gcsHAL_DEBUG_DUMP DebugDump; + + gcsHAL_TIMESTAMP TimeStamp; + gcsHAL_DATABASE Database; + + gcsHAL_GET_FRAME_INFO GetFrameInfo; + +#if gcdENABLE_VG + gcsHAL_QUERY_COMMAND_BUFFER QueryCommandBuffer; +#endif + + /* gcsHAL_DUMP_GPU_STATE */ + /* gcsHAL_DUMP_EVENT */ + + gcsHAL_SET_FSCALE_VALUE SetFscaleValue; + gcsHAL_GET_FSCALE_VALUE GetFscaleValue; + + gcsHAL_QUERY_RESET_TIME_STAMP QueryResetTimeStamp; + + gcsHAL_CREATE_NATIVE_FENCE CreateNativeFence; + gcsHAL_WAIT_NATIVE_FENCE WaitNativeFence; + gcsHAL_SHBUF ShBuf; + gcsHAL_GET_GRAPHIC_BUFFER_FD GetGraphicBufferFd; + gcsHAL_VIDEO_MEMORY_METADATA SetVidMemMetadata; + gcsHAL_GET_VIDEO_MEMORY_FD GetVideoMemoryFd; + + gcsHAL_DESTROY_MMU DestroyMmu; + + gcsHAL_WAIT_FENCE WaitFence; + + /* gcvHAL_DEVICE_MUTEX: */ + gcsHAL_DEVICE_MUTEX DeviceMutex; + + +#if gcdDEC_ENABLE_AHB + gcsHAL_DEC300_READ DEC300Read; + gcsHAL_DEC300_WRITE DEC300Write; + gcsHAL_DEC300_FLUSH DEC300Flush; + gcsHAL_DEC300_FLUSH_WAIT DEC300FlushWait; +#endif + } + u; +} +gcsHAL_INTERFACE; + +#if VIVANTE_PROFILER +typedef struct _gcsHAL_PROFILER_INTERFACE +{ + /* Command code. */ + gceHAL_COMMAND_CODES command; + + /* Hardware type. */ + gceHARDWARE_TYPE hardwareType; + + /* Core index for current hardware type. */ + gctUINT32 coreIndex; + + /* Status value. */ + gceSTATUS status; + + /* Engine */ + gceENGINE engine; + + /* Ignore information from TSL when doing IO control */ + gctBOOL ignoreTLS; + + /* The mutext already acquired */ + IN gctBOOL commitMutex; + + /* Union of command structures. */ + union profiler_u + { + gcsHAL_GET_PROFILE_SETTING GetProfileSetting; + gcsHAL_SET_PROFILE_SETTING SetProfileSetting; + gcsHAL_READ_PROFILER_REGISTER_SETTING SetProfilerRegisterClear; + gcsHAL_READ_ALL_PROFILE_REGISTERS_PART1 RegisterProfileData_part1; + gcsHAL_READ_ALL_PROFILE_REGISTERS_PART2 RegisterProfileData_part2; + gcsHAL_PROFILE_REGISTERS_2D RegisterProfileData2D; + } + u; +} +gcsHAL_PROFILER_INTERFACE; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_driver_shared_h_ */ + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_driver_vg_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_driver_vg_shared.h new file mode 100644 index 0000000..d4b0097 --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_driver_vg_shared.h @@ -0,0 +1,268 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_driver_vg_shared_h_ +#define __gc_hal_driver_vg_shared_h_ + +#include "gc_hal_types.h" + +#if defined(__QNXNTO__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ +******************************* I/O Control Codes ****************************** +\******************************************************************************/ + +#define gcvHAL_CLASS "galcore" +#define IOCTL_GCHAL_INTERFACE 30000 + +/******************************************************************************\ +********************* Command buffer information structure. ******************** +\******************************************************************************/ + +typedef struct _gcsCOMMAND_BUFFER_INFO * gcsCOMMAND_BUFFER_INFO_PTR; +typedef struct _gcsCOMMAND_BUFFER_INFO +{ + /* FE command buffer interrupt ID. */ + gctINT32 feBufferInt; + + /* TS overflow interrupt ID. */ + gctINT32 tsOverflowInt; + + /* Alignment and mask for the buffer address. */ + gctUINT addressMask; + gctUINT32 addressAlignment; + + /* Alignment for each command. */ + gctUINT32 commandAlignment; + + /* Number of bytes required by the STATE command. */ + gctUINT32 stateCommandSize; + + /* Number of bytes required by the RESTART command. */ + gctUINT32 restartCommandSize; + + /* Number of bytes required by the FETCH command. */ + gctUINT32 fetchCommandSize; + + /* Number of bytes required by the CALL command. */ + gctUINT32 callCommandSize; + + /* Number of bytes required by the RETURN command. */ + gctUINT32 returnCommandSize; + + /* Number of bytes required by the EVENT command. */ + gctUINT32 eventCommandSize; + + /* Number of bytes required by the END command. */ + gctUINT32 endCommandSize; + + /* Number of bytes reserved at the tail of a static command buffer. */ + gctUINT32 staticTailSize; + + /* Number of bytes reserved at the tail of a dynamic command buffer. */ + gctUINT32 dynamicTailSize; +} +gcsCOMMAND_BUFFER_INFO; + +/******************************************************************************\ +******************************** Task Structures ******************************* +\******************************************************************************/ + +typedef struct _gcsTASK_HEADER * gcsTASK_HEADER_PTR; +typedef struct _gcsTASK_HEADER +{ + /* Task ID. */ + IN gceTASK id; +} +gcsTASK_HEADER; + +typedef struct _gcsTASK_LINK * gcsTASK_LINK_PTR; +typedef struct _gcsTASK_LINK +{ + /* Task ID (gcvTASK_LINK). */ + IN gceTASK id; + + /* Pointer to the next task container. */ + IN gctPOINTER cotainer; + + /* Pointer to the next task from the next task container. */ + IN gcsTASK_HEADER_PTR task; +} +gcsTASK_LINK; + +typedef struct _gcsTASK_CLUSTER * gcsTASK_CLUSTER_PTR; +typedef struct _gcsTASK_CLUSTER +{ + /* Task ID (gcvTASK_CLUSTER). */ + IN gceTASK id; + + /* Number of tasks in the cluster. */ + IN gctUINT taskCount; +} +gcsTASK_CLUSTER; + +typedef struct _gcsTASK_INCREMENT * gcsTASK_INCREMENT_PTR; +typedef struct _gcsTASK_INCREMENT +{ + /* Task ID (gcvTASK_INCREMENT). */ + IN gceTASK id; + + /* Address of the variable to increment. */ + IN gctUINT32 address; +} +gcsTASK_INCREMENT; + +typedef struct _gcsTASK_DECREMENT * gcsTASK_DECREMENT_PTR; +typedef struct _gcsTASK_DECREMENT +{ + /* Task ID (gcvTASK_DECREMENT). */ + IN gceTASK id; + + /* Address of the variable to decrement. */ + IN gctUINT32 address; +} +gcsTASK_DECREMENT; + +typedef struct _gcsTASK_SIGNAL * gcsTASK_SIGNAL_PTR; +typedef struct _gcsTASK_SIGNAL +{ + /* Task ID (gcvTASK_SIGNAL). */ + IN gceTASK id; + + /* Process owning the signal. */ + IN gctHANDLE process; + + /* Signal handle to signal. */ + IN gctSIGNAL signal; + +#if defined(__QNXNTO__) + IN struct sigevent event; + IN gctINT32 rcvid; +#endif +} +gcsTASK_SIGNAL; + +typedef struct _gcsTASK_LOCKDOWN * gcsTASK_LOCKDOWN_PTR; +typedef struct _gcsTASK_LOCKDOWN +{ + /* Task ID (gcvTASK_LOCKDOWN). */ + IN gceTASK id; + + /* Address of the user space counter. */ + IN gctUINT32 userCounter; + + /* Address of the kernel space counter. */ + IN gctUINT32 kernelCounter; + + /* Process owning the signal. */ + IN gctHANDLE process; + + /* Signal handle to signal. */ + IN gctSIGNAL signal; +} +gcsTASK_LOCKDOWN; + +typedef struct _gcsTASK_UNLOCK_VIDEO_MEMORY * gcsTASK_UNLOCK_VIDEO_MEMORY_PTR; +typedef struct _gcsTASK_UNLOCK_VIDEO_MEMORY +{ + /* Task ID (gcvTASK_UNLOCK_VIDEO_MEMORY). */ + IN gceTASK id; + + /* Allocated video memory. */ + IN gctUINT64 node; +} +gcsTASK_UNLOCK_VIDEO_MEMORY; + +typedef struct _gcsTASK_FREE_VIDEO_MEMORY * gcsTASK_FREE_VIDEO_MEMORY_PTR; +typedef struct _gcsTASK_FREE_VIDEO_MEMORY +{ + /* Task ID (gcvTASK_FREE_VIDEO_MEMORY). */ + IN gceTASK id; + + /* Allocated video memory. */ + IN gctUINT32 node; +} +gcsTASK_FREE_VIDEO_MEMORY; + +typedef struct _gcsTASK_FREE_CONTIGUOUS_MEMORY * gcsTASK_FREE_CONTIGUOUS_MEMORY_PTR; +typedef struct _gcsTASK_FREE_CONTIGUOUS_MEMORY +{ + /* Task ID (gcvTASK_FREE_CONTIGUOUS_MEMORY). */ + IN gceTASK id; + + /* Number of bytes allocated. */ + IN gctSIZE_T bytes; + + /* Physical address of allocation. */ + IN gctPHYS_ADDR physical; + + /* Logical address of allocation. */ + IN gctPOINTER logical; +} +gcsTASK_FREE_CONTIGUOUS_MEMORY; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_driver_vg_shared_h_ */ + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_enum_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_enum_shared.h new file mode 100644 index 0000000..a017838 --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_enum_shared.h @@ -0,0 +1,1936 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_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, + 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, +} +gceCHIPMODEL; + +/* Chip features. */ +typedef enum _gceFEATURE +{ + gcvFEATURE_PIPE_2D = 0, + gcvFEATURE_PIPE_3D, + gcvFEATURE_PIPE_VG, + gcvFEATURE_DC, + gcvFEATURE_HIGH_DYNAMIC_RANGE, + gcvFEATURE_MODULE_CG, + gcvFEATURE_MIN_AREA, + gcvFEATURE_BUFFER_INTERLEAVING, + gcvFEATURE_BYTE_WRITE_2D, + gcvFEATURE_ENDIANNESS_CONFIG, + gcvFEATURE_DUAL_RETURN_BUS, + gcvFEATURE_DEBUG_MODE, + gcvFEATURE_YUY2_RENDER_TARGET, + gcvFEATURE_FRAGMENT_PROCESSOR, + gcvFEATURE_2DPE20, + gcvFEATURE_FAST_CLEAR, + gcvFEATURE_YUV420_TILER, + gcvFEATURE_YUY2_AVERAGING, + gcvFEATURE_FLIP_Y, + gcvFEATURE_EARLY_Z, + gcvFEATURE_COMPRESSION, + gcvFEATURE_MSAA, + gcvFEATURE_SPECIAL_ANTI_ALIASING, + gcvFEATURE_SPECIAL_MSAA_LOD, + gcvFEATURE_422_TEXTURE_COMPRESSION, + gcvFEATURE_DXT_TEXTURE_COMPRESSION, + gcvFEATURE_ETC1_TEXTURE_COMPRESSION, + gcvFEATURE_CORRECT_TEXTURE_CONVERTER, + gcvFEATURE_TEXTURE_8K, + gcvFEATURE_SCALER, + gcvFEATURE_YUV420_SCALER, + gcvFEATURE_SHADER_HAS_W, + gcvFEATURE_SHADER_HAS_SIGN, + gcvFEATURE_SHADER_HAS_FLOOR, + gcvFEATURE_SHADER_HAS_CEIL, + gcvFEATURE_SHADER_HAS_SQRT, + gcvFEATURE_SHADER_HAS_TRIG, + gcvFEATURE_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_BIT_PE_64BPP_LINEAR_FORMAT, + 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_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, + gcvFEATURE_ANDROID_ONLY, + 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_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, + gcFEATURE_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_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, + + /* 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*/ + + gcFEATURE_BIT_NN_COMPRESSION_BYPASSS, + gcFEATURE_BIT_BFLOAT_COEF_COMPRESSION_ZERO_COEFBIT14_INVERSE, + gcFEATURE_BIT_TP_KERNEL_1BYTE_ALGIN, + gcFEATURE_PREPROCESS_IMG_BUF_640BYTE_LIMIT, + gcFEATURE_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 */ + gcFEATURE_BIT_V8_SINGLE_PORT_ACCUMULATION_BUFFER_RW_CONFICT_ZERO_SKIP_PERF_FIX, /* 2043 */ + gcFEATURE_BIT_BURST_COLLECT_DUMMY_DATA_WASTE_CYCLES_FIX, /* 2111 */ + gcFEATURE_BIT_TP_ACCESS_VIPSRAM_OT_IS_ONE_FIX, /* 2050 */ + + + gcFEATURE_BIT_USE_SINGLE_PORT_VIPSRAM, + gcFEATURE_VALUE_DDR_KERNEL_BURST_SIZE, + gcFEATURE_BIT_TILE_ACCESS_CAPABILITY, + gcFEATURE_BIT_FAST_DP3_PREPROCESSOR, + + gcvFEATURE_BIT_INIMG_NOT_64BYTE_ALIGN_CACHELINE_MODE_FIX, /* 2112 */ + gcFEATURE_BIT_DEPTHWISE_16BIT_FORMAT, + + gcvFEATURE_2D_TILESTATUS_ROTATION,/*Fix fastclear feature with rotation*/ + gcFEATURE_BIT_TP_FC_FLOAT_LAST_PIXEL_NEGATIVE_0_FIX, + gcvFEATURE_TS_FC_VULKAN_SUPPORT, + gcFEATURE_BIT_V8_ACCUMLATION_READ_OUT_HAS_BUBBLES_PERF_FIX, /* 2044 */ + gcFEATURE_BIT_MAX_TILE_SIZE, + gcvFEATURE_2D_TARGET_MAJOR_SUPER_TILE, /*target support supertile Y major*/ + gcFEATURE_BIT_INIMAGE_2DTILE_NOT_LESS_160PIXEL_FIX, + gcFEATURE_BIT_NN_IN_TILE_DATA_IS_ALL_PAD_FIX, /* 2131 */ + + /* TP reorder the int tile x should be less than 512 */ + gcFEATURE_TP_REORDER_INTILE_X_SIZE_512_FIX, + gcFEATURE_NN_WASTE_COEF_READ_WRITE_BANDWIDTH_128BYTE_VIPSRAM_IN_FULL_PATIAL_CACHE_MODE_FIX, + gcFEATURE_BIT_BFP_COEF_AUTO_PAD_INCOMPLETE_ZERO_IN_KZ_PLANE, + gcvFEATURE_NN_FLOAT32_IO, + gcvFEATURE_TP_FLOAT32_IO, + + 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_IMGLD_WIDTH_LT16_FIX, + + gcFEATURE_BIT_IMGLD_COMP_COUNT_FIX, + + gcvFEATURE_LINEAR_RENDER_TARGET, + /* 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_CMA_LIMIT = 0x80000000, + 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_LINEAR_NO_ALIGNMENT = 0x2000000, /* 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, + + /* 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, + /* 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, + + /* Compressed formats. */ + gcvSURF_DXT1 = 400, + gcvSURF_DXT2, + gcvSURF_DXT3, + gcvSURF_DXT4, + gcvSURF_DXT5, + gcvSURF_CXV8U8, + gcvSURF_ETC1, + gcvSURF_R11_EAC, + gcvSURF_SIGNED_R11_EAC, + gcvSURF_RG11_EAC, + gcvSURF_SIGNED_RG11_EAC, + gcvSURF_RGB8_ETC2, + gcvSURF_SRGB8_ETC2, + gcvSURF_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, + gcvSURF_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, + gcvSURF_RGBA8_ETC2_EAC, + gcvSURF_SRGB8_ALPHA8_ETC2_EAC, + + /* YUV formats. */ + gcvSURF_YUY2 = 500, + gcvSURF_UYVY, + gcvSURF_YV12, + gcvSURF_I420, + gcvSURF_NV12, + gcvSURF_NV21, + gcvSURF_NV16, + gcvSURF_NV61, + gcvSURF_YVYU, + gcvSURF_VYUY, + 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, +#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_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, + + + + /* 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, +} +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 _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_3D_MAX = gcvCORE_3D7, + gcvCORE_2D, + gcvCORE_VG, +#if gcdDEC_ENABLE_AHB + gcvCORE_DEC, +#endif + gcvCORE_COUNT +} +gceCORE; + +#define gcdCHIP_COUNT gcvCORE_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 _gceSRAM_EXTERNAL +{ + gcvSRAM_EXTERNAL0 = 0, + gcvSRAM_EXTERNAL1, + + gcvSRAM_EXT_COUNT +} +gceSRAM_EXTERNAL; + +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, + + /* 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 managment 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 ***************/ + gcvHAL_SET_IDLE, + gcvHAL_RESET, + + /* Command commit done, kernel event 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 managment state. */ + gcvHAL_SET_POWER_MANAGEMENT_STATE, + gcvHAL_QUERY_POWER_MANAGEMENT_STATE, + + /* Set debug level. */ + gcvHAL_SET_DEBUG_LEVEL_ZONE, + + /* Dump info. */ + gcvHAL_DUMP_GPU_STATE, + gcvHAL_DUMP_EVENT, + gcvHAL_DUMP_GPU_PROFILE, + + /* Timer. */ + gcvHAL_TIMESTAMP, + + /* FSCALE_VAL. */ + gcvHAL_SET_FSCALE_VALUE, + gcvHAL_GET_FSCALE_VALUE, + + /* Destory MMU. */ + gcvHAL_DESTROY_MMU, + /*************** 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_SRAM, + gcvPOOL_VIRTUAL, + gcvPOOL_USER, + gcvPOOL_INTERNAL_SRAM, + gcvPOOL_EXTERNAL_SRAM, + + 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 _gceProfilerMode +{ + gcvPROFILER_PROBE_MODE = 0, + gcvPROFILER_AHB_MODE = 1, +} +gceProfilerMode; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_enum_shared_h_ */ + + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_profiler_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_profiler_shared.h new file mode 100644 index 0000000..9db4c39 --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_profiler_shared.h @@ -0,0 +1,281 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_profiler_shared_h_ +#define __gc_hal_profiler_shared_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* HW profile information. */ +typedef struct _gcsPROFILER_COUNTERS_PART1 +{ + gctUINT32 gpuTotalRead64BytesPerFrame; + gctUINT32 gpuTotalWrite64BytesPerFrame; + + /* FE */ + gctUINT32 fe_draw_count; + gctUINT32 fe_out_vertex_count; + gctUINT32 fe_cache_miss_count; + gctUINT32 fe_cache_lk_count; + gctUINT32 fe_stall_count; + gctUINT32 fe_starve_count; + gctUINT32 fe_process_count; + + /* PE */ + gctUINT32 pe0_pixel_count_killed_by_color_pipe; + gctUINT32 pe0_pixel_count_killed_by_depth_pipe; + gctUINT32 pe0_pixel_count_drawn_by_color_pipe; + gctUINT32 pe0_pixel_count_drawn_by_depth_pipe; + gctUINT32 pe1_pixel_count_killed_by_color_pipe; + gctUINT32 pe1_pixel_count_killed_by_depth_pipe; + gctUINT32 pe1_pixel_count_drawn_by_color_pipe; + gctUINT32 pe1_pixel_count_drawn_by_depth_pipe; + + /* SH */ + gctUINT32 shader_cycle_count; + gctUINT32 vs_shader_cycle_count; + gctUINT32 ps_shader_cycle_count; + gctUINT32 ps_inst_counter; + gctUINT32 ps_rendered_pixel_counter; + gctUINT32 vs_inst_counter; + gctUINT32 vs_rendered_vertice_counter; + gctUINT32 vs_branch_inst_counter; + gctUINT32 vs_texld_inst_counter; + gctUINT32 ps_branch_inst_counter; + gctUINT32 ps_texld_inst_counter; + gctUINT32 vs_non_idle_starve_count; + gctUINT32 vs_starve_count; + gctUINT32 vs_stall_count; + gctUINT32 vs_process_count; + gctUINT32 ps_non_idle_starve_count; + gctUINT32 ps_starve_count; + gctUINT32 ps_stall_count; + gctUINT32 ps_process_count; + + /* PA */ + gctUINT32 pa_input_vtx_counter; + gctUINT32 pa_input_prim_counter; + gctUINT32 pa_output_prim_counter; + gctUINT32 pa_depth_clipped_counter; + gctUINT32 pa_trivial_rejected_counter; + gctUINT32 pa_culled_prim_counter; + gctUINT32 pa_droped_prim_counter; + gctUINT32 pa_frustum_clipped_prim_counter; + gctUINT32 pa_frustum_clipdroped_prim_counter; + gctUINT32 pa_non_idle_starve_count; + gctUINT32 pa_starve_count; + gctUINT32 pa_stall_count; + gctUINT32 pa_process_count; + + /* SE */ + gctUINT32 se_culled_triangle_count; + gctUINT32 se_culled_lines_count; + gctUINT32 se_clipped_triangle_count; + gctUINT32 se_clipped_line_count; + gctUINT32 se_starve_count; + gctUINT32 se_stall_count; + gctUINT32 se_receive_triangle_count; + gctUINT32 se_send_triangle_count; + gctUINT32 se_receive_lines_count; + gctUINT32 se_send_lines_count; + gctUINT32 se_process_count; + gctUINT32 se_trivial_rejected_line_count; + gctUINT32 se_non_idle_starve_count; + + /* RA */ + gctUINT32 ra_input_prim_count; + gctUINT32 ra_total_quad_count; + gctUINT32 ra_valid_quad_count_after_early_z; + gctUINT32 ra_valid_pixel_count_to_render; + gctUINT32 ra_output_valid_quad_count; + gctUINT32 ra_output_valid_pixel_count; + gctUINT32 ra_pipe_cache_miss_counter; + gctUINT32 ra_pipe_hz_cache_miss_counter; + gctUINT32 ra_prefetch_cache_miss_counter; + gctUINT32 ra_prefetch_hz_cache_miss_counter; + gctUINT32 ra_eez_culled_counter; + gctUINT32 ra_non_idle_starve_count; + gctUINT32 ra_starve_count; + gctUINT32 ra_stall_count; + gctUINT32 ra_process_count; + + /* TX */ + gctUINT32 tx_total_bilinear_requests; + gctUINT32 tx_total_trilinear_requests; + gctUINT32 tx_total_discarded_texture_requests; + gctUINT32 tx_total_texture_requests; + gctUINT32 tx_mc0_miss_count; + gctUINT32 tx_mc0_request_byte_count; + gctUINT32 tx_mc1_miss_count; + gctUINT32 tx_mc1_request_byte_count; + gctUINT32 tx_non_idle_starve_count; + gctUINT32 tx_starve_count; + gctUINT32 tx_stall_count; + gctUINT32 tx_process_count; +} +gcsPROFILER_COUNTERS_PART1; + +typedef struct _gcsPROFILER_COUNTERS_PART2 +{ + /* MCC */ + gctUINT32 mcc_total_read_req_8B_from_colorpipe; + gctUINT32 mcc_total_read_req_8B_sentout_from_colorpipe; + gctUINT32 mcc_total_write_req_8B_from_colorpipe; + gctUINT32 mcc_total_read_req_sentout_from_colorpipe; + gctUINT32 mcc_total_write_req_from_colorpipe; + gctUINT32 mcc_total_read_req_8B_from_depthpipe; + gctUINT32 mcc_total_read_req_8B_sentout_from_depthpipe; + gctUINT32 mcc_total_write_req_8B_from_depthpipe; + gctUINT32 mcc_total_read_req_sentout_from_depthpipe; + gctUINT32 mcc_total_write_req_from_depthpipe; + gctUINT32 mcc_total_read_req_8B_from_others; + gctUINT32 mcc_total_write_req_8B_from_others; + gctUINT32 mcc_total_read_req_from_others; + gctUINT32 mcc_total_write_req_from_others; + gctUINT32 mcc_axi_total_latency; + gctUINT32 mcc_axi_sample_count; + gctUINT32 mcc_axi_max_latency; + gctUINT32 mcc_axi_min_latency; + gctUINT32 mc_fe_read_bandwidth; + gctUINT32 mc_mmu_read_bandwidth; + gctUINT32 mc_blt_read_bandwidth; + gctUINT32 mc_sh0_read_bandwidth; + gctUINT32 mc_sh1_read_bandwidth; + gctUINT32 mc_pe_write_bandwidth; + gctUINT32 mc_blt_write_bandwidth; + gctUINT32 mc_sh0_write_bandwidth; + gctUINT32 mc_sh1_write_bandwidth; + + /* MCZ */ + gctUINT32 mcz_total_read_req_8B_from_colorpipe; + gctUINT32 mcz_total_read_req_8B_sentout_from_colorpipe; + gctUINT32 mcz_total_write_req_8B_from_colorpipe; + gctUINT32 mcz_total_read_req_sentout_from_colorpipe; + gctUINT32 mcz_total_write_req_from_colorpipe; + gctUINT32 mcz_total_read_req_8B_from_depthpipe; + gctUINT32 mcz_total_read_req_8B_sentout_from_depthpipe; + gctUINT32 mcz_total_write_req_8B_from_depthpipe; + gctUINT32 mcz_total_read_req_sentout_from_depthpipe; + gctUINT32 mcz_total_write_req_from_depthpipe; + gctUINT32 mcz_total_read_req_8B_from_others; + gctUINT32 mcz_total_write_req_8B_from_others; + gctUINT32 mcz_total_read_req_from_others; + gctUINT32 mcz_total_write_req_from_others; + gctUINT32 mcz_axi_total_latency; + gctUINT32 mcz_axi_sample_count; + gctUINT32 mcz_axi_max_latency; + gctUINT32 mcz_axi_min_latency; + + /* HI */ + gctUINT32 hi0_total_read_8B_count; + gctUINT32 hi0_total_write_8B_count; + gctUINT32 hi0_total_read_request_count; + gctUINT32 hi0_total_write_request_count; + gctUINT32 hi0_axi_cycles_read_request_stalled; + gctUINT32 hi0_axi_cycles_write_request_stalled; + gctUINT32 hi0_axi_cycles_write_data_stalled; + gctUINT32 hi1_total_read_8B_count; + gctUINT32 hi1_total_write_8B_count; + gctUINT32 hi1_total_read_request_count; + gctUINT32 hi1_total_write_request_count; + gctUINT32 hi1_axi_cycles_read_request_stalled; + gctUINT32 hi1_axi_cycles_write_request_stalled; + gctUINT32 hi1_axi_cycles_write_data_stalled; + gctUINT32 hi_total_cycle_count; + gctUINT32 hi_total_idle_cycle_count; + gctUINT32 hi_total_read_8B_count; + gctUINT32 hi_total_write_8B_count; + gctUINT32 hi_total_readOCB_16B_count; + gctUINT32 hi_total_writeOCB_16B_count; + + /* L2 */ + gctUINT32 l2_total_axi0_read_request_count; + gctUINT32 l2_total_axi1_read_request_count; + gctUINT32 l2_total_axi0_write_request_count; + gctUINT32 l2_total_axi1_write_request_count; + gctUINT32 l2_total_read_transactions_request_by_axi0; + gctUINT32 l2_total_read_transactions_request_by_axi1; + gctUINT32 l2_total_write_transactions_request_by_axi0; + gctUINT32 l2_total_write_transactions_request_by_axi1; + gctUINT32 l2_axi0_minmax_latency; + gctUINT32 l2_axi0_min_latency; + gctUINT32 l2_axi0_max_latency; + gctUINT32 l2_axi0_total_latency; + gctUINT32 l2_axi0_total_request_count; + gctUINT32 l2_axi1_minmax_latency; + gctUINT32 l2_axi1_min_latency; + gctUINT32 l2_axi1_max_latency; + gctUINT32 l2_axi1_total_latency; + gctUINT32 l2_axi1_total_request_count; +} +gcsPROFILER_COUNTERS_PART2; + +typedef struct _gcsPROFILER_COUNTERS +{ + gcsPROFILER_COUNTERS_PART1 counters_part1; + gcsPROFILER_COUNTERS_PART2 counters_part2; +} +gcsPROFILER_COUNTERS; + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_profiler_shared_h_ */ + + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_types_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_types_shared.h new file mode 100644 index 0000000..a42515e --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_types_shared.h @@ -0,0 +1,1042 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_types_shared_h_ +#define __gc_hal_types_shared_h_ + +#if !defined(VIV_KMD) +#if defined(__KERNEL__) +#include "linux/version.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) + typedef unsigned long uintptr_t; +# endif +# include "linux/types.h" +#elif defined(UNDER_CE) +#include +typedef signed char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef long long int64_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; +#elif defined(_MSC_VER) && (_MSC_VER <= 1500) +#include +#include "vadefs.h" +#elif defined(__QNXNTO__) +#define _QNX_SOURCE +#include +#include +#else +#include +#include +#include +#endif +#endif + +#ifdef _WIN32 +#pragma warning(disable:4127) /* Conditional expression is constant (do { } while(0)). */ +#pragma warning(disable:4100) /* Unreferenced formal parameter. */ +#pragma warning(disable:4204) /* Non-constant aggregate initializer (C99). */ +#pragma warning(disable:4131) /* Uses old-style declarator. */ +#pragma warning(disable:4206) /* Translation unit is empty. */ +#pragma warning(disable:4214) /* Nonstandard extension used : + ** bit field types other than int. */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************\ +** Platform macros. +*/ + +#if defined(__GNUC__) +# define gcdHAS_ELLIPSIS 1 /* GCC always has it. */ +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +# define gcdHAS_ELLIPSIS 1 /* C99 has it. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1500) +# define gcdHAS_ELLIPSIS 1 /* MSVC 2007+ has it. */ +#elif defined(UNDER_CE) +#if UNDER_CE >= 600 +# define gcdHAS_ELLIPSIS 1 +# else +# define gcdHAS_ELLIPSIS 0 +# endif +#else +# error "gcdHAS_ELLIPSIS: Platform could not be determined" +#endif + +/******************************************************************************\ +************************************ Keyword *********************************** +\******************************************************************************/ + +#if defined(ANDROID) && defined(__BIONIC_FORTIFY) +#if defined(__clang__) +#if (__clang_major__ >= 10) +# define gcmINLINE __inline__ __attribute__ ((always_inline)) +# else +# define gcmINLINE __inline__ __attribute__ ((always_inline)) __attribute__ ((gnu_inline)) +# endif +# else +# define gcmINLINE __inline__ __attribute__ ((always_inline)) __attribute__ ((gnu_inline)) __attribute__ ((artificial)) +# endif +#elif ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || defined(__APPLE__)) +# define gcmINLINE inline /* C99 keyword. */ +#elif defined(__GNUC__) +# define gcmINLINE __inline__ /* GNU keyword. */ +#elif defined(_MSC_VER) || defined(UNDER_CE) +# define gcmINLINE __inline /* Internal keyword. */ +#else +# error "gcmINLINE: Platform could not be determined" +#endif + + +/* Possible debug flags. */ +#define gcdDEBUG_NONE 0 +#define gcdDEBUG_ALL (1 << 0) +#define gcdDEBUG_FATAL (1 << 1) +#define gcdDEBUG_TRACE (1 << 2) +#define gcdDEBUG_BREAK (1 << 3) +#define gcdDEBUG_ASSERT (1 << 4) +#define gcdDEBUG_CODE (1 << 5) +#define gcdDEBUG_STACK (1 << 6) + +#define gcmIS_DEBUG(flag) (gcdDEBUG & (flag | gcdDEBUG_ALL) ) + +#ifndef gcdDEBUG +#if (defined(DBG) && DBG) || defined(DEBUG) || defined(_DEBUG) +# define gcdDEBUG gcdDEBUG_ALL +# else +# define gcdDEBUG gcdDEBUG_NONE +# endif +#endif + +#ifdef _USRDLL +#ifdef _MSC_VER +#ifdef HAL_EXPORTS +# define HALAPI __declspec(dllexport) +# else +# define HALAPI __declspec(dllimport) +# endif +# define HALDECL __cdecl +# else +#ifdef HAL_EXPORTS +# define HALAPI +# else +# define HALAPI extern +# endif +# endif +#else +# define HALAPI +# define HALDECL +#endif + +/******************************************************************************\ +********************************** Common Types ******************************** +\******************************************************************************/ + +#define gcvFALSE 0 +#define gcvTRUE 1 + +#define gcvINFINITE ((gctUINT32) ~0U) + +#define gcvINVALID_HANDLE ((gctHANDLE) ~0U) + +typedef int gctBOOL; +typedef gctBOOL * gctBOOL_PTR; + +typedef int gctINT; +typedef signed char gctINT8; +typedef signed short gctINT16; +typedef signed int gctINT32; +typedef signed long long gctINT64; + +typedef gctINT * gctINT_PTR; +typedef gctINT8 * gctINT8_PTR; +typedef gctINT16 * gctINT16_PTR; +typedef gctINT32 * gctINT32_PTR; +typedef gctINT64 * gctINT64_PTR; + +typedef unsigned int gctUINT; +typedef unsigned char gctUINT8; +typedef unsigned short gctUINT16; +typedef unsigned int gctUINT32; +typedef unsigned long long gctUINT64; +typedef uintptr_t gctUINTPTR_T; +typedef ptrdiff_t gctPTRDIFF_T; + +typedef gctUINT * gctUINT_PTR; +typedef gctUINT8 * gctUINT8_PTR; +typedef gctUINT16 * gctUINT16_PTR; +typedef gctUINT32 * gctUINT32_PTR; +typedef gctUINT64 * gctUINT64_PTR; + +typedef size_t gctSIZE_T; +typedef gctSIZE_T * gctSIZE_T_PTR; +typedef gctUINT32 gctTRACE; + +#ifdef __cplusplus +# define gcvNULL 0 +#else +# define gcvNULL ((void *) 0) +#endif + +#define gcvMAXINT8 0x7f +#define gcvMININT8 0x80 +#define gcvMAXINT16 0x7fff +#define gcvMININT16 0x8000 +#define gcvMAXINT32 0x7fffffff +#define gcvMININT32 0x80000000 +#define gcvMAXINT64 0x7fffffffffffffff +#define gcvMININT64 0x8000000000000000 +#define gcvMAXUINT8 0xff +#define gcvMINUINT8 0x0 +#define gcvMAXUINT16 0xffff +#define gcvMINUINT16 0x0 +#define gcvMAXUINT32 0xffffffff +#define gcvMINUINT32 0x0 +#define gcvMAXUINT64 0xffffffffffffffff +#define gcvMINUINT64 0x0 +#define gcvMAXUINTPTR_T (~(gctUINTPTR_T)0) +#define gcvMAXSIZE_T ((gctSIZE_T)(-1)) + +typedef float gctFLOAT; +typedef signed int gctFIXED_POINT; +typedef float * gctFLOAT_PTR; + +typedef void * gctPHYS_ADDR; +typedef void * gctHANDLE; +typedef void * gctFILE; +typedef void * gctSIGNAL; +typedef void * gctWINDOW; +typedef void * gctIMAGE; +typedef void * gctSHBUF; + +typedef void * gctSEMAPHORE; + +typedef void * gctPOINTER; +typedef const void * gctCONST_POINTER; + +typedef char gctCHAR; +typedef signed char gctSIGNED_CHAR; +typedef unsigned char gctUNSIGNED_CHAR; +typedef char * gctSTRING; +typedef const char * gctCONST_STRING; + +typedef gctUINT64 gctPHYS_ADDR_T; + +typedef struct _gcsCOUNT_STRING +{ + gctSIZE_T Length; + gctCONST_STRING String; +} +gcsCOUNT_STRING; + +typedef union _gcuFLOAT_UINT32 +{ + gctFLOAT f; + gctUINT32 u; +} +gcuFLOAT_UINT32; + +/* Fixed point constants. */ +#define gcvZERO_X ((gctFIXED_POINT) 0x00000000) +#define gcvHALF_X ((gctFIXED_POINT) 0x00008000) +#define gcvONE_X ((gctFIXED_POINT) 0x00010000) +#define gcvNEGONE_X ((gctFIXED_POINT) 0xFFFF0000) +#define gcvTWO_X ((gctFIXED_POINT) 0x00020000) + +/* No special needs. */ +#define gcvALLOC_FLAG_NONE 0x00000000 + +/* Physical contiguous. */ +#define gcvALLOC_FLAG_CONTIGUOUS 0x00000001 +/* Physical non contiguous. */ +#define gcvALLOC_FLAG_NON_CONTIGUOUS 0x00000002 + +/* Should not swap out. */ +#define gcvALLOC_FLAG_NON_PAGED 0x00000004 + +/* CPU access explicitly needed. */ +#define gcvALLOC_FLAG_CPU_ACCESS 0x00000008 +/* Can be remapped as cacheable. */ +#define gcvALLOC_FLAG_CACHEABLE 0x00000010 + +/* Need 32bit address. */ +#define gcvALLOC_FLAG_4GB_ADDR 0x00000020 + +/* Secure buffer. */ +#define gcvALLOC_FLAG_SECURITY 0x00000040 +/* Can be exported as dmabuf-fd */ +#define gcvALLOC_FLAG_DMABUF_EXPORTABLE 0x00000080 +/* Do not try slow pools (gcvPOOL_VIRTUAL) */ +#define gcvALLOC_FLAG_FAST_POOLS 0x00000100 + +/* Import DMABUF. */ +#define gcvALLOC_FLAG_DMABUF 0x00001000 +/* Import USERMEMORY. */ +#define gcvALLOC_FLAG_USERMEMORY 0x00002000 +/* Import an External Buffer. */ +#define gcvALLOC_FLAG_EXTERNAL_MEMORY 0x00004000 +/* Import linux reserved memory. */ +#define gcvALLOC_FLAG_LINUX_RESERVED_MEM 0x00008000 + +/* 1M pages unit allocation. */ +#define gcvALLOC_FLAG_1M_PAGES 0x00010000 + +/* Non 1M pages unit allocation. */ +#define gcvALLOC_FLAG_4K_PAGES 0x00020000 + +/* Real allocation happens when GPU page fault. */ +#define gcvALLOC_FLAG_ALLOC_ON_FAULT 0x01000000 +/* Alloc with memory limit. */ +#define gcvALLOC_FLAG_MEMLIMIT 0x02000000 + +/* CMA allocator only */ +#define gcvALLOC_FLAG_CMA_LIMIT 0x04000000 + +#define gcvALLOC_FLAG_CMA_PREEMPT 0x08000000 + +#define gcmFIXEDCLAMP_NEG1_TO_1(_x) \ + (((_x) < gcvNEGONE_X) \ + ? gcvNEGONE_X \ + : (((_x) > gcvONE_X) \ + ? gcvONE_X \ + : (_x))) + +#define gcmFLOATCLAMP_NEG1_TO_1(_f) \ + (((_f) < -1.0f) \ + ? -1.0f \ + : (((_f) > 1.0f) \ + ? 1.0f \ + : (_f))) + + +#define gcmFIXEDCLAMP_0_TO_1(_x) \ + (((_x) < 0) \ + ? 0 \ + : (((_x) > gcvONE_X) \ + ? gcvONE_X \ + : (_x))) + +#define gcmFLOATCLAMP_0_TO_1(_f) \ + (((_f) < 0.0f) \ + ? 0.0f \ + : (((_f) > 1.0f) \ + ? 1.0f \ + : (_f))) + + +/******************************************************************************\ +******************************* Multicast Values ******************************* +\******************************************************************************/ + +/* Value unions. */ +typedef union _gcuVALUE +{ + gctUINT uintValue; + gctFIXED_POINT fixedValue; + gctFLOAT floatValue; + gctINT intValue; +} +gcuVALUE; + + + + +/* Stringizing macro. */ +#define gcmSTRING(Value) #Value + +/******************************************************************************\ +******************************* Fixed Point Math ******************************* +\******************************************************************************/ + +#define gcmXMultiply(x1, x2) gcoMATH_MultiplyFixed(x1, x2) +#define gcmXDivide(x1, x2) gcoMATH_DivideFixed(x1, x2) +#define gcmXMultiplyDivide(x1, x2, x3) gcoMATH_MultiplyDivideFixed(x1, x2, x3) + +/* 2D Engine profile. */ +typedef struct _gcs2D_PROFILE +{ + /* Cycle count. + 32bit counter incremented every 2D clock cycle. + Wraps back to 0 when the counter overflows. + */ + gctUINT32 cycleCount; + + /* Pixels rendered by the 2D engine. + Resets to 0 every time it is read. */ + gctUINT32 pixelsRendered; +} +gcs2D_PROFILE; + +#define gcmPRINTABLE(c) ((((c) >= ' ') && ((c) <= '}')) ? ((c) != '%' ? (c) : ' ') : ' ') + +#define gcmCC_PRINT(cc) \ + gcmPRINTABLE((char) ((cc) & 0xFF)), \ + gcmPRINTABLE((char) (((cc) >> 8) & 0xFF)), \ + gcmPRINTABLE((char) (((cc) >> 16) & 0xFF)), \ + gcmPRINTABLE((char) (((cc) >> 24) & 0xFF)) + +/******************************************************************************\ +****************************** Function Parameters ***************************** +\******************************************************************************/ + +#define IN +#define OUT +#define INOUT +#define OPTIONAL + +/******************************************************************************\ +********************************* Status Macros ******************************** +\******************************************************************************/ + +#define gcmIS_ERROR(status) (status < 0) +#define gcmNO_ERROR(status) (status >= 0) +#define gcmIS_SUCCESS(status) (status == gcvSTATUS_OK) + +/******************************************************************************\ +********************************* Field Macros ********************************* +\******************************************************************************/ + +#define __gcmSTART(reg_field) \ + (0 ? reg_field) + +#define __gcmEND(reg_field) \ + (1 ? reg_field) + +#define __gcmGETSIZE(reg_field) \ + (__gcmEND(reg_field) - __gcmSTART(reg_field) + 1) + +#define __gcmALIGN(data, reg_field) \ + (((gctUINT32) (data)) << __gcmSTART(reg_field)) + +#define __gcmMASK(reg_field) \ + ((gctUINT32) ((__gcmGETSIZE(reg_field) == 32) \ + ? ~0U \ + : (~(~0U << __gcmGETSIZE(reg_field))))) + +/******************************************************************************* +** +** gcmFIELDMASK +** +** Get aligned field mask. +** +** ARGUMENTS: +** +** reg Name of register. +** field Name of field within register. +*/ +#define gcmFIELDMASK(reg, field) \ +(\ + __gcmALIGN(__gcmMASK(reg##_##field), reg##_##field) \ +) + +/******************************************************************************* +** +** gcmGETFIELD +** +** Extract the value of a field from specified data. +** +** ARGUMENTS: +** +** data Data value. +** reg Name of register. +** field Name of field within register. +*/ +#define gcmGETFIELD(data, reg, field) \ +(\ + ((((gctUINT32) (data)) >> __gcmSTART(reg##_##field)) \ + & __gcmMASK(reg##_##field)) \ +) + +/******************************************************************************* +** +** gcmSETFIELD +** +** Set the value of a field within specified data. +** +** ARGUMENTS: +** +** data Data value. +** reg Name of register. +** field Name of field within register. +** value Value for field. +*/ +#define gcmSETFIELD(data, reg, field, value) \ +(\ + (((gctUINT32) (data)) \ + & ~__gcmALIGN(__gcmMASK(reg##_##field), reg##_##field)) \ + | __gcmALIGN((gctUINT32) (value) \ + & __gcmMASK(reg##_##field), reg##_##field) \ +) + +/******************************************************************************* +** +** gcmSETFIELDVALUE +** +** Set the value of a field within specified data with a +** predefined value. +** +** ARGUMENTS: +** +** data Data value. +** reg Name of register. +** field Name of field within register. +** value Name of the value within the field. +*/ +#define gcmSETFIELDVALUE(data, reg, field, value) \ +(\ + (((gctUINT32) (data)) \ + & ~__gcmALIGN(__gcmMASK(reg##_##field), reg##_##field)) \ + | __gcmALIGN(reg##_##field##_##value \ + & __gcmMASK(reg##_##field), reg##_##field) \ +) + +/******************************************************************************* +** +** gcmGETMASKEDFIELDMASK +** +** Determine field mask of a masked field. +** +** ARGUMENTS: +** +** reg Name of register. +** field Name of field within register. +*/ +#define gcmGETMASKEDFIELDMASK(reg, field) \ +(\ + gcmSETFIELD(0, reg, field, ~0U) | \ + gcmSETFIELD(0, reg, MASK_ ## field, ~0U) \ +) + +/******************************************************************************* +** +** gcmSETMASKEDFIELD +** +** Set the value of a masked field with specified data. +** +** ARGUMENTS: +** +** reg Name of register. +** field Name of field within register. +** value Value for field. +*/ +#define gcmSETMASKEDFIELD(reg, field, value) \ +(\ + gcmSETFIELD (~0U, reg, field, value) & \ + gcmSETFIELDVALUE(~0U, reg, MASK_ ## field, ENABLED) \ +) + +/******************************************************************************* +** +** gcmSETMASKEDFIELDVALUE +** +** Set the value of a masked field with specified data. +** +** ARGUMENTS: +** +** reg Name of register. +** field Name of field within register. +** value Value for field. +*/ +#define gcmSETMASKEDFIELDVALUE(reg, field, value) \ +(\ + gcmSETFIELDVALUE(~0U, reg, field, value) & \ + gcmSETFIELDVALUE(~0U, reg, MASK_ ## field, ENABLED) \ +) + +/******************************************************************************* +** +** gcmVERIFYFIELDVALUE +** +** Verify if the value of a field within specified data equals a +** predefined value. +** +** ARGUMENTS: +** +** data Data value. +** reg Name of register. +** field Name of field within register. +** value Name of the value within the field. +*/ +#define gcmVERIFYFIELDVALUE(data, reg, field, value) \ +(\ + (((gctUINT32) (data)) >> __gcmSTART(reg##_##field) & \ + __gcmMASK(reg##_##field)) \ + == \ + (reg##_##field##_##value & __gcmMASK(reg##_##field)) \ +) + +/******************************************************************************* +** Bit field macros. +*/ + +#define __gcmSTARTBIT(Field) \ + (1 ? Field ) + +#define __gcmBITSIZE(Field) \ + (0 ? Field ) + +#define __gcmBITMASK(Field) \ +(\ + (1 << __gcmBITSIZE(Field)) - 1 \ +) + +#define gcmGETBITS(Value, Type, Field) \ +(\ + (((Type) (Value)) >> __gcmSTARTBIT(Field) ) \ + & \ + __gcmBITMASK(Field) \ +) + +#define gcmSETBITS(Value, Type, Field, NewValue) \ +(\ + (((Type) (Value)) \ + & ~(__gcmBITMASK(Field) << __gcmSTARTBIT(Field)) \ + ) \ + | \ + ((((Type) (NewValue)) \ + & __gcmBITMASK(Field) \ + ) << __gcmSTARTBIT(Field) \ + ) \ +) + +/******************************************************************************* +** +** gcmISINREGRANGE +** +** Verify whether the specified address is in the register range. +** +** ARGUMENTS: +** +** Address Address to be verified. +** Name Name of a register. +*/ + +#define gcmISINREGRANGE(Address, Name) \ +(\ + ((Address & (~0U << Name ## _LSB)) == (Name ## _Address >> 2)) \ +) + +/******************************************************************************\ +******************************** Ceiling Macro ******************************** +\******************************************************************************/ +#define gcmCEIL(x) (((x) - (gctUINT32)(x)) == 0 ? (gctUINT32)(x) : (gctUINT32)(x) + 1) + +/******************************************************************************\ +******************************** Min/Max Macros ******************************** +\******************************************************************************/ + +#define gcmMIN(x, y) (((x) <= (y)) ? (x) : (y)) +#define gcmMAX(x, y) (((x) >= (y)) ? (x) : (y)) +#define gcmCLAMP(x, min, max) (((x) < (min)) ? (min) : \ + ((x) > (max)) ? (max) : (x)) +#define gcmABS(x) (((x) < 0) ? -(x) : (x)) +#define gcmNEG(x) (((x) < 0) ? (x) : -(x)) + +/******************************************************************************\ +******************************** Bit Macro ******************************** +\******************************************************************************/ +#define gcmBITSET(x, bit) ((x) | (1 << (bit))) +#define gcmBITCLEAR(x, bit) ((x) & ~(1 << (bit))) +#define gcmBITTEST(x, bit) ((x) & (1 << (bit))) + +/******************************************************************************* +** +** gcmPTR2SIZE +** +** Convert a pointer to an integer value. +** +** ARGUMENTS: +** +** p Pointer value. +*/ +#define gcmPTR2SIZE(p) \ +(\ + (gctUINTPTR_T) (p) \ +) + +#define gcmPTR2INT32(p) \ +(\ + (gctUINT32)(gctUINTPTR_T) (p) \ +) + +/******************************************************************************* +** +** gcmINT2PTR +** +** Convert an integer value into a pointer. +** +** ARGUMENTS: +** +** v Integer value. +*/ + +#define gcmINT2PTR(i) \ +(\ + (gctPOINTER) (gctUINTPTR_T)(i) \ +) + +/******************************************************************************* +** +** gcmOFFSETOF +** +** Compute the byte offset of a field inside a structure. +** +** ARGUMENTS: +** +** s Structure name. +** field Field name. +*/ +#define gcmOFFSETOF(s, field) \ +(\ + gcmPTR2INT32(& (((struct s *) 0)->field)) \ +) + +#define __gcmOFFSETOF(type, field) \ +(\ + gcmPTR2INT32(& (((type *) 0)->field)) \ +) + +/******************************************************************************* +** +** gcmCONTAINEROF +** +** Get containing structure of a member. +** +** ARGUMENTS: +** +** Pointer Pointer of member. +** Type Structure name. +** Name Field name. +*/ +#define gcmCONTAINEROF(Pointer, Type, Member) \ +(\ + (Type *)((gctUINTPTR_T)Pointer - __gcmOFFSETOF(Type, Member)) \ +) + +/******************************************************************************* +** +** gcmBSWAP32 +** +** Return a value with all bytes in the 32 bit argument swapped. +*/ +#if !defined(__KERNEL__) && defined(__GNUC__) && (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ >= 40300) \ + && !defined(__VXWORKS__) +# define gcmBSWAP32(x) __builtin_bswap32(x) +#else +# define gcmBSWAP32(x) ((gctUINT32)(\ + (((gctUINT32)(x) & (gctUINT32)0x000000FFUL) << 24) | \ + (((gctUINT32)(x) & (gctUINT32)0x0000FF00UL) << 8) | \ + (((gctUINT32)(x) & (gctUINT32)0x00FF0000UL) >> 8) | \ + (((gctUINT32)(x) & (gctUINT32)0xFF000000UL) >> 24))) +#endif + +/******************************************************************************* +***** Database ****************************************************************/ + +typedef struct _gcsDATABASE_COUNTERS +{ + /* Number of currently allocated bytes. */ + gctUINT64 bytes; + + /* Maximum number of bytes allocated (memory footprint). */ + gctUINT64 maxBytes; + + /* Total number of bytes allocated. */ + gctUINT64 totalBytes; + + /* The numbers of times video memory was allocated. */ + gctUINT32 allocCount; + + /* The numbers of times video memory was freed. */ + gctUINT32 freeCount; +} +gcsDATABASE_COUNTERS; + +typedef struct _gcuDATABASE_INFO +{ + /* Counters. */ + gcsDATABASE_COUNTERS counters; + + /* Time value. */ + gctUINT64 time; +} +gcuDATABASE_INFO; + +/******************************************************************************* +***** Frame database **********************************************************/ + +/* gcsHAL_FRAME_INFO */ +typedef struct _gcsHAL_FRAME_INFO +{ + /* Current timer tick. */ + OUT gctUINT64 ticks; + + /* Bandwidth counters. */ + OUT gctUINT readBytes8[8]; + OUT gctUINT writeBytes8[8]; + + /* Counters. */ + OUT gctUINT cycles[8]; + OUT gctUINT idleCycles[8]; + OUT gctUINT mcCycles[8]; + OUT gctUINT readRequests[8]; + OUT gctUINT writeRequests[8]; + + /* 3D counters. */ + OUT gctUINT vertexCount; + OUT gctUINT primitiveCount; + OUT gctUINT rejectedPrimitives; + OUT gctUINT culledPrimitives; + OUT gctUINT clippedPrimitives; + OUT gctUINT outPrimitives; + OUT gctUINT inPrimitives; + OUT gctUINT culledQuadCount; + OUT gctUINT totalQuadCount; + OUT gctUINT quadCount; + OUT gctUINT totalPixelCount; + + /* PE counters. */ + OUT gctUINT colorKilled[8]; + OUT gctUINT colorDrawn[8]; + OUT gctUINT depthKilled[8]; + OUT gctUINT depthDrawn[8]; + + /* Shader counters. */ + OUT gctUINT shaderCycles; + OUT gctUINT vsInstructionCount; + OUT gctUINT vsTextureCount; + OUT gctUINT psInstructionCount; + OUT gctUINT psTextureCount; + + /* Texture counters. */ + OUT gctUINT bilinearRequests; + OUT gctUINT trilinearRequests; + OUT gctUINT txBytes8; + OUT gctUINT txHitCount; + OUT gctUINT txMissCount; +} +gcsHAL_FRAME_INFO; + +typedef struct _gckLINKDATA * gckLINKDATA; +struct _gckLINKDATA +{ + gctUINT32 start; + gctUINT32 end; + gctUINT32 pid; + gctUINT32 linkLow; + gctUINT32 linkHigh; +}; + +typedef struct _gckADDRESSDATA * gckADDRESSDATA; +struct _gckADDRESSDATA +{ + gctUINT32 start; + gctUINT32 end; +}; + +typedef union _gcuQUEUEDATA +{ + struct _gckLINKDATA linkData; + + struct _gckADDRESSDATA addressData; +} +gcuQUEUEDATA; + +typedef struct _gckQUEUE * gckQUEUE; +struct _gckQUEUE +{ + gcuQUEUEDATA * datas; + gctUINT32 rear; + gctUINT32 front; + gctUINT32 count; + gctUINT32 size; +}; + +#ifdef LINUX_VERSION_CODE +typedef struct list_head * gcsLISTHEAD_PTR; +typedef struct list_head gcsLISTHEAD; +#else +typedef struct _gcsLISTHEAD * gcsLISTHEAD_PTR; +typedef struct _gcsLISTHEAD +{ + gcsLISTHEAD_PTR prev; + gcsLISTHEAD_PTR next; +} +gcsLISTHEAD; +#endif + +/* + * 'Patch' here means a mechanism to let kernel side modify user space reserved + * command buffer location, or something the like, during the command buffer + * commit. + * + * Reasons of using 'patch': + * 1. Some resources/states are managed globally only in kernel side, such as + * MCFE semaphore, etc. + * 2. For the sake of security or optimization, like video memory address. + * + * Patches are arranged in arrays, each array has the same type. The 'patchArray' + * in 'gcsHAL_PATCH_LIST' pointers the concrete patch item array. + * + * NOTICE: + * Be aware of the order and values! Tables in gc_hal_user_buffer.c and + * gc_hal_kernel_command.c depend on this. + */ +/* The patch array. */ +typedef struct _gcsHAL_PATCH_LIST +{ + /* Patch type. */ + gctUINT32 type; + + /* Patch item count. */ + gctUINT32 count; + + /* + * Pointer to the patch items. + * + * gcsHAL_PATCH_VIDMEM_ADDRESS * patchArray; + * gcsHAL_PATCH_MCFE_SEMAPHORE * patchArray; + * gcsHAL_PATCH_VIDMEM_TIMESTAMP * patchArray; + * ... + */ + gctUINT64 patchArray; + + /* struct _gcsHAL_PATCH_LIST * next; */ + gctUINT64 next; +} +gcsHAL_PATCH_LIST; + +/* + * Patch a GPU address in the place (gcvHAL_PATCH_VIDMEM_ADDRESS). + * Size of a GPU address is always 32 bits. + */ +typedef struct _gcsHAL_PATCH_VIDMEM_ADDRESS +{ + /* Patch location in the command buffer. */ + gctUINT32 location; + + /* Handle of the video memory node. */ + gctUINT32 node; + + /* Address offset in the video memory node. */ + gctUINT32 offset; +} +gcsHAL_PATCH_VIDMEM_ADDRESS; + +/* + * Patch a MCFE semaphore command in the place (gcvHAL_PATCH_MCFE_SEMAPHORE). + * Size of the semaphore command is fixed at _64_ bits! + */ +typedef struct _gcsHAL_PATCH_MCFE_SEMAPHORE +{ + /* Patch location in the command buffer. */ + gctUINT32 location; + + /* semaphore direction: 1 = Send, 0 = Wait. */ + gctUINT32 sendSema; + + /* Handle of the semaphore. */ + gctUINT32 semaHandle; +} +gcsHAL_PATCH_MCFE_SEMAPHORE; + +/* + * Patch timestamp of given video memory node (gcvHAL_PATCH_VIDMEM_TIMESTAMP). + * Pure software-wise, not command relevant. + */ +typedef struct _gcsHAL_PATCH_VIDMEM_TIMESTAMP +{ + /* Handle of a video memory node. */ + gctUINT32 handle; + + gctUINT32 flag; +} +gcsHAL_PATCH_VIDMEM_TIMESTAMP; + +/* + gcvFEATURE_DATABASE_DATE_MASK + + Mask used to control which bits of chip date will be used to + query feature database, ignore release date for fpga and emulator. +*/ +#if (gcdFPGA_BUILD || defined(EMULATOR)) +# define gcvFEATURE_DATABASE_DATE_MASK (0U) +#else +# define gcvFEATURE_DATABASE_DATE_MASK (~0U) +#endif + +#if defined(__GNUC__) +#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define gcdENDIAN_BIG 1 +#else +#define gcdENDIAN_BIG 0 +#endif +#else +#define gcdENDIAN_BIG 0 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gc_hal_types_shared_h_ */ + + diff --git a/include_v6.4.3.p4.6/shared/gc_hal_vg_shared.h b/include_v6.4.3.p4.6/shared/gc_hal_vg_shared.h new file mode 100644 index 0000000..b1ea89f --- /dev/null +++ b/include_v6.4.3.p4.6/shared/gc_hal_vg_shared.h @@ -0,0 +1,224 @@ +/**************************************************************************** +* +* The MIT License (MIT) +* +* Copyright (c) 2014 - 2020 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +***************************************************************************** +* +* The GPL License (GPL) +* +* Copyright (C) 2014 - 2020 Vivante Corporation +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +***************************************************************************** +* +* Note: This software is released under dual MIT and GPL licenses. A +* recipient may use this file under the terms of either the MIT license or +* GPL License. If you wish to use only one license not the other, you can +* indicate your decision by deleting one of the above license notices in your +* version of this file. +* +*****************************************************************************/ + + +#ifndef __gc_hal_shared_vg_h_ +#define __gc_hal_shared_vg_h_ + +#if defined(__QNXNTO__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Command buffer header. */ +typedef struct _gcsCMDBUFFER * gcsCMDBUFFER_PTR; +typedef struct _gcsCMDBUFFER +{ + /* Pointer to the completion signal. */ + gcsCOMPLETION_SIGNAL_PTR completion; + + /* The user sets this to the node of the container buffer whitin which + this particular command buffer resides. The kernel sets this to the + node of the internally allocated buffer. */ + gcuVIDMEM_NODE_PTR node; + + /* Command buffer hardware address. */ + gctUINT32 address; + + /* The offset of the buffer from the beginning of the header. */ + gctUINT32 bufferOffset; + + /* Size of the area allocated for the data portion of this particular + command buffer (headers and tail reserves are excluded). */ + gctUINT32 size; + + /* Offset into the buffer [0..size]; reflects exactly how much data has + been put into the command buffer. */ + gctUINT offset; + + /* The number of command units in the buffer for the hardware to + execute. */ + gctUINT32 dataCount; + + /* MANAGED BY : user HAL (gcoBUFFER object). + USED BY : user HAL (gcoBUFFER object). + Points to the immediate next allocated command buffer. */ + gcsCMDBUFFER_PTR nextAllocated; + + /* MANAGED BY : user layers (HAL and drivers). + USED BY : kernel HAL (gcoBUFFER object). + Points to the next subbuffer if any. A family of subbuffers are chained + together and are meant to be executed inseparably as a unit. Meaning + that context switching cannot occur while a chain of subbuffers is being + executed. */ + gcsCMDBUFFER_PTR nextSubBuffer; +} +gcsCMDBUFFER; + +/* Command queue element. */ +typedef struct _gcsVGCMDQUEUE +{ + /* Pointer to the command buffer header. */ + gcsCMDBUFFER_PTR commandBuffer; + + /* Dynamic vs. static command buffer state. */ + gctBOOL dynamic; +} +gcsVGCMDQUEUE; + +/* Context map entry. */ +typedef struct _gcsVGCONTEXT_MAP +{ + /* State index. */ + gctUINT32 index; + + /* New state value. */ + gctUINT32 data; + + /* Points to the next entry in the mod list. */ + gcsVGCONTEXT_MAP_PTR next; +} +gcsVGCONTEXT_MAP; + +/* gcsVGCONTEXT structure that holds the current context. */ +typedef struct _gcsVGCONTEXT +{ + /* Context ID. */ + gctUINT64 id; + + /* State caching ebable flag. */ + gctBOOL stateCachingEnabled; + + /* Current pipe. */ + gctUINT32 currentPipe; + + /* State map/mod buffer. */ + gctUINT32 mapFirst; + gctUINT32 mapLast; + gcsVGCONTEXT_MAP_PTR mapContainer; + gcsVGCONTEXT_MAP_PTR mapPrev; + gcsVGCONTEXT_MAP_PTR mapCurr; + gcsVGCONTEXT_MAP_PTR firstPrevMap; + gcsVGCONTEXT_MAP_PTR firstCurrMap; + + /* Main context buffer. */ + gcsCMDBUFFER_PTR header; + gctUINT32_PTR buffer; + + /* Completion signal. */ + gctHANDLE process; + gctSIGNAL signal; + +#if defined(__QNXNTO__) + gctSIGNAL userSignal; + struct sigevent event; + gctINT32 rcvid; +#endif +} +gcsVGCONTEXT; + +/* User space task header. */ +typedef struct _gcsTASK * gcsTASK_PTR; +typedef struct _gcsTASK +{ + /* Pointer to the next task for the same interrupt in user space. */ + gcsTASK_PTR next; + + /* Size of the task data that immediately follows the structure. */ + gctUINT size; + + /* Task data starts here. */ + /* ... */ +} +gcsTASK; + +/* User space task master table entry. */ +typedef struct _gcsTASK_MASTER_ENTRY * gcsTASK_MASTER_ENTRY_PTR; +typedef struct _gcsTASK_MASTER_ENTRY +{ + /* Pointers to the head and to the tail of the task chain. */ + gcsTASK_PTR head; + gcsTASK_PTR tail; +} +gcsTASK_MASTER_ENTRY; + +/* User space task master table entry. */ +typedef struct _gcsTASK_MASTER_TABLE +{ + /* Table with one entry per block. */ + gcsTASK_MASTER_ENTRY table[gcvBLOCK_COUNT]; + + /* The total number of tasks sckeduled. */ + gctUINT count; + + /* The total size of event data in bytes. */ + gctUINT size; + +#if defined(__QNXNTO__) + struct sigevent event; + gctINT32 rcvid; +#endif +} +gcsTASK_MASTER_TABLE; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __gc_hal_shared_h_ */ + +