Lines Matching refs:vdsc_cfg

283 int drm_dsc_compute_rc_parameters(struct drm_dsc_config *vdsc_cfg)  in drm_dsc_compute_rc_parameters()  argument
293 if (vdsc_cfg->native_420 || vdsc_cfg->native_422) { in drm_dsc_compute_rc_parameters()
295 groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width / 2, in drm_dsc_compute_rc_parameters()
299 vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width / 2 * in drm_dsc_compute_rc_parameters()
300 vdsc_cfg->bits_per_pixel, in drm_dsc_compute_rc_parameters()
304 groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width, in drm_dsc_compute_rc_parameters()
308 vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width * in drm_dsc_compute_rc_parameters()
309 vdsc_cfg->bits_per_pixel, in drm_dsc_compute_rc_parameters()
313 if (vdsc_cfg->convert_rgb) in drm_dsc_compute_rc_parameters()
314 num_extra_mux_bits = 3 * (vdsc_cfg->mux_word_size + in drm_dsc_compute_rc_parameters()
315 (4 * vdsc_cfg->bits_per_component + 4) in drm_dsc_compute_rc_parameters()
317 else if (vdsc_cfg->native_422) in drm_dsc_compute_rc_parameters()
318 num_extra_mux_bits = 4 * vdsc_cfg->mux_word_size + in drm_dsc_compute_rc_parameters()
319 (4 * vdsc_cfg->bits_per_component + 4) + in drm_dsc_compute_rc_parameters()
320 3 * (4 * vdsc_cfg->bits_per_component) - 2; in drm_dsc_compute_rc_parameters()
322 num_extra_mux_bits = 3 * vdsc_cfg->mux_word_size + in drm_dsc_compute_rc_parameters()
323 (4 * vdsc_cfg->bits_per_component + 4) + in drm_dsc_compute_rc_parameters()
324 2 * (4 * vdsc_cfg->bits_per_component) - 2; in drm_dsc_compute_rc_parameters()
326 slice_bits = 8 * vdsc_cfg->slice_chunk_size * vdsc_cfg->slice_height; in drm_dsc_compute_rc_parameters()
329 ((slice_bits - num_extra_mux_bits) % vdsc_cfg->mux_word_size)) in drm_dsc_compute_rc_parameters()
332 if (groups_per_line < vdsc_cfg->initial_scale_value - 8) in drm_dsc_compute_rc_parameters()
333 vdsc_cfg->initial_scale_value = groups_per_line + 8; in drm_dsc_compute_rc_parameters()
336 if (vdsc_cfg->initial_scale_value > 8) in drm_dsc_compute_rc_parameters()
337 vdsc_cfg->scale_decrement_interval = groups_per_line / in drm_dsc_compute_rc_parameters()
338 (vdsc_cfg->initial_scale_value - 8); in drm_dsc_compute_rc_parameters()
340 vdsc_cfg->scale_decrement_interval = DSC_SCALE_DECREMENT_INTERVAL_MAX; in drm_dsc_compute_rc_parameters()
342 vdsc_cfg->final_offset = vdsc_cfg->rc_model_size - in drm_dsc_compute_rc_parameters()
343 (vdsc_cfg->initial_xmit_delay * in drm_dsc_compute_rc_parameters()
344 vdsc_cfg->bits_per_pixel + 8) / 16 + num_extra_mux_bits; in drm_dsc_compute_rc_parameters()
346 if (vdsc_cfg->final_offset >= vdsc_cfg->rc_model_size) { in drm_dsc_compute_rc_parameters()
351 final_scale = (vdsc_cfg->rc_model_size * 8) / in drm_dsc_compute_rc_parameters()
352 (vdsc_cfg->rc_model_size - vdsc_cfg->final_offset); in drm_dsc_compute_rc_parameters()
353 if (vdsc_cfg->slice_height > 1) in drm_dsc_compute_rc_parameters()
359 vdsc_cfg->nfl_bpg_offset = DIV_ROUND_UP((vdsc_cfg->first_line_bpg_offset << 11), in drm_dsc_compute_rc_parameters()
360 (vdsc_cfg->slice_height - 1)); in drm_dsc_compute_rc_parameters()
362 vdsc_cfg->nfl_bpg_offset = 0; in drm_dsc_compute_rc_parameters()
365 groups_total = groups_per_line * vdsc_cfg->slice_height; in drm_dsc_compute_rc_parameters()
368 vdsc_cfg->slice_bpg_offset = DIV_ROUND_UP(((vdsc_cfg->rc_model_size - in drm_dsc_compute_rc_parameters()
369 vdsc_cfg->initial_offset + in drm_dsc_compute_rc_parameters()
380 vdsc_cfg->scale_increment_interval = in drm_dsc_compute_rc_parameters()
381 (vdsc_cfg->final_offset * (1 << 11)) / in drm_dsc_compute_rc_parameters()
382 ((vdsc_cfg->nfl_bpg_offset + in drm_dsc_compute_rc_parameters()
383 vdsc_cfg->slice_bpg_offset) * in drm_dsc_compute_rc_parameters()
390 vdsc_cfg->scale_increment_interval = 0; in drm_dsc_compute_rc_parameters()
398 rbs_min = vdsc_cfg->rc_model_size - vdsc_cfg->initial_offset + in drm_dsc_compute_rc_parameters()
399 DIV_ROUND_UP(vdsc_cfg->initial_xmit_delay * in drm_dsc_compute_rc_parameters()
400 vdsc_cfg->bits_per_pixel, 16) + in drm_dsc_compute_rc_parameters()
401 groups_per_line * vdsc_cfg->first_line_bpg_offset; in drm_dsc_compute_rc_parameters()
403 hrd_delay = DIV_ROUND_UP((rbs_min * 16), vdsc_cfg->bits_per_pixel); in drm_dsc_compute_rc_parameters()
404 vdsc_cfg->rc_bits = (hrd_delay * vdsc_cfg->bits_per_pixel) / 16; in drm_dsc_compute_rc_parameters()
405 vdsc_cfg->initial_dec_delay = hrd_delay - vdsc_cfg->initial_xmit_delay; in drm_dsc_compute_rc_parameters()