Added G-76 support
diff --git a/hwc_names.hpp b/hwc_names.hpp
index 05f8e32..c7d8d3f 100644
--- a/hwc_names.hpp
+++ b/hwc_names.hpp
@@ -2978,6 +2978,272 @@
         "",
         ""};
 
+	static const char *const hardware_counters_mali_tNOx[] =
+			{
+					/* Performance counters for the Job Manager */
+					"",
+					"",
+					"",
+					"",
+					"TSIx_MESSAGES_SENT",
+					"TSIx_MESSAGES_RECEIVED",
+					"TSIx_GPU_ACTIVE",
+					"TSIx_IRQ_ACTIVE",
+					"TSIx_JS0_JOBS",
+					"TSIx_JS0_TASKS",
+					"TSIx_JS0_ACTIVE",
+					"",
+					"TSIx_JS0_WAIT_READ",
+					"TSIx_JS0_WAIT_ISSUE",
+					"TSIx_JS0_WAIT_DEPEND",
+					"TSIx_JS0_WAIT_FINISH",
+					"TSIx_JS1_JOBS",
+					"TSIx_JS1_TASKS",
+					"TSIx_JS1_ACTIVE",
+					"",
+					"TSIx_JS1_WAIT_READ",
+					"TSIx_JS1_WAIT_ISSUE",
+					"TSIx_JS1_WAIT_DEPEND",
+					"TSIx_JS1_WAIT_FINISH",
+					"TSIx_JS2_JOBS",
+					"TSIx_JS2_TASKS",
+					"TSIx_JS2_ACTIVE",
+					"",
+					"TSIx_JS2_WAIT_READ",
+					"TSIx_JS2_WAIT_ISSUE",
+					"TSIx_JS2_WAIT_DEPEND",
+					"TSIx_JS2_WAIT_FINISH",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+
+					/* Performance counters for the Tiler */
+					"",
+					"",
+					"",
+					"",
+					"TSIx_TILER_ACTIVE",
+					"TSIx_JOBS_PROCESSED",
+					"TSIx_TRIANGLES",
+					"TSIx_LINES",
+					"TSIx_POINTS",
+					"TSIx_FRONT_FACING",
+					"TSIx_BACK_FACING",
+					"TSIx_PRIM_VISIBLE",
+					"TSIx_PRIM_CULLED",
+					"TSIx_PRIM_CLIPPED",
+					"TSIx_PRIM_SAT_CULLED",
+					"",
+					"",
+					"TSIx_BUS_READ",
+					"",
+					"TSIx_BUS_WRITE",
+					"TSIx_LOADING_DESC",
+					"",
+					"",
+					"",
+					"",
+					"TSIx_PREFETCH_STALL",
+					"TSIx_VCACHE_HIT",
+					"TSIx_VCACHE_MISS",
+					"TSIx_VCACHE_LINE_WAIT",
+					"TSIx_VFETCH_POS_READ_WAIT",
+					"TSIx_VFETCH_VERTEX_WAIT",
+					"TSIx_VFETCH_STALL",
+					"TSIx_PRIMASSY_STALL",
+					"TSIx_BBOX_GEN_STALL",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"TSIx_BINNER_STALL",
+					"TSIx_ITER_STALL",
+					"TSIx_COMPRESS_MISS",
+					"TSIx_COMPRESS_STALL",
+					"TSIx_PCACHE_HIT",
+					"TSIx_PCACHE_MISS",
+					"TSIx_PCACHE_MISS_STALL",
+					"TSIx_PCACHE_EVICT_STALL",
+					"TSIx_PMGR_PTR_WR_STALL",
+					"TSIx_PMGR_PTR_RD_STALL",
+					"TSIx_PMGR_CMD_WR_STALL",
+					"TSIx_WRBUF_ACTIVE",
+					"TSIx_WRBUF_HIT",
+					"TSIx_WRBUF_MISS",
+					"TSIx_WRBUF_NO_FREE_LINE_STALL",
+					"TSIx_WRBUF_NO_AXI_ID_STALL",
+					"TSIx_WRBUF_AXI_STALL",
+					"",
+					"",
+					"",
+					"TSIx_UTLB_TRANS",
+					"TSIx_UTLB_TRANS_HIT",
+					"TSIx_UTLB_TRANS_STALL",
+					"TSIx_UTLB_TRANS_MISS_DELAY",
+					"TSIx_UTLB_MMU_REQ",
+
+					/* Performance counters for the Shader Core */
+					"",
+					"",
+					"",
+					"",
+					"TSIx_FRAG_ACTIVE",
+					"TSIx_FRAG_PRIMITIVES",
+					"TSIx_FRAG_PRIM_RAST",
+					"TSIx_FRAG_FPK_ACTIVE",
+					"TSIx_FRAG_STARVING",
+					"TSIx_FRAG_WARPS",
+					"TSIx_FRAG_PARTIAL_WARPS",
+					"TSIx_FRAG_QUADS_RAST",
+					"TSIx_FRAG_QUADS_EZS_TEST",
+					"TSIx_FRAG_QUADS_EZS_UPDATE",
+					"TSIx_FRAG_QUADS_EZS_KILL",
+					"TSIx_FRAG_LZS_TEST",
+					"TSIx_FRAG_LZS_KILL",
+					"",
+					"TSIx_FRAG_PTILES",
+					"TSIx_FRAG_TRANS_ELIM",
+					"TSIx_QUAD_FPK_KILLER",
+					"",
+					"TSIx_COMPUTE_ACTIVE",
+					"TSIx_COMPUTE_TASKS",
+					"TSIx_COMPUTE_WARPS",
+					"TSIx_COMPUTE_STARVING",
+					"TSIx_EXEC_CORE_ACTIVE",
+					"TSIx_EXEC_ACTIVE",
+					"TSIx_EXEC_INSTR_COUNT",
+					"TSIx_EXEC_INSTR_DIVERGED",
+					"TSIx_EXEC_INSTR_STARVING",
+					"TSIx_ARITH_INSTR_SINGLE_FMA",
+					"TSIx_ARITH_INSTR_DOUBLE",
+					"TSIx_ARITH_INSTR_MSG",
+					"TSIx_ARITH_INSTR_MSG_ONLY",
+					"TSIx_TEX_INSTR",
+					"TSIx_TEX_INSTR_MIPMAP",
+					"TSIx_TEX_INSTR_COMPRESSED",
+					"TSIx_TEX_INSTR_3D",
+					"TSIx_TEX_INSTR_TRILINEAR",
+					"TSIx_TEX_COORD_ISSUE",
+					"TSIx_TEX_COORD_STALL",
+					"TSIx_TEX_STARVE_CACHE",
+					"TSIx_TEX_STARVE_FILTER",
+					"TSIx_LS_MEM_READ_FULL",
+					"TSIx_LS_MEM_READ_SHORT",
+					"TSIx_LS_MEM_WRITE_FULL",
+					"TSIx_LS_MEM_WRITE_SHORT",
+					"TSIx_LS_MEM_ATOMIC",
+					"TSIx_VARY_INSTR",
+					"TSIx_VARY_SLOT_32",
+					"TSIx_VARY_SLOT_16",
+					"TSIx_ATTR_INSTR",
+					"TSIx_ARITH_INSTR_FP_MUL",
+					"TSIx_BEATS_RD_FTC",
+					"TSIx_BEATS_RD_FTC_EXT",
+					"TSIx_BEATS_RD_LSC",
+					"TSIx_BEATS_RD_LSC_EXT",
+					"TSIx_BEATS_RD_TEX",
+					"TSIx_BEATS_RD_TEX_EXT",
+					"TSIx_BEATS_RD_OTHER",
+					"TSIx_BEATS_WR_LSC",
+					"TSIx_BEATS_WR_TIB",
+					"",
+
+					/* Performance counters for the Memory System */
+					"",
+					"",
+					"",
+					"",
+					"TSIx_MMU_REQUESTS",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"TSIx_L2_RD_MSG_IN",
+					"TSIx_L2_RD_MSG_IN_STALL",
+					"TSIx_L2_WR_MSG_IN",
+					"TSIx_L2_WR_MSG_IN_STALL",
+					"TSIx_L2_SNP_MSG_IN",
+					"TSIx_L2_SNP_MSG_IN_STALL",
+					"TSIx_L2_RD_MSG_OUT",
+					"TSIx_L2_RD_MSG_OUT_STALL",
+					"TSIx_L2_WR_MSG_OUT",
+					"TSIx_L2_ANY_LOOKUP",
+					"TSIx_L2_READ_LOOKUP",
+					"TSIx_L2_WRITE_LOOKUP",
+					"TSIx_L2_EXT_SNOOP_LOOKUP",
+					"TSIx_L2_EXT_READ",
+					"TSIx_L2_EXT_READ_NOSNP",
+					"TSIx_L2_EXT_READ_UNIQUE",
+					"TSIx_L2_EXT_READ_BEATS",
+					"TSIx_L2_EXT_AR_STALL",
+					"TSIx_L2_EXT_AR_CNT_Q1",
+					"TSIx_L2_EXT_AR_CNT_Q2",
+					"TSIx_L2_EXT_AR_CNT_Q3",
+					"TSIx_L2_EXT_RRESP_0_127",
+					"TSIx_L2_EXT_RRESP_128_191",
+					"TSIx_L2_EXT_RRESP_192_255",
+					"TSIx_L2_EXT_RRESP_256_319",
+					"TSIx_L2_EXT_RRESP_320_383",
+					"TSIx_L2_EXT_WRITE",
+					"TSIx_L2_EXT_WRITE_NOSNP_FULL",
+					"TSIx_L2_EXT_WRITE_NOSNP_PTL",
+					"TSIx_L2_EXT_WRITE_SNP_FULL",
+					"TSIx_L2_EXT_WRITE_SNP_PTL",
+					"TSIx_L2_EXT_WRITE_BEATS",
+					"TSIx_L2_EXT_W_STALL",
+					"TSIx_L2_EXT_AW_CNT_Q1",
+					"TSIx_L2_EXT_AW_CNT_Q2",
+					"TSIx_L2_EXT_AW_CNT_Q3",
+					"TSIx_L2_EXT_SNOOP",
+					"TSIx_L2_EXT_SNOOP_STALL",
+					"TSIx_L2_EXT_SNOOP_RESP_CLEAN",
+					"TSIx_L2_EXT_SNOOP_RESP_DATA",
+					"TSIx_L2_EXT_SNOOP_INTERNAL",
+					"",
+					"",
+					"",
+					"",
+					"",
+					"",
+					""};
+
 enum
 {
 	/* Product id masks for old and new versions of the id field. NB: the T60x must be tested before anything else as it could exceptionally be
@@ -2996,7 +3262,8 @@
 	/* New style product ids */
 	PRODUCT_ID_TMIX = 0x6000,
 	PRODUCT_ID_THEX = 0x6001,
-	PRODUCT_ID_TSIX = 0x7000
+	PRODUCT_ID_TSIX = 0x7000,
+	PRODUCT_ID_TNOX = 0x7001
 };
 
 struct CounterMapping
@@ -3063,6 +3330,11 @@
             PRODUCT_ID_TSIX,
             hardware_counters_mali_tSIx,
         },
+		{
+            PRODUCT_ID_MASK_NEW,
+            PRODUCT_ID_TNOX,
+            hardware_counters_mali_tNOx,
+		},
 };
 
 enum