summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStanislav Lisovskiy <stanislav.lisovskiy@intel.com>2023-07-19 13:48:33 +0300
committerStanislav Lisovskiy <stanislav.lisovskiy@intel.com>2023-07-20 11:08:14 +0300
commita86c75dcdd0374444514c1e40411177ff7afe9bd (patch)
treee95921ce7036180861b284c7539ccbfe89cd9d70
parentc5741c5c1122b7944d9af185c83ab7056153259e (diff)
downloadlinux-stable-a86c75dcdd0374444514c1e40411177ff7afe9bd.tar.gz
linux-stable-a86c75dcdd0374444514c1e40411177ff7afe9bd.tar.bz2
linux-stable-a86c75dcdd0374444514c1e40411177ff7afe9bd.zip
drm/i915: Start using plane scale factor for relative data rate
BSpec clearly instructs us to use plane scale factor when calculating relative data rate to be used when allocating DDB blocks for each plane. For some reason we use scale factor for data_rate calculation, which is used for BW calculations, however we are not using it for DDB calculations. So lets fix it as described in BSpec 68907. Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Reviewed-by: Garg, Nemesa <nemesa.garg@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230719104833.25366-1-stanislav.lisovskiy@intel.com
-rw-r--r--drivers/gpu/drm/i915/display/intel_atomic_plane.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index 7d9578ebae55..60a492e186ab 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -212,6 +212,7 @@ intel_plane_relative_data_rate(const struct intel_crtc_state *crtc_state,
struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
const struct drm_framebuffer *fb = plane_state->hw.fb;
int width, height;
+ unsigned int rel_data_rate;
if (plane->id == PLANE_CURSOR)
return 0;
@@ -241,7 +242,11 @@ intel_plane_relative_data_rate(const struct intel_crtc_state *crtc_state,
height /= 2;
}
- return width * height * fb->format->cpp[color_plane];
+ rel_data_rate = width * height * fb->format->cpp[color_plane];
+
+ return intel_adjusted_rate(&plane_state->uapi.src,
+ &plane_state->uapi.dst,
+ rel_data_rate);
}
int intel_plane_calc_min_cdclk(struct intel_atomic_state *state,