mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-27 03:49:57 -04:00
drm/amd/display: take max dsc stream bandwidth overhead into account
[why] As hardware team suggested that we need to add a max dsc bw overhead into existing stream bandwidth when DSC is used. The formula as below: max_dsc_bw_overhead = v_addressable * slice_count * 256 bit * pixel clock / v_total / h_total effective stream bandwidth = pixel clock * bpp stream bandwidth = effective stream bandwidth + dsc stream overhead Signed-off-by: Wenjing Liu <wenjing.liu@amd.com> Reviewed-by: Eric Bernstein <Eric.Bernstein@amd.com> Acked-by: Wayne Lin <waynelin@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
abf1f863e0
commit
642d3a2bf2
@@ -284,26 +284,6 @@ static u32 _do_bytes_per_pixel_calc(int slice_width, u16 drm_bpp,
|
||||
return bytes_per_pixel;
|
||||
}
|
||||
|
||||
static u32 _do_calc_dsc_bpp_x16(u32 stream_bandwidth_kbps, u32 pix_clk_100hz,
|
||||
u32 bpp_increment_div)
|
||||
{
|
||||
u32 dsc_target_bpp_x16;
|
||||
float f_dsc_target_bpp;
|
||||
float f_stream_bandwidth_100bps;
|
||||
// bpp_increment_div is actually precision
|
||||
u32 precision = bpp_increment_div;
|
||||
|
||||
f_stream_bandwidth_100bps = stream_bandwidth_kbps * 10.0f;
|
||||
f_dsc_target_bpp = f_stream_bandwidth_100bps / pix_clk_100hz;
|
||||
|
||||
// Round down to the nearest precision stop to bring it into DSC spec
|
||||
// range
|
||||
dsc_target_bpp_x16 = (u32)(f_dsc_target_bpp * precision);
|
||||
dsc_target_bpp_x16 = (dsc_target_bpp_x16 * 16) / precision;
|
||||
|
||||
return dsc_target_bpp_x16;
|
||||
}
|
||||
|
||||
/**
|
||||
* calc_rc_params - reads the user's cmdline mode
|
||||
* @rc: DC internal DSC parameters
|
||||
@@ -367,26 +347,3 @@ u32 calc_dsc_bytes_per_pixel(const struct drm_dsc_config *pps)
|
||||
DC_FP_END();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* calc_dsc_bpp_x16 - retrieve the dsc bits per pixel
|
||||
* @stream_bandwidth_kbps:
|
||||
* @pix_clk_100hz:
|
||||
* @bpp_increment_div:
|
||||
*
|
||||
* Calculate the total of bits per pixel for DSC configuration.
|
||||
*
|
||||
* @note This calculation requires float point operation, most of it executes
|
||||
* under kernel_fpu_{begin,end}.
|
||||
*/
|
||||
u32 calc_dsc_bpp_x16(u32 stream_bandwidth_kbps, u32 pix_clk_100hz,
|
||||
u32 bpp_increment_div)
|
||||
{
|
||||
u32 dsc_bpp;
|
||||
|
||||
DC_FP_START();
|
||||
dsc_bpp = _do_calc_dsc_bpp_x16(stream_bandwidth_kbps, pix_clk_100hz,
|
||||
bpp_increment_div);
|
||||
DC_FP_END();
|
||||
return dsc_bpp;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user