mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 01:59:02 +00:00
20ea6adbf1
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
From d04c74e3f30be64b0e14d7ed2b6088f91ac6ea64 Mon Sep 17 00:00:00 2001
|
|
From: Maxime Ripard <maxime@cerno.tech>
|
|
Date: Wed, 16 Mar 2022 16:44:45 +0100
|
|
Subject: [PATCH] drm/vc4: plane: Prevent async update if we don't have
|
|
a dlist
|
|
|
|
The vc4 planes are setup in hardware by creating a hardware descriptor
|
|
in a dedicated RAM. As part of the process to setup a plane in KMS, we
|
|
thus need to allocate some part of that dedicated RAM to store our
|
|
descriptor there.
|
|
|
|
The async update path will just reuse the descriptor already allocated
|
|
for that plane and will modify it directly in RAM to match whatever has
|
|
been asked for.
|
|
|
|
In order to do that, it will compare the descriptor for the old plane
|
|
state and the new plane state, will make sure they fit in the same size,
|
|
and check that only the position or buffer address have changed.
|
|
|
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_plane.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
|
@@ -1429,6 +1429,10 @@ static int vc4_plane_atomic_async_check(
|
|
|
|
old_vc4_state = to_vc4_plane_state(plane->state);
|
|
new_vc4_state = to_vc4_plane_state(new_plane_state);
|
|
+
|
|
+ if (!new_vc4_state->hw_dlist)
|
|
+ return -EINVAL;
|
|
+
|
|
if (old_vc4_state->dlist_count != new_vc4_state->dlist_count ||
|
|
old_vc4_state->pos0_offset != new_vc4_state->pos0_offset ||
|
|
old_vc4_state->pos2_offset != new_vc4_state->pos2_offset ||
|