video: driver: ring buffer enhancements

1. use max of operating and frame rate for fps
2. vpp_cycles is considered close to frequency
   corner if vpp_min_freq is greater than max
   required frequency

Change-Id: I9dc995ca16e4eeae18497a8648dfef64e16dfbc2
Signed-off-by: Deepa Guthyappa Madivalara <quic_dmadival@quicinc.com>
这个提交包含在:
Deepa Guthyappa Madivalara
2023-04-26 15:43:34 -07:00
父节点 fdc186d299
当前提交 def6b6328b
修改 3 个文件,包含 54 行新增30 行删除

查看文件

@@ -380,8 +380,9 @@ static bool is_vpp_cycles_close_to_freq_corner(struct msm_vidc_core *core,
closest_freq_upper_corner =
core->resource->freq_set.freq_tbl[0].freq;
/* return true if vpp_min_freq is more than max frequency */
if (vpp_min_freq > closest_freq_upper_corner)
return false;
return true;
/* get the closest freq corner for vpp_min_freq */
for (i = 0; i < core->resource->freq_set.count; i++) {
@@ -1360,12 +1361,15 @@ int msm_vidc_ring_buf_count_iris33(struct msm_vidc_inst *inst, u32 data_size)
/* check if vpp_min_freq is exceeding closest freq corner margin */
if (is_vpp_cycles_close_to_freq_corner(core,
codec_output.vpp_min_freq))
/* enables ring buffer */
codec_output.vpp_min_freq)) {
/* enable ring buffer */
i_vpr_h(inst,
"%s: vpp_min_freq %d, ring_buffer_count %d\n",
__func__, codec_output.vpp_min_freq, MAX_ENC_RING_BUF_COUNT);
inst->capabilities[ENC_RING_BUFFER_COUNT].value =
MAX_ENC_RING_BUF_COUNT;
else
} else {
inst->capabilities[ENC_RING_BUFFER_COUNT].value = 0;
}
return 0;
}