msm: vidc: Simplify DCVS algorithm
Unify Encoder and Decoder DCVS by removing complex buffer
tracking logic. DCVS is based on simple logic now.
- More YUV buffers with Venus --> Venus is Late -->
Increase Venus clock.
- Less YUV buffers with Venus --> Venus is not late -->
Decrease Venus clock.
CRs-Fixed: 2012520
Change-Id: I47870747dd73e20e1be1fd156ed8ae89ca4b824a
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
diff --git a/drivers/media/platform/msm/vidc/msm_vidc_common.c b/drivers/media/platform/msm/vidc/msm_vidc_common.c
index 3a79f9a..4aaa525 100644
--- a/drivers/media/platform/msm/vidc/msm_vidc_common.c
+++ b/drivers/media/platform/msm/vidc/msm_vidc_common.c
@@ -1525,9 +1525,6 @@
inst->prop.width[OUTPUT_PORT] = event_notify->width;
}
- if (inst->session_type == MSM_VIDC_DECODER)
- msm_dcvs_init_load(inst);
-
rc = msm_vidc_check_session_supported(inst);
if (!rc) {
seq_changed_event.type = event;
@@ -3850,7 +3847,6 @@
data->timestamp, data->flags);
msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_FTB);
}
-
}
/*
@@ -4723,6 +4719,10 @@
return 0;
}
+ // Finish FLUSH As Soon As Possible.
+ inst->dcvs.buffer_counter = 0;
+ msm_comm_scale_clocks_and_bus(inst);
+
msm_comm_flush_dynamic_buffers(inst);
if (inst->state == MSM_VIDC_CORE_INVALID ||
@@ -5058,9 +5058,6 @@
return -ENOTSUPP;
}
- if (!rc)
- msm_dcvs_try_enable(inst);
-
if (!rc) {
if (inst->prop.width[CAPTURE_PORT] < capability->width.min ||
inst->prop.height[CAPTURE_PORT] <
@@ -5377,10 +5374,7 @@
if (rc)
dprintk(VIDC_WARN,
"Failed to set frame rate %d\n", rc);
- } else {
- msm_dcvs_init_load(inst);
}
- msm_dcvs_try_enable(inst);
}
exit:
return rc;