Am 08.09.26 um 16:47 schrieb Maxime Ripard:
The plane reset implementation creates a custom state
subclass, but only initializes a pristine state without resetting any
hardware. This is equivalent to what atomic_create_state expects.
Convert to it.

Reviewed-by: Zack Rusin <[email protected]>
Signed-off-by: Maxime Ripard <[email protected]>
---
Cc: [email protected]
Cc: [email protected]
---
  drivers/gpu/drm/vmwgfx/vmwgfx_kms.c  | 17 +++++++----------
  drivers/gpu/drm/vmwgfx/vmwgfx_kms.h  |  2 +-
  drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c  |  4 ++--
  drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c |  4 ++--
  drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c |  4 ++--
  5 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 0b470809661c..9031dccad31d 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -277,31 +277,28 @@ vmw_du_plane_duplicate_state(struct drm_plane *plane)
        return state;
  }
/**
- * vmw_du_plane_reset - creates a blank vmw plane state
+ * vmw_du_plane_create_state - creates a blank vmw plane state
   * @plane: drm plane
   *
- * Resets the atomic state for @plane by freeing the state pointer (which might
- * be NULL, e.g. at driver load time) and allocating a new empty state object.
+ * Allocates a new empty state object.
   */
-void vmw_du_plane_reset(struct drm_plane *plane)
+struct drm_plane_state *vmw_du_plane_create_state(struct drm_plane *plane)
  {
        struct vmw_plane_state *vps;
- if (plane->state)
-               vmw_du_plane_destroy_state(plane, plane->state);
-
        vps = kzalloc_obj(*vps);
-
        if (!vps) {
                DRM_ERROR("Cannot allocate vmw_plane_state\n");

I think this is another case where kzalloc already prints a warning for us.

-               return;
+               return ERR_PTR(-ENOMEM);
        }
- __drm_atomic_helper_plane_reset(plane, &vps->base);
+       __drm_atomic_helper_plane_state_init(&vps->base, plane);
+
+       return &vps->base;
  }
/**
   * vmw_du_plane_destroy_state - destroy plane state
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h 
b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
index e641f33341e6..5085d8bccf0a 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
@@ -409,11 +409,11 @@ void vmw_du_primary_plane_destroy(struct drm_plane 
*plane);
  /* Atomic Helpers */
  int vmw_du_primary_plane_atomic_check(struct drm_plane *plane,
                                      struct drm_atomic_commit *state);
  void vmw_du_plane_cleanup_fb(struct drm_plane *plane,
                             struct drm_plane_state *old_state);
-void vmw_du_plane_reset(struct drm_plane *plane);
+struct drm_plane_state *vmw_du_plane_create_state(struct drm_plane *plane);
  struct drm_plane_state *vmw_du_plane_duplicate_state(struct drm_plane *plane);
  void vmw_du_plane_destroy_state(struct drm_plane *plane,
                                struct drm_plane_state *state);
  void vmw_du_plane_unpin_surf(struct vmw_plane_state *vps);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
index a4b28341f622..b147f5db9df5 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
@@ -362,20 +362,20 @@ vmw_ldu_primary_plane_atomic_update(struct drm_plane 
*plane,
static const struct drm_plane_funcs vmw_ldu_plane_funcs = {
        .update_plane = drm_atomic_helper_update_plane,
        .disable_plane = drm_atomic_helper_disable_plane,
        .destroy = vmw_du_primary_plane_destroy,
-       .reset = vmw_du_plane_reset,
+       .atomic_create_state = vmw_du_plane_create_state,
        .atomic_duplicate_state = vmw_du_plane_duplicate_state,
        .atomic_destroy_state = vmw_du_plane_destroy_state,
  };
static const struct drm_plane_funcs vmw_ldu_cursor_funcs = {
        .update_plane = drm_atomic_helper_update_plane,
        .disable_plane = drm_atomic_helper_disable_plane,
        .destroy = vmw_cursor_plane_destroy,
-       .reset = vmw_du_plane_reset,
+       .atomic_create_state = vmw_du_plane_create_state,
        .atomic_duplicate_state = vmw_du_plane_duplicate_state,
        .atomic_destroy_state = vmw_du_plane_destroy_state,
  };
/*
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index a05f935f1841..89714d5c235b 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -754,20 +754,20 @@ vmw_sou_primary_plane_atomic_update(struct drm_plane 
*plane,
static const struct drm_plane_funcs vmw_sou_plane_funcs = {
        .update_plane = drm_atomic_helper_update_plane,
        .disable_plane = drm_atomic_helper_disable_plane,
        .destroy = vmw_du_primary_plane_destroy,
-       .reset = vmw_du_plane_reset,
+       .atomic_create_state = vmw_du_plane_create_state,
        .atomic_duplicate_state = vmw_du_plane_duplicate_state,
        .atomic_destroy_state = vmw_du_plane_destroy_state,
  };
static const struct drm_plane_funcs vmw_sou_cursor_funcs = {
        .update_plane = drm_atomic_helper_update_plane,
        .disable_plane = drm_atomic_helper_disable_plane,
        .destroy = vmw_cursor_plane_destroy,
-       .reset = vmw_du_plane_reset,
+       .atomic_create_state = vmw_du_plane_create_state,
        .atomic_duplicate_state = vmw_du_plane_duplicate_state,
        .atomic_destroy_state = vmw_du_plane_destroy_state,
  };
/*
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index 939da0e11dbb..cbf55084110a 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -1472,20 +1472,20 @@ vmw_stdu_crtc_atomic_flush(struct drm_crtc *crtc,
static const struct drm_plane_funcs vmw_stdu_plane_funcs = {
        .update_plane = drm_atomic_helper_update_plane,
        .disable_plane = drm_atomic_helper_disable_plane,
        .destroy = vmw_du_primary_plane_destroy,
-       .reset = vmw_du_plane_reset,
+       .atomic_create_state = vmw_du_plane_create_state,
        .atomic_duplicate_state = vmw_du_plane_duplicate_state,
        .atomic_destroy_state = vmw_du_plane_destroy_state,
  };
static const struct drm_plane_funcs vmw_stdu_cursor_funcs = {
        .update_plane = drm_atomic_helper_update_plane,
        .disable_plane = drm_atomic_helper_disable_plane,
        .destroy = vmw_cursor_plane_destroy,
-       .reset = vmw_du_plane_reset,
+       .atomic_create_state = vmw_du_plane_create_state,
        .atomic_duplicate_state = vmw_du_plane_duplicate_state,
        .atomic_destroy_state = vmw_du_plane_destroy_state,
  };

--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, (HRB 36809, AG Nürnberg)


Reply via email to