mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
drm/rockchip: vop2: Enforce AFBC source alignment in plane_check
Planes can only source AFBC framebuffers at multiples of 4px wide on RK3566/RK3568. Instead of clipping on all SoCs when the user asks for an unaligned source rectangle, reject the configuration in the plane's atomic check on RK3566/RK3568 only. Signed-off-by: Daniel Stone <daniels@collabora.com> [Make RK3566/RK3568 specific, reword message, s/byte/pixel/] Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patch.msgid.link/20251215-vop2-atomic-fixups-v5-5-83463c075a8d@collabora.com
This commit is contained in:
parent
dfb673c71f
commit
8cdd4d858d
|
|
@ -1076,6 +1076,13 @@ static int vop2_plane_atomic_check(struct drm_plane *plane,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (vop2->version == VOP_VERSION_RK3568 && drm_is_afbc(fb->modifier) && src_w % 4) {
|
||||
drm_dbg_kms(vop2->drm,
|
||||
"AFBC source rectangles must be 4-pixel aligned; is %d\n",
|
||||
src_w);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1236,11 +1243,9 @@ static void vop2_plane_atomic_update(struct drm_plane *plane,
|
|||
WARN_ON(src_w < 4) || WARN_ON(src_h < 4))
|
||||
return;
|
||||
|
||||
if (afbc_en && src_w % 4) {
|
||||
drm_dbg_kms(vop2->drm, "vp%d %s src_w[%d] not 4 pixel aligned\n",
|
||||
vp->id, win->data->name, src_w);
|
||||
src_w = ALIGN_DOWN(src_w, 4);
|
||||
}
|
||||
if (vop2->version == VOP_VERSION_RK3568 && drm_is_afbc(fb->modifier))
|
||||
if (WARN_ON(src_w % 4))
|
||||
return;
|
||||
|
||||
act_info = (src_h - 1) << 16 | ((src_w - 1) & 0xffff);
|
||||
dsp_info = (dsp_h - 1) << 16 | ((dsp_w - 1) & 0xffff);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user