drm/vc4: tests: Use custom plane state for mock
authorMaxime Ripard <maxime@cerno.tech>
Fri, 14 Apr 2023 09:24:37 +0000 (11:24 +0200)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:35:00 +0000 (11:35 +0000)
The current mock planes were just using the regular drm_plane_state,
while the driver expect struct vc4_plane_state that subclasses
drm_plane_state.

Hook the proper implementations of reset, duplicate_state, destroy and
atomic_check to create vc4_plane_state.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
drivers/gpu/drm/vc4/vc4_drv.h
drivers/gpu/drm/vc4/vc4_plane.c

index 62b18f5..5f21165 100644 (file)
 #include "vc4_mock.h"
 
 static const struct drm_plane_helper_funcs vc4_dummy_plane_helper_funcs = {
+       .atomic_check = vc4_plane_atomic_check,
 };
 
 static const struct drm_plane_funcs vc4_dummy_plane_funcs = {
-       .atomic_destroy_state   = drm_atomic_helper_plane_destroy_state,
-       .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
-       .reset                  = drm_atomic_helper_plane_reset,
+       .atomic_destroy_state   = vc4_plane_destroy_state,
+       .atomic_duplicate_state = vc4_plane_duplicate_state,
+       .reset                  = vc4_plane_reset,
 };
 
 static const uint32_t vc4_dummy_plane_formats[] = {
index 360150e..4d9d446 100644 (file)
@@ -1100,6 +1100,12 @@ int vc4_kms_load(struct drm_device *dev);
 struct drm_plane *vc4_plane_init(struct drm_device *dev,
                                 enum drm_plane_type type,
                                 uint32_t possible_crtcs);
+void vc4_plane_reset(struct drm_plane *plane);
+void vc4_plane_destroy_state(struct drm_plane *plane,
+                            struct drm_plane_state *state);
+struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane);
+int vc4_plane_atomic_check(struct drm_plane *plane,
+                          struct drm_atomic_state *state);
 int vc4_plane_create_additional_planes(struct drm_device *dev);
 u32 vc4_plane_write_dlist(struct drm_plane *plane, u32 __iomem *dlist);
 u32 vc4_plane_dlist_size(const struct drm_plane_state *state);
index 20e1ae3..3059b60 100644 (file)
@@ -276,7 +276,7 @@ static bool plane_enabled(struct drm_plane_state *state)
        return state->fb && !WARN_ON(!state->crtc);
 }
 
-static struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
+struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
 {
        struct vc4_plane_state *vc4_state;
        unsigned int i;
@@ -312,8 +312,8 @@ static struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane
        return &vc4_state->base;
 }
 
-static void vc4_plane_destroy_state(struct drm_plane *plane,
-                                   struct drm_plane_state *state)
+void vc4_plane_destroy_state(struct drm_plane *plane,
+                            struct drm_plane_state *state)
 {
        struct vc4_dev *vc4 = to_vc4_dev(plane->dev);
        struct vc4_hvs *hvs = vc4->hvs;
@@ -348,7 +348,7 @@ static void vc4_plane_destroy_state(struct drm_plane *plane,
 }
 
 /* Called during init to allocate the plane's atomic state. */
-static void vc4_plane_reset(struct drm_plane *plane)
+void vc4_plane_reset(struct drm_plane *plane)
 {
        struct vc4_plane_state *vc4_state;
 
@@ -2000,8 +2000,8 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
  * compute the dlist here and have all active plane dlists get updated
  * in the CRTC's flush.
  */
-static int vc4_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_atomic_state *state)
+int vc4_plane_atomic_check(struct drm_plane *plane,
+                          struct drm_atomic_state *state)
 {
        struct vc4_dev *vc4 = to_vc4_dev(plane->dev);
        struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,