Prechádzať zdrojové kódy

Merge "video: driver: AV1 power changes"

qctecmdr 3 rokov pred
rodič
commit
2d2e07aee9

+ 4 - 3
driver/platform/kalama/src/msm_vidc_kalama.c

@@ -259,13 +259,14 @@ static struct msm_platform_inst_capability instance_data_kalama[] = {
 
 	{MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25},
 	{MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25},
-	{MB_CYCLES_VSP, DEC, VP9, 60, 60, 1, 60},
+	{MB_CYCLES_VSP, DEC, VP9|AV1, 60, 60, 1, 60},
 	{MB_CYCLES_VPP, ENC, CODECS_ALL, 675, 675, 1, 675},
 	{MB_CYCLES_VPP, DEC, CODECS_ALL, 200, 200, 1, 200},
 	{MB_CYCLES_LP, ENC, CODECS_ALL, 320, 320, 1, 320},
 	{MB_CYCLES_LP, DEC, CODECS_ALL, 200, 200, 1, 200},
-	{MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 326389, 326389, 1, 326389},
-	{MB_CYCLES_FW_VPP, ENC|DEC, CODECS_ALL, 44156, 44156, 1, 44156},
+	{MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 489583, 489583, 1, 489583},
+	{MB_CYCLES_FW_VPP, ENC, CODECS_ALL, 48405, 48405, 1, 48405},
+	{MB_CYCLES_FW_VPP, DEC, CODECS_ALL, 66234, 66234, 1, 66234},
 
 	{SECURE_MODE, ENC|DEC, H264|HEVC|VP9|AV1,
 		V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,

+ 19 - 3
driver/variant/iris3/src/msm_vidc_power_iris3.c

@@ -137,9 +137,16 @@ u64 msm_vidc_calc_freq_iris3(struct msm_vidc_inst *inst, u32 data_size)
 			inst->capabilities->cap[PIPE].value;
 		/* 21 / 20 is minimum overhead factor */
 		vpp_cycles += max(vpp_cycles / 20, fw_vpp_cycles);
-		/* 1.059 is multi-pipe overhead */
-		if (inst->capabilities->cap[PIPE].value > 1)
-			vpp_cycles += div_u64(vpp_cycles * 59, 1000);
+		/* 1.059 is multi-pipe overhead 
+		 * 1.410 AV1 RECOMMENDED TILE 1080P_V2XH1, UHD_V2X2, 8KUHD_V8X2
+		 *       av1d_commer_tile_enable=0
+		 */
+		if (inst->capabilities->cap[PIPE].value > 1) {
+			if (inst->codec == MSM_VIDC_AV1)
+				vpp_cycles += div_u64(vpp_cycles * 410, 1000);
+			else
+				vpp_cycles += div_u64(vpp_cycles * 59, 1000);
+		}
 
 		/* VSP */
 		base_cycles = inst->has_bframe ?
@@ -290,6 +297,15 @@ static u64 __calculate_decoder(struct vidc_bus_vote_data *d)
 	collocated_bytes_per_lcu = lcu_size == 16 ? 16 :
 				lcu_size == 32 ? 64 : 256;
 
+	if (d->codec == MSM_VIDC_AV1) {
+		collocated_bytes_per_lcu = 4 * 512; /* lcu_size = 128 */
+		if (lcu_size == 32) {
+			collocated_bytes_per_lcu = 4 * 512 / (128 * 128 / 32 / 32);
+		} else if (lcu_size == 64) {
+			collocated_bytes_per_lcu = 4 * 512 / (128 * 128 / 64 / 64);
+		}
+	}
+
 	dpb_factor = FP(1, 50, 100);
 	dpb_write_factor = FP(1, 5, 100);