On Mon, Aug 31, 2026 at 12:20 PM Maxime Ripard <[email protected]> wrote:
>
> 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.
>
> 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");
> -               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,
>  };
>
>
>
> --
> 2.55.0
>

LGTM. Thanks.

Reviewed-by: Zack Rusin <[email protected]>

z

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to