msm: vidc: enable DCVS for non realtime sessions
- enable dcvs for non-realtime sessions (both encode/decode) - enable input queuing rate power scaling for non-realtime encoder Change-Id: Ie0fe2723837dbfc1cb63b693fc657f2d8df7c573 Signed-off-by: Manikanta Kanamarlapudi <quic_kmanikan@quicinc.com>
Цей коміт міститься в:
@@ -2844,12 +2844,6 @@ void msm_vidc_allow_dcvs(struct msm_vidc_inst *inst)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
allow = is_realtime_session(inst);
|
||||
if (!allow) {
|
||||
i_vpr_h(inst, "%s: non-realtime session\n", __func__);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
allow = !is_critical_priority_session(inst);
|
||||
if (!allow) {
|
||||
i_vpr_h(inst, "%s: critical priority session\n", __func__);
|
||||
|
@@ -293,7 +293,7 @@ int msm_vidc_scale_buses(struct msm_vidc_inst *inst)
|
||||
|
||||
/* scale bitrate if operating rate is larger than frame rate */
|
||||
frame_rate = msm_vidc_get_frame_rate(inst);
|
||||
operating_rate = msm_vidc_get_frame_rate(inst);
|
||||
operating_rate = inst->max_rate;
|
||||
if (frame_rate && operating_rate && operating_rate > frame_rate)
|
||||
vote_data->bitrate = (vote_data->bitrate / frame_rate) * operating_rate;
|
||||
|
||||
@@ -575,7 +575,16 @@ int msm_vidc_scale_power(struct msm_vidc_inst *inst, bool scale_buses)
|
||||
frame_rate = msm_vidc_get_frame_rate(inst);
|
||||
operating_rate = msm_vidc_get_operating_rate(inst);
|
||||
fps = max(frame_rate, operating_rate);
|
||||
if (is_decode_session(inst)) {
|
||||
/*
|
||||
* Consider input queuing rate power scaling in below scenarios
|
||||
* decoder: non-realtime and realtime as well because client
|
||||
* may not set the frame rate / operating rate and
|
||||
* we need to rely on input queue rate
|
||||
* encoder: non-realtime only, for realtime client is expected to
|
||||
* queue input buffers at the set frame rate / operating rate
|
||||
*/
|
||||
if (is_decode_session(inst) ||
|
||||
(is_encode_session(inst) && !is_realtime_session(inst))) {
|
||||
/*
|
||||
* when buffer detected fps is more than client set value by 12.5%,
|
||||
* utilize buffer detected fps to scale clock.
|
||||
|
@@ -678,7 +678,7 @@ void msm_vb2_buf_queue(struct vb2_buffer *vb2)
|
||||
}
|
||||
inst->last_qbuf_time_ns = ktime_ns;
|
||||
|
||||
if (is_decode_session(inst) && vb2->type == INPUT_MPLANE) {
|
||||
if (vb2->type == INPUT_MPLANE) {
|
||||
rc = msm_vidc_update_input_rate(inst, div_u64(ktime_ns, 1000));
|
||||
if (rc)
|
||||
goto unlock;
|
||||
|
Посилання в новій задачі
Заблокувати користувача