mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-15 04:42:02 +00:00
55 lines
2 KiB
Diff
55 lines
2 KiB
Diff
From dac616899f8701cbb982822943a8d794f81a258a Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Tue, 6 Feb 2024 17:52:49 +0000
|
|
Subject: [PATCH 0884/1002] drm/vc4: Drop planes that have 0 destination size
|
|
|
|
There is no point in trying to create a dlist entry for planes
|
|
that have a 0 crtc size, and it can also cause grief in the vc6
|
|
dlist generation as it takes width-1 and height-1, causing wrap
|
|
around.
|
|
Drop these planes.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_plane.c | 11 +++++++----
|
|
1 file changed, 7 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
|
|
index 4f9057adf438..bd021d58938d 100644
|
|
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
|
@@ -1114,7 +1114,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
|
|
width = vc4_state->src_w[0] >> 16;
|
|
height = vc4_state->src_h[0] >> 16;
|
|
|
|
- if (!width || !height) {
|
|
+ if (!width || !height || !vc4_state->crtc_w || !vc4_state->crtc_h) {
|
|
/* 0 source size probably means the plane is offscreen */
|
|
vc4_state->dlist_initialized = 1;
|
|
return 0;
|
|
@@ -1641,8 +1641,10 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
|
|
width = vc4_state->src_w[0] >> 16;
|
|
height = vc4_state->src_h[0] >> 16;
|
|
|
|
- if (!width || !height) {
|
|
- /* 0 source size probably means the plane is offscreen */
|
|
+ if (!width || !height || !vc4_state->crtc_w || !vc4_state->crtc_h) {
|
|
+ /* 0 source size probably means the plane is offscreen.
|
|
+ * 0 destination size is a redundant plane.
|
|
+ */
|
|
vc4_state->dlist_initialized = 1;
|
|
return 0;
|
|
}
|
|
@@ -2018,7 +2020,8 @@ int vc4_plane_atomic_check(struct drm_plane *plane,
|
|
if (ret)
|
|
return ret;
|
|
|
|
- if (!vc4_state->src_w[0] || !vc4_state->src_h[0])
|
|
+ if (!vc4_state->src_w[0] || !vc4_state->src_h[0] ||
|
|
+ !vc4_state->crtc_w || !vc4_state->crtc_h)
|
|
return 0;
|
|
|
|
ret = vc4_plane_allocate_lbm(new_plane_state);
|
|
--
|
|
2.44.0
|
|
|