drm/i915: Start using plane scale factor for relative data rate
authorStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Wed, 19 Jul 2023 10:48:33 +0000 (13:48 +0300)
committerStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Thu, 20 Jul 2023 08:08:14 +0000 (11:08 +0300)
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
drivers/gpu/drm/i915/display/intel_atomic_plane.c

index 7d9578e..60a492e 100644 (file)
@@ -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,