kernelEntry->commandBuffer = CommandBuffer;
kernelEntry->handler = _FreeKernelCommandBuffer;
- /* Unlock the current queue. */
+ /* Lock the current queue. */
gcmkERR_BREAK(_UnlockCurrentQueue(
Command, 1
));
gceSTATUS
gckVGCOMMAND_Commit(
- IN gckVGCOMMAND Command,
- IN gcsVGCONTEXT_PTR Context,
- IN gcsVGCMDQUEUE_PTR Queue,
- IN gctUINT EntryCount,
- IN gcsTASK_MASTER_TABLE_PTR TaskTable
- )
+ IN gckVGCOMMAND Command,
+ IN gcsVGCONTEXT_PTR Context,
+ IN gcsVGCMDQUEUE_PTR Queue,
+ IN gctUINT EntryCount,
+ IN gcsTASK_MASTER_TABLE_PTR TaskTable
+ )
{
/*
- The first buffer is executed through a direct gckVGHARDWARE_Execute call,
- therefore only an update is needed after the execution is over. All
- consequent buffers need to be executed upon the first update call from
- the FE interrupt handler.
- */
+ The first buffer is executed through a direct gckVGHARDWARE_Execute call,
+ therefore only an update is needed after the execution is over. All
+ consequent buffers need to be executed upon the first update call from
+ the FE interrupt handler.
+ */
static gcsQUEUE_UPDATE_CONTROL _dynamicBuffer[] =
{
{
}
};
- gceSTATUS status, last;
- struct _gcsTASK_MASTER_TABLE _TaskTable;
+ gceSTATUS status;
+ struct _gcsTASK_MASTER_TABLE _TaskTable;
#ifdef __QNXNTO__
gcsVGCONTEXT_PTR userContext = gcvNULL;
gctBOOL userContextMapped = gcvFALSE;
struct _gcsVGCONTEXT _Context;
gctBOOL needCopy = gcvFALSE;
+
+ gctBOOL haveFETasks;
+ gctUINT queueSize = 0;
+ gcsVGCMDQUEUE_PTR mappedQueue = gcvNULL;
+ gcsVGCMDQUEUE_PTR userEntry = gcvNULL;
+ gcsKERNEL_CMDQUEUE_PTR kernelEntry;
+ gcsQUEUE_UPDATE_CONTROL_PTR queueControl;
+ gctUINT currentLength;
+ gctUINT queueLength;
+ gctUINT entriesQueued;
+ gctUINT8_PTR previousEnd;
+ gctBOOL previousDynamic;
+ gctBOOL previousExecuted;
+ gctUINT controlIndex;
+ gctINT pid;
+ gctBOOL powerSemaphoreAcquired = gcvFALSE;
+ gctBOOL commitMutexAcquired = gcvFALSE;
+ gctBOOL queueMutexAcquired = gcvFALSE;
+
+
+
gcmkHEADER_ARG("Command=%p Context=%p Queue=%p EntryCount=0x%x TaskTable=%p",
Command, Context, Queue, EntryCount, TaskTable);
gcmkVERIFY_ARGUMENT(Queue != gcvNULL);
gcmkVERIFY_ARGUMENT(EntryCount > 1);
- do
- {
- gctBOOL haveFETasks;
- gctUINT queueSize = 0;
- gcsVGCMDQUEUE_PTR mappedQueue=gcvNULL;
- gcsVGCMDQUEUE_PTR userEntry=gcvNULL;
- gcsKERNEL_CMDQUEUE_PTR kernelEntry;
- gcsQUEUE_UPDATE_CONTROL_PTR queueControl;
- gctUINT currentLength;
- gctUINT queueLength;
- gctUINT entriesQueued;
- gctUINT8_PTR previousEnd;
- gctBOOL previousDynamic;
- gctBOOL previousExecuted;
- gctUINT controlIndex;
- gctINT pid;
+
#ifdef __QNXNTO__
- /* Map the context into the kernel space. */
- userContext = Context;
+ /* Map the context into the kernel space. */
+ userContext = Context;
- gcmkERR_BREAK(gckOS_MapUserPointer(
- Command->os,
- userContext,
- gcmSIZEOF(*userContext),
- &pointer));
+ gcmkONERROR(gckOS_MapUserPointer(
+ Command->os,
+ userContext,
+ gcmSIZEOF(*userContext),
+ &pointer));
- Context = pointer;
+ Context = pointer;
- userContextMapped = gcvTRUE;
+ userContextMapped = gcvTRUE;
- /* Map the taskTable into the kernel space. */
- userTaskTable = TaskTable;
+ /* Map the taskTable into the kernel space. */
+ userTaskTable = TaskTable;
- gcmkERR_BREAK(gckOS_MapUserPointer(
- Command->os,
- userTaskTable,
- gcmSIZEOF(*userTaskTable),
- &pointer));
+ gcmkONERROR(gckOS_MapUserPointer(
+ Command->os,
+ userTaskTable,
+ gcmSIZEOF(*userTaskTable),
+ &pointer));
- TaskTable = pointer;
+ TaskTable = pointer;
- userTaskTableMapped = gcvTRUE;
+ userTaskTableMapped = gcvTRUE;
- /* Update the signal info. */
- TaskTable->coid = Context->coid;
- TaskTable->rcvid = Context->rcvid;
+ /* Update the signal info. */
+ TaskTable->coid = Context->coid;
+ TaskTable->rcvid = Context->rcvid;
#endif
- gcmkERR_BREAK(gckOS_GetProcessID((gctUINT32_PTR)&pid));
- gcmkERR_BREAK(gckOS_QueryNeedCopy(Command->os, pid, &needCopy));
- if(needCopy)
- {
- gcmkERR_BREAK(gckOS_CopyFromUserData(
- Command->os,
- &_TaskTable,
- TaskTable,
- gcmSIZEOF(struct _gcsTASK_MASTER_TABLE)
- ));
- TaskTable = &_TaskTable;
- /* Determine whether there are FE tasks to be performed. */
- gcmkERR_BREAK(gckOS_CopyFromUserData(
- Command->os,
- &_Context,
- Context,
- gcmSIZEOF(struct _gcsVGCONTEXT)
- ));
- Context = &_Context;
- }
-
- gcmkERR_BREAK(gckVGHARDWARE_SetPowerState(
- Command->hardware, gcvPOWER_ON_AUTO
+ gcmkONERROR(gckOS_GetProcessID((gctUINT32_PTR)&pid));
+ gcmkONERROR(gckOS_QueryNeedCopy(Command->os, pid, &needCopy));
+ if(needCopy)
+ {
+ gcmkONERROR(gckOS_CopyFromUserData(
+ Command->os,
+ &_TaskTable,
+ TaskTable,
+ gcmSIZEOF(struct _gcsTASK_MASTER_TABLE)
));
-
- /* Acquire the power semaphore. */
- gcmkERR_BREAK(gckOS_AcquireSemaphore(
- Command->os, Command->powerSemaphore
+ TaskTable = &_TaskTable;
+ /* Determine whether there are FE tasks to be performed. */
+ gcmkONERROR(gckOS_CopyFromUserData(
+ Command->os,
+ &_Context,
+ Context,
+ gcmSIZEOF(struct _gcsVGCONTEXT)
));
+ Context = &_Context;
+ }
+
+ gcmkONERROR(gckVGHARDWARE_SetPowerState(
+ Command->hardware, gcvPOWER_ON_AUTO
+ ));
- /* Acquire the commit mutex. */
- status = gckOS_AcquireMutex(
+ /* Acquire the power semaphore. */
+ gcmkONERROR(gckOS_AcquireSemaphore(
+ Command->os, Command->powerSemaphore
+ ));
+ powerSemaphoreAcquired = gcvTRUE;
+ /* Acquire the mutex. */
+ gcmkONERROR(gckOS_AcquireMutex(
Command->os,
Command->commitMutex,
gcvINFINITE
- );
+ ));
+ commitMutexAcquired = gcvTRUE;
- if (gcmIS_ERROR(status))
- {
- gcmkVERIFY_OK(gckOS_ReleaseSemaphore(
- Command->os, Command->powerSemaphore));
- break;
- }
- do
- {
- gcmkERR_BREAK(_FlushMMU(Command));
+ gcmkONERROR(_FlushMMU(Command));
- /* Assign a context ID if not yet assigned. */
- if (Context->id == 0)
- {
- /* Assign the next context number. */
- Context->id = ++ Command->contextCounter;
- /* See if we overflowed. */
- if (Command->contextCounter == 0)
- {
- /* We actually did overflow, wow... */
- status = gcvSTATUS_OUT_OF_RESOURCES;
- break;
- }
- }
+ /* Assign a context ID if not yet assigned. */
+ if (Context->id == 0)
+ {
+ /* Assign the next context number. */
+ Context->id = ++ Command->contextCounter;
+ /* See if we overflowed. */
+ if (Command->contextCounter == 0)
+ {
+ /* We actually did overflow, wow... */
+ gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
+ }
+ }
- /* The first entry in the queue is always the context buffer.
- Verify whether the user context is the same as the current
- context and if that's the case, skip the first entry. */
- if (Context->id == Command->currentContext)
- {
- /* Same context as before, skip the first entry. */
- EntryCount -= 1;
- Queue += 1;
+ /* The first entry in the queue is always the context buffer.
+ Verify whether the user context is the same as the current
+ context and if that's the case, skip the first entry. */
+ if (Context->id == Command->currentContext)
+ {
+ /* Same context as before, skip the first entry. */
+ EntryCount -= 1;
+ Queue += 1;
- /* Set the signal to avoid user waiting. */
+ /* Set the signal to avoid user waiting. */
#ifdef __QNXNTO__
- gcmkERR_BREAK(gckOS_UserSignal(
- Command->os,
- Context->userSignal,
- Context->rcvid,
- Context->coid
- ));
+ gcmkONERROR(gckOS_UserSignal(
+ Command->os,
+ Context->userSignal,
+ Context->rcvid,
+ Context->coid
+ ));
#else
- gcmkERR_BREAK(gckOS_UserSignal(
- Command->os, Context->signal, Context->process
- ));
+ gcmkONERROR(gckOS_UserSignal(
+ Command->os, Context->signal, Context->process
+ ));
#endif
- }
- else
- {
- /* Different user context - keep the first entry.
- Set the user context as the current one. */
- Command->currentContext = Context->id;
- }
+ }
+ else
+ {
+ /* Different user context - keep the first entry.
+ Set the user context as the current one. */
+ Command->currentContext = Context->id;
+ }
+
+ /* Reset pointers. */
+ queueControl = gcvNULL;
+ previousEnd = gcvNULL;
+
+ haveFETasks = (TaskTable->table[gcvBLOCK_COMMAND].head != gcvNULL);
+
+ /* Determine the size of the queue. */
+ queueSize = EntryCount * gcmSIZEOF(gcsVGCMDQUEUE);
+ if(needCopy)
+ {
+ gctPOINTER pointer = gcvNULL;
+ gcmkONERROR(gckOS_Allocate(
+ Command->os,
+ queueSize,
+ &pointer
+ ));
+ userEntry = pointer;
+ mappedQueue = pointer;
+ gcmkONERROR(gckOS_CopyFromUserData(
+ Command->os,
+ userEntry,
+ Queue,
+ queueSize
+ ));
+ }
+ else
+ {
+ /* Map the command queue into the kernel space. */
+ gcmkONERROR(gckOS_MapUserPointer(
+ Command->os,
+ Queue,
+ queueSize,
+ (gctPOINTER *) &mappedQueue
+ ));
+ userEntry = mappedQueue;
+ }
+ /* Set the first entry. */
- /* Reset pointers. */
- queueControl = gcvNULL;
- previousEnd = gcvNULL;
+ /* Process the command queue. */
+ while (EntryCount)
+ {
+ /* Lock the current queue. */
+ gcmkONERROR(_LockCurrentQueue(
+ Command, &kernelEntry, &queueLength
+ ));
+ queueMutexAcquired = gcvTRUE;
+
+ /* Determine the number of entries to process. */
+ currentLength = (queueLength < EntryCount)
+ ? queueLength
+ : EntryCount;
+
+ /* Update the number of the entries left to process. */
+ EntryCount -= currentLength;
+
+ /* Reset previous flags. */
+ previousDynamic = gcvFALSE;
+ previousExecuted = gcvFALSE;
- haveFETasks = (TaskTable->table[gcvBLOCK_COMMAND].head != gcvNULL);
+ /* Set the initial control index. */
+ controlIndex = 0;
- /* Determine the size of the queue. */
- queueSize = EntryCount * gcmSIZEOF(gcsVGCMDQUEUE);
- if(needCopy)
+ /* Process entries. */
+ for (entriesQueued = 0; entriesQueued < currentLength; entriesQueued += 1)
+ {
+ /* Get the kernel pointer to the command buffer header. */
+ gcsCMDBUFFER_PTR commandBuffer = gcvNULL;
+ gcmkONERROR(_ConvertUserCommandBufferPointer(
+ Command,
+ userEntry->commandBuffer,
+ &commandBuffer
+ ));
+
+ /* Is it a dynamic command buffer? */
+ if (userEntry->dynamic)
{
- gctPOINTER pointer = gcvNULL;
- gcmkERR_BREAK(gckOS_Allocate(
- Command->os,
- queueSize,
- &pointer
- ));
- userEntry = pointer;
- mappedQueue = pointer;
- gcmkERR_BREAK(gckOS_CopyFromUserData(
- Command->os,
- userEntry,
- Queue,
- queueSize
- ));
+ /* Select dynamic buffer control functions. */
+ queueControl = &_dynamicBuffer[controlIndex];
}
+
+ /* No, a static command buffer. */
else
{
- /* Map the command queue into the kernel space. */
- gcmkERR_BREAK(gckOS_MapUserPointer(
- Command->os,
- Queue,
- queueSize,
- (gctPOINTER *) &mappedQueue
- ));
- userEntry = mappedQueue;
+ /* Select static buffer control functions. */
+ queueControl = &_staticBuffer[controlIndex];
}
- /* Set the first entry. */
- /* Process the command queue. */
- while (EntryCount)
+ /* Set the command buffer pointer to the entry. */
+ kernelEntry->commandBuffer = commandBuffer;
+
+ /* If the previous entry was a dynamic command buffer,
+ link it to the current. */
+ if (previousDynamic)
{
- /* Lock the current queue. */
- gcmkERR_BREAK(_LockCurrentQueue(
- Command, &kernelEntry, &queueLength
+ gcmkONERROR(gckVGCOMMAND_FetchCommand(
+ Command,
+ previousEnd,
+ commandBuffer->address,
+ commandBuffer->dataCount,
+ gcvNULL
));
- /* Determine the number of entries to process. */
- currentLength = (queueLength < EntryCount)
- ? queueLength
- : EntryCount;
+ /* The buffer will be auto-executed, only need to
+ update it after it has been executed. */
+ kernelEntry->handler = queueControl->update;
- /* Reset previous flags. */
- previousDynamic = gcvFALSE;
+ /* The buffer is only being updated. */
previousExecuted = gcvFALSE;
+ }
+ else
+ {
+ /* Set the buffer up for execution. */
+ kernelEntry->handler = queueControl->execute;
- /* Set the initial control index. */
- controlIndex = 0;
-
- /* Process entries. */
- for (entriesQueued = 0; entriesQueued < currentLength; entriesQueued += 1)
- {
- /* Get the kernel pointer to the command buffer header. */
- gcsCMDBUFFER_PTR commandBuffer = gcvNULL;
- gcmkONERROR(_ConvertUserCommandBufferPointer(
- Command,
- userEntry->commandBuffer,
- &commandBuffer
- ));
-
- /* Is it a dynamic command buffer? */
- if (userEntry->dynamic)
- {
- /* Select dynamic buffer control functions. */
- queueControl = &_dynamicBuffer[controlIndex];
- }
-
- /* No, a static command buffer. */
- else
- {
- /* Select static buffer control functions. */
- queueControl = &_staticBuffer[controlIndex];
- }
-
- /* Set the command buffer pointer to the entry. */
- kernelEntry->commandBuffer = commandBuffer;
-
- /* If the previous entry was a dynamic command buffer,
- link it to the current. */
- if (previousDynamic)
- {
- gcmkONERROR(gckVGCOMMAND_FetchCommand(
- Command,
- previousEnd,
- commandBuffer->address,
- commandBuffer->dataCount,
- gcvNULL
- ));
-
- /* The buffer will be auto-executed, only need to
- update it after it has been executed. */
- kernelEntry->handler = queueControl->update;
+ /* The buffer is being updated. */
+ previousExecuted = gcvTRUE;
+ }
- /* The buffer is only being updated. */
- previousExecuted = gcvFALSE;
- }
- else
- {
- /* Set the buffer up for execution. */
- kernelEntry->handler = queueControl->execute;
+ /* The current buffer's END command becomes the last END. */
+ previousEnd
+ = ((gctUINT8_PTR) commandBuffer)
+ + commandBuffer->bufferOffset
+ + commandBuffer->dataCount * Command->info.commandAlignment
+ - Command->info.staticTailSize;
- /* The buffer is being updated. */
- previousExecuted = gcvTRUE;
- }
+ /* Update the last entry info. */
+ previousDynamic = userEntry->dynamic;
- /* The current buffer's END command becomes the last END. */
- previousEnd
- = ((gctUINT8_PTR) commandBuffer)
- + commandBuffer->bufferOffset
- + commandBuffer->dataCount * Command->info.commandAlignment
- - Command->info.staticTailSize;
+ /* Advance entries. */
+ userEntry ++;
+ kernelEntry ++;
- /* Update the last entry info. */
- previousDynamic = userEntry->dynamic;
+ /* Update the control index. */
+ controlIndex = 1;
+ }
- /* Advance entries. */
- userEntry ++;
- kernelEntry ++;
+ /* If the previous entry was a dynamic command buffer,
+ terminate it with an END. */
+ if (previousDynamic)
+ {
+ gcmkONERROR(gckVGCOMMAND_EndCommand(
+ Command,
+ previousEnd,
+ Command->info.feBufferInt,
+ gcvNULL
+ ));
+ }
- /* Update the control index. */
- controlIndex = 1;
+ /* Last buffer? */
+ if (EntryCount == 0)
+ {
+ /* Modify the last command buffer's routines to handle
+ tasks if any.*/
+ if (haveFETasks && controlIndex == 1)
+ {
+ if (previousExecuted)
+ {
+ kernelEntry[-1].handler = queueControl->lastExecute;
}
-
- /* If the previous entry was a dynamic command buffer,
- terminate it with an END. */
- if (previousDynamic)
+ else
{
- gcmkONERROR(gckVGCOMMAND_EndCommand(
- Command,
- previousEnd,
- Command->info.feBufferInt,
- gcvNULL
- ));
+ kernelEntry[-1].handler = queueControl->lastUpdate;
}
+ }
- /* Last buffer? */
- if (EntryCount - entriesQueued == 0)
- {
- /* Modify the last command buffer's routines to handle
- tasks if any.*/
- if (haveFETasks && controlIndex == 1)
- {
- if (previousExecuted)
- {
- kernelEntry[-1].handler = queueControl->lastExecute;
- }
- else
- {
- kernelEntry[-1].handler = queueControl->lastUpdate;
- }
- }
+ /* Release the mutex. */
+ gcmkONERROR(gckOS_ReleaseMutex(
+ Command->os,
+ Command->queueMutex
+ ));
+ queueMutexAcquired = gcvFALSE;
+ /* Add a semaphore stall after PE EVENT (Before the END). */
+ {
+ gctUINT32_PTR memory = (gctUINT32_PTR)(previousEnd - 0x10);
+ *memory++ = 0x10000007;
+ *memory++ = 0;
- /* Release the queue mutex. */
- gcmkERR_BREAK(gckOS_ReleaseMutex(
- Command->os,
- Command->queueMutex
- ));
- /* Add a semaphore stall after PE EVENT (Before the END). */
- {
- gctUINT32_PTR memory = (gctUINT32_PTR)(previousEnd - 0x10);
- *memory++ = 0x10000007;
- *memory++ = 0;
+ *memory++ = 0x20000007;
+ *memory++ = 0;
+ }
+ /* Schedule tasks. */
+ gcmkONERROR(_ScheduleTasks(Command, TaskTable, previousEnd - 0x10));
- *memory++ = 0x20000007;
- *memory++ = 0;
- }
- /* Schedule tasks. */
- gcmkERR_BREAK(_ScheduleTasks(Command, TaskTable, previousEnd - 0x10));
+ /* Acquire the mutex. */
+ gcmkONERROR(gckOS_AcquireMutex(
+ Command->os,
+ Command->queueMutex,
+ gcvINFINITE
+ ));
+ queueMutexAcquired = gcvTRUE;
+ }
- /* Acquire back the queue mutex. */
- gcmkERR_BREAK(gckOS_AcquireMutex(
- Command->os,
- Command->queueMutex,
- gcvINFINITE
- ));
- }
+ /* Unkock and schedule the current queue for execution. */
+ gcmkONERROR(_UnlockCurrentQueue(
+ Command, currentLength
+ ));
+ queueMutexAcquired = gcvFALSE;
+ }
OnError:
- /* Update the number of the entries left to process. */
- EntryCount -= entriesQueued;
-
- /* Unlock and schedule the current queue for execution. */
- gcmkCHECK_STATUS(_UnlockCurrentQueue(
- Command, entriesQueued
- ));
- /* Report the status error if any. */
- gcmkERR_BREAK(status);
- }
+ if (queueMutexAcquired)
+ {
+ gcmkVERIFY_OK(gckOS_ReleaseMutex(
+ Command->os,
+ Command->queueMutex
+ ));
+ }
+ if (mappedQueue)
+ {
+ if(!needCopy)
+ {
+ /* Unmap the user command buffer. */
+ gcmkVERIFY_OK(gckOS_UnmapUserPointer(
+ Command->os,
+ Queue,
+ queueSize,
+ mappedQueue
+ ));
}
- while (gcvFALSE);
-
- if (mappedQueue)
+ else
{
- if(!needCopy)
- {
- /* Unmap the user command buffer. */
- gcmkCHECK_STATUS(gckOS_UnmapUserPointer(
- Command->os,
- Queue,
- queueSize,
- mappedQueue
- ));
- }
- else
- {
- gcmkCHECK_STATUS(gckOS_Free(Command->os, mappedQueue));
- }
+ gcmkVERIFY_OK(gckOS_Free(Command->os, mappedQueue));
}
-
- /* Release the commit mutex. */
- gcmkCHECK_STATUS(gckOS_ReleaseMutex(
+ }
+ /* Release the mutex. */
+ if (commitMutexAcquired)
+ {
+ gcmkVERIFY_OK(gckOS_ReleaseMutex(
Command->os,
Command->commitMutex
));
-
- /* Release the power semaphore. */
+ }
+ if (powerSemaphoreAcquired)
+ {
gcmkVERIFY_OK(gckOS_ReleaseSemaphore(
Command->os, Command->powerSemaphore));
}
- while (gcvFALSE);
#ifdef __QNXNTO__
if (userContextMapped)
{
*****************************************************************************/
-/*Auto created on 2021-03-05 22:36*/
+/*Auto created on 2021-04-14 20:50*/
#ifndef _gc_feature_database_h_
#define _gc_feature_database_h_
gctUINT32 RESULT_WINDOW_MAX_SIZE;
gctUINT32 ClusterAliveMask;
gctUINT32 G2D_DEC400_MINOR;
+ gctUINT32 PS_INSTRUCTION_COUNT;
gctUINT32 NNMadPerCore;
gctUINT32 NNCoreCount;
gctUINT32 NN_ACTIVE_CORE_COUNT;
gctUINT32 NN_CLUSTER_NUM_FOR_POWER_CONTROL;
gctUINT32 NN_IN_LINES_PER_CYCLE;
gctUINT32 VIP_CLUSTER_COUNT;
+ gctUINT32 NN_MP_INTER_CONNECT_RING_COUNT;
gctUINT32 REG_FastClear:1;
gctUINT32 REG_SpecialAntiAliasing:1;
gctUINT32 REG_Pipe3D:1;
gctUINT32 IMGLD_WIDTH_LT16_FIX:1;
gctUINT32 TX_FILTER_ROUND_FIX:1;
gctUINT32 SH_FP32_FMA_SUPPORT:1;
+ gctUINT32 TX_ETC2_COMPRESSION:1;
gctUINT32 VG_TS_CULLING:1;
gctUINT32 VG_FP25:1;
gctUINT32 VG_AYUV_INPUT_OUTPUT:1;
gctUINT32 NN_TRANSPOSE_PHASE2:1;
gctUINT32 NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD:1;
gctUINT32 NN_CONV_CORE_BYPASS: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_JD_DIRECT_MODE_FIX:1;
gctUINT32 NN_KERNEL_DIRECT_WRONG_PUSH_FIX:1;
gctUINT32 HI_DEFAULT_ENABLE_REORDER_FIX:1;
+ gctUINT32 V83_INTILESIZE_1X1_10BITS_FIX:1;
gctUINT32 NN_INTERLEVE8:1;
gctUINT32 NN_FP16_ALU:1;
gctUINT32 NN_INT16_ALU:1;
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x1, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x0, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x0, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_REG_RSS8 */
0x1, /* gcFEATURE_BIT_REG_MSAACoherencyCheck */
0x1, /* gcFEATURE_BIT_REG_Halti5 */
- 0x1, /* gcFEATURE_BIT_REG_Evis */
+ 0x0, /* gcFEATURE_BIT_REG_Evis */
0x0, /* gcFEATURE_BIT_REG_BltEngine */
0x0, /* gcFEATURE_BIT_REG_BugFixes23 */
0x0, /* gcFEATURE_BIT_REG_BugFixes24 */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
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 */
+ 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 */
- 0x1, /* gcFEATURE_BIT_EVIS_VX2 */
+ 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_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x10, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x3, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x3, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x0, /* gcFEATURE_VALUE_NNMadPerCore */
0x0, /* gcFEATURE_VALUE_NNCoreCount */
0x0, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x0, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x0, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x0, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x1, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x0, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x0, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x0, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x0, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x0, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x40, /* gcFEATURE_VALUE_NNMadPerCore */
0x6, /* gcFEATURE_VALUE_NNCoreCount */
0x6, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x1, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x3, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x1, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x1, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x1, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x1, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x1, /* gcFEATURE_BIT_NN_INT16_ALU */
0x100, /* gcFEATURE_VALUE_RESULT_WINDOW_MAX_SIZE */
0x0, /* gcFEATURE_VALUE_ClusterAliveMask */
0x0, /* gcFEATURE_VALUE_G2D_DEC400_MINOR */
+ 0x0, /* gcFEATURE_VALUE_PS_INSTRUCTION_COUNT */
0x40, /* gcFEATURE_VALUE_NNMadPerCore */
0x6, /* gcFEATURE_VALUE_NNCoreCount */
0x6, /* gcFEATURE_VALUE_NN_ACTIVE_CORE_COUNT */
0x1, /* gcFEATURE_VALUE_NN_CLUSTER_NUM_FOR_POWER_CONTROL */
0x3, /* gcFEATURE_VALUE_NN_IN_LINES_PER_CYCLE */
0x1, /* gcFEATURE_VALUE_VIP_CLUSTER_COUNT */
+ 0x0, /* gcFEATURE_VALUE_NN_MP_INTER_CONNECT_RING_COUNT */
0x0, /* gcFEATURE_BIT_REG_FastClear */
0x0, /* gcFEATURE_BIT_REG_SpecialAntiAliasing */
0x1, /* gcFEATURE_BIT_REG_Pipe3D */
0x1, /* gcFEATURE_BIT_IMGLD_WIDTH_LT16_FIX */
0x0, /* gcFEATURE_BIT_TX_FILTER_ROUND_FIX */
0x0, /* gcFEATURE_BIT_SH_FP32_FMA_SUPPORT */
+ 0x0, /* gcFEATURE_BIT_TX_ETC2_COMPRESSION */
0x0, /* gcFEATURE_BIT_VG_TS_CULLING */
0x0, /* gcFEATURE_BIT_VG_FP25 */
0x0, /* gcFEATURE_BIT_VG_AYUV_INPUT_OUTPUT */
0x0, /* gcFEATURE_BIT_NN_TRANSPOSE_PHASE2 */
0x0, /* gcFEATURE_BIT_NN_TENSOR_ADD_FIELD_MOVE_TO_EXT_CMD */
0x0, /* gcFEATURE_BIT_NN_CONV_CORE_BYPASS */
+ 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_JD_DIRECT_MODE_FIX */
0x1, /* gcFEATURE_BIT_NN_KERNEL_DIRECT_WRONG_PUSH_FIX */
0x1, /* gcFEATURE_BIT_HI_DEFAULT_ENABLE_REORDER_FIX */
+ 0x1, /* gcFEATURE_BIT_V83_INTILESIZE_1X1_10BITS_FIX */
0x0, /* gcFEATURE_BIT_NN_INTERLEVE8 */
0x0, /* gcFEATURE_BIT_NN_FP16_ALU */
0x1, /* gcFEATURE_BIT_NN_INT16_ALU */