mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
drm/i915: Fix fractional bpp handling in intel_link_bw_reduce_bpp()
Convert crtc_state->pipe_bpp to U6.4 format as expected by the rest of
the function.
Fixes: 59a266f068
("drm/i915/display: Store compressed bpp in U6.4 format")
Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Cc: Sui Jingfeng <suijingfeng@loongson.cn>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231114141012.603960-1-imre.deak@intel.com
This commit is contained in:
parent
ef75c25e8f
commit
7c8601aea3
1 changed files with 7 additions and 7 deletions
|
@ -55,11 +55,11 @@ int intel_link_bw_reduce_bpp(struct intel_atomic_state *state,
|
|||
struct drm_i915_private *i915 = to_i915(state->base.dev);
|
||||
enum pipe max_bpp_pipe = INVALID_PIPE;
|
||||
struct intel_crtc *crtc;
|
||||
int max_bpp = 0;
|
||||
int max_bpp_x16 = 0;
|
||||
|
||||
for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, pipe_mask) {
|
||||
struct intel_crtc_state *crtc_state;
|
||||
int link_bpp;
|
||||
int link_bpp_x16;
|
||||
|
||||
if (limits->bpp_limit_reached_pipes & BIT(crtc->pipe))
|
||||
continue;
|
||||
|
@ -70,7 +70,7 @@ int intel_link_bw_reduce_bpp(struct intel_atomic_state *state,
|
|||
return PTR_ERR(crtc_state);
|
||||
|
||||
if (crtc_state->dsc.compression_enable)
|
||||
link_bpp = crtc_state->dsc.compressed_bpp_x16;
|
||||
link_bpp_x16 = crtc_state->dsc.compressed_bpp_x16;
|
||||
else
|
||||
/*
|
||||
* TODO: for YUV420 the actual link bpp is only half
|
||||
|
@ -78,10 +78,10 @@ int intel_link_bw_reduce_bpp(struct intel_atomic_state *state,
|
|||
* is based on the pipe bpp value, set the actual link bpp
|
||||
* limit here once the MST BW allocation is fixed.
|
||||
*/
|
||||
link_bpp = crtc_state->pipe_bpp;
|
||||
link_bpp_x16 = to_bpp_x16(crtc_state->pipe_bpp);
|
||||
|
||||
if (link_bpp > max_bpp) {
|
||||
max_bpp = link_bpp;
|
||||
if (link_bpp_x16 > max_bpp_x16) {
|
||||
max_bpp_x16 = link_bpp_x16;
|
||||
max_bpp_pipe = crtc->pipe;
|
||||
}
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ int intel_link_bw_reduce_bpp(struct intel_atomic_state *state,
|
|||
if (max_bpp_pipe == INVALID_PIPE)
|
||||
return -ENOSPC;
|
||||
|
||||
limits->max_bpp_x16[max_bpp_pipe] = to_bpp_x16(max_bpp) - 1;
|
||||
limits->max_bpp_x16[max_bpp_pipe] = max_bpp_x16 - 1;
|
||||
|
||||
return intel_modeset_pipes_in_mask_early(state, reason,
|
||||
BIT(max_bpp_pipe));
|
||||
|
|
Loading…
Reference in a new issue