Commit f0ea2909 authored by Suraj Kandpal's avatar Suraj Kandpal
Browse files

drm/i915/xe3lpd: Increase resolution for plane to support 6k



DISPLAY_VER >= 30 onwards CRTC can now support 6k resolution.
Increase pipe and plane max width and height to reflect this
increase in resolution.

--v2
-Take care of the subsampling scenario sooner rather than later [Matt]

--v3
-Take care of the joined pipe limits too [Ankit/Matt]

--v4
-Leave the joiner limits check here as is and handle them later [Ville]

Signed-off-by: default avatarArun R Murthy <arun.r.murthy@intel.com>
Signed-off-by: default avatarSuraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: default avatarAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241028074333.182041-2-suraj.kandpal@intel.com
parent a0e45f70
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -8450,7 +8450,10 @@ intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
	 * plane so let's not advertize modes that are
	 * too big for that.
	 */
	if (DISPLAY_VER(dev_priv) >= 11) {
	if (DISPLAY_VER(dev_priv) >= 30) {
		plane_width_max = 6144 * num_joined_pipes;
		plane_height_max = 4800;
	} else if (DISPLAY_VER(dev_priv) >= 11) {
		plane_width_max = 5120 * num_joined_pipes;
		plane_height_max = 4320;
	} else {
+15 −1
Original line number Diff line number Diff line
@@ -431,6 +431,16 @@ static int icl_plane_min_width(const struct drm_framebuffer *fb,
	}
}

static int xe3_plane_max_width(const struct drm_framebuffer *fb,
			       int color_plane,
			       unsigned int rotation)
{
	if (intel_format_info_is_yuv_semiplanar(fb->format, fb->modifier))
		return 4096;
	else
		return 6144;
}

static int icl_hdr_plane_max_width(const struct drm_framebuffer *fb,
				   int color_plane,
				   unsigned int rotation)
@@ -2573,7 +2583,11 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,

	intel_fbc_add_plane(skl_plane_fbc(dev_priv, pipe, plane_id), plane);

	if (DISPLAY_VER(dev_priv) >= 11) {
	if (DISPLAY_VER(dev_priv) >= 30) {
		plane->max_width = xe3_plane_max_width;
		plane->max_height = icl_plane_max_height;
		plane->min_cdclk = icl_plane_min_cdclk;
	} else if (DISPLAY_VER(dev_priv) >= 11) {
		plane->min_width = icl_plane_min_width;
		if (icl_is_hdr_plane(dev_priv, plane_id))
			plane->max_width = icl_hdr_plane_max_width;