Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 945ac789 authored by Maarten Lankhorst's avatar Maarten Lankhorst
Browse files

drm/i915: Force planar YUV coordinates to be a multiple of 2, v2.



We can't make NV12 work any other way. The scaler doesn't handle odd
coordinates well, and we will get visual corruption on the screen.

Changes since v1:
- Put the check in intel_plane_check_src_coordinates. (Ville)

Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180920102711.4184-9-maarten.lankhorst@linux.intel.com
parent ab5c60bf
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -253,13 +253,20 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
	src->y2 = (src_y + src_h) << 16;

	if (fb->format->is_yuv &&
	    fb->format->format != DRM_FORMAT_NV12 &&
	    (src_x & 1 || src_w & 1)) {
		DRM_DEBUG_KMS("src x/w (%u, %u) must be a multiple of 2 for YUV planes\n",
			      src_x, src_w);
		return -EINVAL;
	}

	if (fb->format->is_yuv &&
	    fb->format->num_planes > 1 &&
	    (src_y & 1 || src_h & 1)) {
		DRM_DEBUG_KMS("src y/h (%u, %u) must be a multiple of 2 for planar YUV planes\n",
			      src_y, src_h);
		return -EINVAL;
	}

	return 0;
}