Lines Matching full:timing
59 const struct dc_crtc_timing *timing, const uint32_t kbps) in apply_128b_132b_stream_overhead() argument
66 if (!timing->flags.DSC) { in apply_128b_132b_stream_overhead()
71 bpp = dc_fixpt_div_int(bpp, timing->pix_clk_100hz / 10); in apply_128b_132b_stream_overhead()
76 overhead_factor = dc_fixpt_from_int(timing->h_addressable); in apply_128b_132b_stream_overhead()
91 const struct dc_crtc_timing *timing, in dc_bandwidth_in_kbps_from_timing() argument
97 if (timing->flags.DSC) in dc_bandwidth_in_kbps_from_timing()
98 return dc_dsc_stream_bandwidth_in_kbps(timing, in dc_bandwidth_in_kbps_from_timing()
99 timing->dsc_cfg.bits_per_pixel, in dc_bandwidth_in_kbps_from_timing()
100 timing->dsc_cfg.num_slices_h, in dc_bandwidth_in_kbps_from_timing()
101 timing->dsc_cfg.is_dp); in dc_bandwidth_in_kbps_from_timing()
103 switch (timing->display_color_depth) { in dc_bandwidth_in_kbps_from_timing()
128 kbps = timing->pix_clk_100hz / 10; in dc_bandwidth_in_kbps_from_timing()
131 if (timing->flags.Y_ONLY != 1) { in dc_bandwidth_in_kbps_from_timing()
134 if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR420) in dc_bandwidth_in_kbps_from_timing()
136 else if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) in dc_bandwidth_in_kbps_from_timing()
141 kbps = apply_128b_132b_stream_overhead(timing, kbps); in dc_bandwidth_in_kbps_from_timing()
144 timing->vic == 0 && timing->hdmi_vic == 0 && in dc_bandwidth_in_kbps_from_timing()
145 timing->frl_uncompressed_video_bandwidth_in_kbps != 0) in dc_bandwidth_in_kbps_from_timing()
146 kbps = timing->frl_uncompressed_video_bandwidth_in_kbps; in dc_bandwidth_in_kbps_from_timing()
157 const struct dc_crtc_timing *timing,
163 const struct dc_crtc_timing *timing,
183 const struct dc_crtc_timing *timing,
447 * timing's pixel clock and uncompressed bandwidth.
456 const struct dc_crtc_timing *timing, in dc_dsc_compute_bandwidth_range() argument
470 get_dsc_enc_caps(dsc, &dsc_enc_caps, timing->pix_clk_100hz); in dc_dsc_compute_bandwidth_range()
473 timing->pixel_encoding, &dsc_common_caps); in dc_dsc_compute_bandwidth_range()
476 is_dsc_possible = setup_dsc_config(dsc_sink_caps, &dsc_enc_caps, 0, timing, in dc_dsc_compute_bandwidth_range()
481 config.num_slices_h, &dsc_common_caps, timing, link_encoding, range); in dc_dsc_compute_bandwidth_range()
487 const struct dc_crtc_timing *timing) in dc_dsc_dump_encoder_caps() argument
491 get_dsc_enc_caps(dsc, &dsc_enc_caps, timing->pix_clk_100hz); in dc_dsc_dump_encoder_caps()
631 const struct dc_crtc_timing *timing, in compute_bpp_x16_from_target_bandwidth() argument
641 timing, num_slices_h, is_dp); in compute_bpp_x16_from_target_bandwidth()
646 bpp_x16 = dc_fixpt_div_int(bpp_x16, timing->pix_clk_100hz); in compute_bpp_x16_from_target_bandwidth()
653 /* Decide DSC bandwidth range based on signal, timing, specs specific and input min and max
656 * and native timing bandwidth requirement when DSC is not used.
663 const struct dc_crtc_timing *timing, in decide_dsc_bandwidth_range() argument
667 uint32_t preferred_bpp_x16 = timing->dsc_fixed_bits_per_pixel_x16; in decide_dsc_bandwidth_range()
671 /* apply signal, timing, specs and explicitly specified DSC range requirements */ in decide_dsc_bandwidth_range()
694 range->stream_kbps = dc_bandwidth_in_kbps_from_timing(timing, link_encoding); in decide_dsc_bandwidth_range()
697 range->max_kbps = dc_dsc_stream_bandwidth_in_kbps(timing, in decide_dsc_bandwidth_range()
701 range->min_kbps = dc_dsc_stream_bandwidth_in_kbps(timing, in decide_dsc_bandwidth_range()
719 const struct dc_crtc_timing *timing, in decide_dsc_target_bpp_x16() argument
729 num_slices_h, dsc_common_caps, timing, link_encoding, &range)) { in decide_dsc_target_bpp_x16()
740 target_bandwidth_kbps, timing, num_slices_h, in decide_dsc_target_bpp_x16()
896 * timing - The stream timing to fit into 'target_bandwidth_kbps' or apply
904 …* dsc_stream_bitrate_kbps = (int)ceil(timing->pix_clk_khz * dsc_cfg.bits_per…
910 const struct dc_crtc_timing *timing, in setup_dsc_config() argument
931 …dc_dsc_get_policy_for_timing(timing, options->max_target_bpp_limit_override_x16, &policy, link_enc… in setup_dsc_config()
932 pic_width = timing->h_addressable + timing->h_border_left + timing->h_border_right; in setup_dsc_config()
933 pic_height = timing->v_addressable + timing->v_border_top + timing->v_border_bottom; in setup_dsc_config()
942 …is_dsc_possible = intersect_dsc_caps(dsc_sink_caps, dsc_enc_caps, timing->pixel_encoding, &dsc_com… in setup_dsc_config()
948 // Validate available DSC settings against the mode timing in setup_dsc_config()
952 switch (timing->pixel_encoding) { in setup_dsc_config()
983 …if (branch_max_throughput_mps && dsc_div_by_10_round_up(timing->pix_clk_100hz) > branch_max_throug… in setup_dsc_config()
990 switch (timing->display_color_depth) { in setup_dsc_config()
1028 int pix_clk_per_slice_khz = dsc_div_by_10_round_up(timing->pix_clk_100hz) / min_slices_h; in setup_dsc_config()
1110 (timing->pixel_encoding == PIXEL_ENCODING_YCBCR420 && slice_height % 2 != 0))) in setup_dsc_config()
1113 …if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR420) // For the case when pic_height < dsc_polic… in setup_dsc_config()
1132 timing, in setup_dsc_config()
1159 const struct dc_crtc_timing *timing, in dc_dsc_compute_config() argument
1166 get_dsc_enc_caps(dsc, &dsc_enc_caps, timing->pix_clk_100hz); in dc_dsc_compute_config()
1170 timing, options, link_encoding, dsc_cfg); in dc_dsc_compute_config()
1174 uint32_t dc_dsc_stream_bandwidth_in_kbps(const struct dc_crtc_timing *timing, in dc_dsc_stream_bandwidth_in_kbps() argument
1182 timing, num_slices_h, is_dp); in dc_dsc_stream_bandwidth_in_kbps()
1184 actual_bandwidth_in_kbps = dc_fixpt_from_fraction(timing->pix_clk_100hz, 10); in dc_dsc_stream_bandwidth_in_kbps()
1191 const struct dc_crtc_timing *timing, in dc_dsc_stream_bandwidth_overhead_in_kbps() argument
1202 refresh_rate = dc_fixpt_from_int(timing->pix_clk_100hz); in dc_dsc_stream_bandwidth_overhead_in_kbps()
1203 refresh_rate = dc_fixpt_div_int(refresh_rate, timing->h_total); in dc_dsc_stream_bandwidth_overhead_in_kbps()
1204 refresh_rate = dc_fixpt_div_int(refresh_rate, timing->v_total); in dc_dsc_stream_bandwidth_overhead_in_kbps()
1208 max_dsc_overhead = dc_fixpt_mul_int(max_dsc_overhead, timing->v_total); in dc_dsc_stream_bandwidth_overhead_in_kbps()
1216 void dc_dsc_get_policy_for_timing(const struct dc_crtc_timing *timing, in dc_dsc_get_policy_for_timing() argument
1242 switch (timing->display_color_depth) { in dc_dsc_get_policy_for_timing()
1255 switch (timing->pixel_encoding) { in dc_dsc_get_policy_for_timing()