All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm: Pass the full state to connectors atomic functions
@ 2020-11-05 17:30 Maxime Ripard
  2020-11-05 17:56 ` Harry Wentland
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Maxime Ripard @ 2020-11-05 17:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst,
	Thomas Zimmermann, Maxime Ripard
  Cc: Haneen Mohammed, Rodrigo Siqueira, Leo Li, Melissa Wen,
	dri-devel, Rodrigo Vivi, Alex Deucher, Christian König,
	Ben Skeggs

The current atomic helpers have either their object state being passed as
an argument or the full atomic state.

The former is the pattern that was done at first, before switching to the
latter for new hooks or when it was needed.

Now that the CRTCs have been converted, let's move forward with the
connectors to provide a consistent interface.

The conversion was done using the coccinelle script below, and built tested
on all the drivers.

Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
Cc: Melissa Wen <melissa.srw@gmail.com>
Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c |  5 ++++-
 drivers/gpu/drm/drm_atomic_helper.c                 |  8 ++++----
 drivers/gpu/drm/i915/display/intel_dp_mst.c         |  7 +++++--
 drivers/gpu/drm/nouveau/dispnv50/disp.c             |  5 ++++-
 drivers/gpu/drm/vc4/vc4_txp.c                       |  4 +++-
 drivers/gpu/drm/vkms/vkms_writeback.c               |  7 +++++--
 include/drm/drm_modeset_helper_vtables.h            | 13 ++++++-------
 7 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
index eee19edeeee5..f346cc74387f 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -24,6 +24,7 @@
  */
 
 #include <linux/version.h>
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_dp_mst_helper.h>
 #include <drm/drm_dp_helper.h>
@@ -252,8 +253,10 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector)
 
 static struct drm_encoder *
 dm_mst_atomic_best_encoder(struct drm_connector *connector,
-			   struct drm_connector_state *connector_state)
+			   struct drm_atomic_state *state)
 {
+	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
+											 connector);
 	struct drm_device *dev = connector->dev;
 	struct amdgpu_device *adev = drm_to_adev(dev);
 	struct amdgpu_crtc *acrtc = to_amdgpu_crtc(connector_state->crtc);
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index ddd0e3239150..ba1507036f26 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -122,7 +122,8 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
 			continue;
 
 		if (funcs->atomic_best_encoder)
-			new_encoder = funcs->atomic_best_encoder(connector, new_conn_state);
+			new_encoder = funcs->atomic_best_encoder(connector,
+								 state);
 		else if (funcs->best_encoder)
 			new_encoder = funcs->best_encoder(connector);
 		else
@@ -345,8 +346,7 @@ update_connector_routing(struct drm_atomic_state *state,
 	funcs = connector->helper_private;
 
 	if (funcs->atomic_best_encoder)
-		new_encoder = funcs->atomic_best_encoder(connector,
-							 new_connector_state);
+		new_encoder = funcs->atomic_best_encoder(connector, state);
 	else if (funcs->best_encoder)
 		new_encoder = funcs->best_encoder(connector);
 	else
@@ -1313,7 +1313,7 @@ static void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
 
 		if (new_conn_state->writeback_job && new_conn_state->writeback_job->fb) {
 			WARN_ON(connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK);
-			funcs->atomic_commit(connector, new_conn_state);
+			funcs->atomic_commit(connector, old_state);
 		}
 	}
 }
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 64d885539e94..b879a0622ada 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -23,6 +23,7 @@
  *
  */
 
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_probe_helper.h>
@@ -706,11 +707,13 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
 }
 
 static struct drm_encoder *intel_mst_atomic_best_encoder(struct drm_connector *connector,
-							 struct drm_connector_state *state)
+							 struct drm_atomic_state *state)
 {
+	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
+											 connector);
 	struct intel_connector *intel_connector = to_intel_connector(connector);
 	struct intel_dp *intel_dp = intel_connector->mst_port;
-	struct intel_crtc *crtc = to_intel_crtc(state->crtc);
+	struct intel_crtc *crtc = to_intel_crtc(connector_state->crtc);
 
 	return &intel_dp->mst_encoders[crtc->pipe]->base.base;
 }
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index b111fe24a06b..911c2cbe6aa3 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -32,6 +32,7 @@
 #include <linux/hdmi.h>
 #include <linux/component.h>
 
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_dp_helper.h>
 #include <drm/drm_edid.h>
@@ -1161,8 +1162,10 @@ nv50_msto_new(struct drm_device *dev, struct nv50_head *head, int id)
 
 static struct drm_encoder *
 nv50_mstc_atomic_best_encoder(struct drm_connector *connector,
-			      struct drm_connector_state *connector_state)
+			      struct drm_atomic_state *state)
 {
+	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
+											 connector);
 	struct nv50_mstc *mstc = nv50_mstc(connector);
 	struct drm_crtc *crtc = connector_state->crtc;
 
diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
index 34612edcabbd..8aa5220885f4 100644
--- a/drivers/gpu/drm/vc4/vc4_txp.c
+++ b/drivers/gpu/drm/vc4/vc4_txp.c
@@ -273,8 +273,10 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
 }
 
 static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
-					struct drm_connector_state *conn_state)
+					struct drm_atomic_state *state)
 {
+	struct drm_connector_state *conn_state = drm_atomic_get_new_connector_state(state,
+										    conn);
 	struct vc4_txp *txp = connector_to_vc4_txp(conn);
 	struct drm_gem_cma_object *gem;
 	struct drm_display_mode *mode;
diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
index 26b903926872..cafdc8463541 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0+
 
 #include "vkms_drv.h"
+#include <drm/drm_atomic.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_writeback.h>
 #include <drm/drm_probe_helper.h>
@@ -99,8 +100,10 @@ static void vkms_wb_cleanup_job(struct drm_writeback_connector *connector,
 }
 
 static void vkms_wb_atomic_commit(struct drm_connector *conn,
-				  struct drm_connector_state *state)
+				  struct drm_atomic_state *state)
 {
+	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
+											 conn);
 	struct vkms_device *vkmsdev = drm_device_to_vkms_device(conn->dev);
 	struct vkms_output *output = &vkmsdev->output;
 	struct drm_writeback_connector *wb_conn = &output->wb_connector;
@@ -116,7 +119,7 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
 	crtc_state->active_writeback = conn_state->writeback_job->priv;
 	crtc_state->wb_pending = true;
 	spin_unlock_irq(&output->composer_lock);
-	drm_writeback_queue_job(wb_conn, state);
+	drm_writeback_queue_job(wb_conn, connector_state);
 }
 
 static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = {
diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h
index f2de050085be..16ff3fa148f5 100644
--- a/include/drm/drm_modeset_helper_vtables.h
+++ b/include/drm/drm_modeset_helper_vtables.h
@@ -1044,9 +1044,8 @@ struct drm_connector_helper_funcs {
 	 * NOTE:
 	 *
 	 * This function is called in the check phase of an atomic update. The
-	 * driver is not allowed to change anything outside of the free-standing
-	 * state objects passed-in or assembled in the overall &drm_atomic_state
-	 * update tracking structure.
+	 * driver is not allowed to change anything outside of the
+	 * &drm_atomic_state update tracking structure passed in.
 	 *
 	 * RETURNS:
 	 *
@@ -1056,7 +1055,7 @@ struct drm_connector_helper_funcs {
 	 * for this.
 	 */
 	struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
-						   struct drm_connector_state *connector_state);
+						   struct drm_atomic_state *state);
 
 	/**
 	 * @atomic_check:
@@ -1097,15 +1096,15 @@ struct drm_connector_helper_funcs {
 	 *
 	 * This hook is to be used by drivers implementing writeback connectors
 	 * that need a point when to commit the writeback job to the hardware.
-	 * The writeback_job to commit is available in
-	 * &drm_connector_state.writeback_job.
+	 * The writeback_job to commit is available in the new connector state,
+	 * in &drm_connector_state.writeback_job.
 	 *
 	 * This hook is optional.
 	 *
 	 * This callback is used by the atomic modeset helpers.
 	 */
 	void (*atomic_commit)(struct drm_connector *connector,
-			      struct drm_connector_state *state);
+			      struct drm_atomic_state *state);
 
 	/**
 	 * @prepare_writeback_job:
-- 
2.28.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm: Pass the full state to connectors atomic functions
  2020-11-05 17:30 [PATCH] drm: Pass the full state to connectors atomic functions Maxime Ripard
@ 2020-11-05 17:56 ` Harry Wentland
  2020-11-06  8:37 ` Thomas Zimmermann
  2020-11-16 14:02 ` Rodrigo Siqueira
  2 siblings, 0 replies; 4+ messages in thread
From: Harry Wentland @ 2020-11-05 17:56 UTC (permalink / raw)
  To: Maxime Ripard, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Thomas Zimmermann
  Cc: Haneen Mohammed, Rodrigo Siqueira, Leo Li, Melissa Wen,
	dri-devel, Rodrigo Vivi, Alex Deucher, Christian König,
	Ben Skeggs

On 2020-11-05 12:30 p.m., Maxime Ripard wrote:
> The current atomic helpers have either their object state being passed as
> an argument or the full atomic state.
> 
> The former is the pattern that was done at first, before switching to the
> latter for new hooks or when it was needed.
> 
> Now that the CRTCs have been converted, let's move forward with the
> connectors to provide a consistent interface.
> 
> The conversion was done using the coccinelle script below, and built tested
> on all the drivers.
> 

Did you forget the coccinelle script?

> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
> Cc: Melissa Wen <melissa.srw@gmail.com>
> Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Mainly for the amdgpu portion this is:
Acked-by: Harry Wentland <harry.wentland@amd.com>

Harry

> ---
>   .../drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c |  5 ++++-
>   drivers/gpu/drm/drm_atomic_helper.c                 |  8 ++++----
>   drivers/gpu/drm/i915/display/intel_dp_mst.c         |  7 +++++--
>   drivers/gpu/drm/nouveau/dispnv50/disp.c             |  5 ++++-
>   drivers/gpu/drm/vc4/vc4_txp.c                       |  4 +++-
>   drivers/gpu/drm/vkms/vkms_writeback.c               |  7 +++++--
>   include/drm/drm_modeset_helper_vtables.h            | 13 ++++++-------
>   7 files changed, 31 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index eee19edeeee5..f346cc74387f 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -24,6 +24,7 @@
>    */
>   
>   #include <linux/version.h>
> +#include <drm/drm_atomic.h>
>   #include <drm/drm_atomic_helper.h>
>   #include <drm/drm_dp_mst_helper.h>
>   #include <drm/drm_dp_helper.h>
> @@ -252,8 +253,10 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector)
>   
>   static struct drm_encoder *
>   dm_mst_atomic_best_encoder(struct drm_connector *connector,
> -			   struct drm_connector_state *connector_state)
> +			   struct drm_atomic_state *state)
>   {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>   	struct drm_device *dev = connector->dev;
>   	struct amdgpu_device *adev = drm_to_adev(dev);
>   	struct amdgpu_crtc *acrtc = to_amdgpu_crtc(connector_state->crtc);
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index ddd0e3239150..ba1507036f26 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -122,7 +122,8 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
>   			continue;
>   
>   		if (funcs->atomic_best_encoder)
> -			new_encoder = funcs->atomic_best_encoder(connector, new_conn_state);
> +			new_encoder = funcs->atomic_best_encoder(connector,
> +								 state);
>   		else if (funcs->best_encoder)
>   			new_encoder = funcs->best_encoder(connector);
>   		else
> @@ -345,8 +346,7 @@ update_connector_routing(struct drm_atomic_state *state,
>   	funcs = connector->helper_private;
>   
>   	if (funcs->atomic_best_encoder)
> -		new_encoder = funcs->atomic_best_encoder(connector,
> -							 new_connector_state);
> +		new_encoder = funcs->atomic_best_encoder(connector, state);
>   	else if (funcs->best_encoder)
>   		new_encoder = funcs->best_encoder(connector);
>   	else
> @@ -1313,7 +1313,7 @@ static void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
>   
>   		if (new_conn_state->writeback_job && new_conn_state->writeback_job->fb) {
>   			WARN_ON(connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK);
> -			funcs->atomic_commit(connector, new_conn_state);
> +			funcs->atomic_commit(connector, old_state);
>   		}
>   	}
>   }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 64d885539e94..b879a0622ada 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -23,6 +23,7 @@
>    *
>    */
>   
> +#include <drm/drm_atomic.h>
>   #include <drm/drm_atomic_helper.h>
>   #include <drm/drm_edid.h>
>   #include <drm/drm_probe_helper.h>
> @@ -706,11 +707,13 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
>   }
>   
>   static struct drm_encoder *intel_mst_atomic_best_encoder(struct drm_connector *connector,
> -							 struct drm_connector_state *state)
> +							 struct drm_atomic_state *state)
>   {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>   	struct intel_connector *intel_connector = to_intel_connector(connector);
>   	struct intel_dp *intel_dp = intel_connector->mst_port;
> -	struct intel_crtc *crtc = to_intel_crtc(state->crtc);
> +	struct intel_crtc *crtc = to_intel_crtc(connector_state->crtc);
>   
>   	return &intel_dp->mst_encoders[crtc->pipe]->base.base;
>   }
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index b111fe24a06b..911c2cbe6aa3 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -32,6 +32,7 @@
>   #include <linux/hdmi.h>
>   #include <linux/component.h>
>   
> +#include <drm/drm_atomic.h>
>   #include <drm/drm_atomic_helper.h>
>   #include <drm/drm_dp_helper.h>
>   #include <drm/drm_edid.h>
> @@ -1161,8 +1162,10 @@ nv50_msto_new(struct drm_device *dev, struct nv50_head *head, int id)
>   
>   static struct drm_encoder *
>   nv50_mstc_atomic_best_encoder(struct drm_connector *connector,
> -			      struct drm_connector_state *connector_state)
> +			      struct drm_atomic_state *state)
>   {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>   	struct nv50_mstc *mstc = nv50_mstc(connector);
>   	struct drm_crtc *crtc = connector_state->crtc;
>   
> diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
> index 34612edcabbd..8aa5220885f4 100644
> --- a/drivers/gpu/drm/vc4/vc4_txp.c
> +++ b/drivers/gpu/drm/vc4/vc4_txp.c
> @@ -273,8 +273,10 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
>   }
>   
>   static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
> -					struct drm_connector_state *conn_state)
> +					struct drm_atomic_state *state)
>   {
> +	struct drm_connector_state *conn_state = drm_atomic_get_new_connector_state(state,
> +										    conn);
>   	struct vc4_txp *txp = connector_to_vc4_txp(conn);
>   	struct drm_gem_cma_object *gem;
>   	struct drm_display_mode *mode;
> diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
> index 26b903926872..cafdc8463541 100644
> --- a/drivers/gpu/drm/vkms/vkms_writeback.c
> +++ b/drivers/gpu/drm/vkms/vkms_writeback.c
> @@ -1,6 +1,7 @@
>   // SPDX-License-Identifier: GPL-2.0+
>   
>   #include "vkms_drv.h"
> +#include <drm/drm_atomic.h>
>   #include <drm/drm_fourcc.h>
>   #include <drm/drm_writeback.h>
>   #include <drm/drm_probe_helper.h>
> @@ -99,8 +100,10 @@ static void vkms_wb_cleanup_job(struct drm_writeback_connector *connector,
>   }
>   
>   static void vkms_wb_atomic_commit(struct drm_connector *conn,
> -				  struct drm_connector_state *state)
> +				  struct drm_atomic_state *state)
>   {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 conn);
>   	struct vkms_device *vkmsdev = drm_device_to_vkms_device(conn->dev);
>   	struct vkms_output *output = &vkmsdev->output;
>   	struct drm_writeback_connector *wb_conn = &output->wb_connector;
> @@ -116,7 +119,7 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
>   	crtc_state->active_writeback = conn_state->writeback_job->priv;
>   	crtc_state->wb_pending = true;
>   	spin_unlock_irq(&output->composer_lock);
> -	drm_writeback_queue_job(wb_conn, state);
> +	drm_writeback_queue_job(wb_conn, connector_state);
>   }
>   
>   static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = {
> diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h
> index f2de050085be..16ff3fa148f5 100644
> --- a/include/drm/drm_modeset_helper_vtables.h
> +++ b/include/drm/drm_modeset_helper_vtables.h
> @@ -1044,9 +1044,8 @@ struct drm_connector_helper_funcs {
>   	 * NOTE:
>   	 *
>   	 * This function is called in the check phase of an atomic update. The
> -	 * driver is not allowed to change anything outside of the free-standing
> -	 * state objects passed-in or assembled in the overall &drm_atomic_state
> -	 * update tracking structure.
> +	 * driver is not allowed to change anything outside of the
> +	 * &drm_atomic_state update tracking structure passed in.
>   	 *
>   	 * RETURNS:
>   	 *
> @@ -1056,7 +1055,7 @@ struct drm_connector_helper_funcs {
>   	 * for this.
>   	 */
>   	struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
> -						   struct drm_connector_state *connector_state);
> +						   struct drm_atomic_state *state);
>   
>   	/**
>   	 * @atomic_check:
> @@ -1097,15 +1096,15 @@ struct drm_connector_helper_funcs {
>   	 *
>   	 * This hook is to be used by drivers implementing writeback connectors
>   	 * that need a point when to commit the writeback job to the hardware.
> -	 * The writeback_job to commit is available in
> -	 * &drm_connector_state.writeback_job.
> +	 * The writeback_job to commit is available in the new connector state,
> +	 * in &drm_connector_state.writeback_job.
>   	 *
>   	 * This hook is optional.
>   	 *
>   	 * This callback is used by the atomic modeset helpers.
>   	 */
>   	void (*atomic_commit)(struct drm_connector *connector,
> -			      struct drm_connector_state *state);
> +			      struct drm_atomic_state *state);
>   
>   	/**
>   	 * @prepare_writeback_job:
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm: Pass the full state to connectors atomic functions
  2020-11-05 17:30 [PATCH] drm: Pass the full state to connectors atomic functions Maxime Ripard
  2020-11-05 17:56 ` Harry Wentland
@ 2020-11-06  8:37 ` Thomas Zimmermann
  2020-11-16 14:02 ` Rodrigo Siqueira
  2 siblings, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2020-11-06  8:37 UTC (permalink / raw)
  To: Maxime Ripard, Daniel Vetter, David Airlie, Maarten Lankhorst
  Cc: Haneen Mohammed, Rodrigo Siqueira, Leo Li, Melissa Wen,
	dri-devel, Rodrigo Vivi, Alex Deucher, Christian König,
	Ben Skeggs


[-- Attachment #1.1.1.1: Type: text/plain, Size: 10714 bytes --]

Hi

Am 05.11.20 um 18:30 schrieb Maxime Ripard:
> The current atomic helpers have either their object state being passed as
> an argument or the full atomic state.
> 
> The former is the pattern that was done at first, before switching to the
> latter for new hooks or when it was needed.
> 
> Now that the CRTCs have been converted, let's move forward with the
> connectors to provide a consistent interface.
> 
> The conversion was done using the coccinelle script below, and built tested
> on all the drivers.

The coccinelle script appears to be missing. Apart from that

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

> 
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
> Cc: Melissa Wen <melissa.srw@gmail.com>
> Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>
> ---
>  .../drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c |  5 ++++-
>  drivers/gpu/drm/drm_atomic_helper.c                 |  8 ++++----
>  drivers/gpu/drm/i915/display/intel_dp_mst.c         |  7 +++++--
>  drivers/gpu/drm/nouveau/dispnv50/disp.c             |  5 ++++-
>  drivers/gpu/drm/vc4/vc4_txp.c                       |  4 +++-
>  drivers/gpu/drm/vkms/vkms_writeback.c               |  7 +++++--
>  include/drm/drm_modeset_helper_vtables.h            | 13 ++++++-------
>  7 files changed, 31 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index eee19edeeee5..f346cc74387f 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -24,6 +24,7 @@
>   */
>  
>  #include <linux/version.h>
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_dp_mst_helper.h>
>  #include <drm/drm_dp_helper.h>
> @@ -252,8 +253,10 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector)
>  
>  static struct drm_encoder *
>  dm_mst_atomic_best_encoder(struct drm_connector *connector,
> -			   struct drm_connector_state *connector_state)
> +			   struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>  	struct drm_device *dev = connector->dev;
>  	struct amdgpu_device *adev = drm_to_adev(dev);
>  	struct amdgpu_crtc *acrtc = to_amdgpu_crtc(connector_state->crtc);
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index ddd0e3239150..ba1507036f26 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -122,7 +122,8 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
>  			continue;
>  
>  		if (funcs->atomic_best_encoder)
> -			new_encoder = funcs->atomic_best_encoder(connector, new_conn_state);
> +			new_encoder = funcs->atomic_best_encoder(connector,
> +								 state);
>  		else if (funcs->best_encoder)
>  			new_encoder = funcs->best_encoder(connector);
>  		else
> @@ -345,8 +346,7 @@ update_connector_routing(struct drm_atomic_state *state,
>  	funcs = connector->helper_private;
>  
>  	if (funcs->atomic_best_encoder)
> -		new_encoder = funcs->atomic_best_encoder(connector,
> -							 new_connector_state);
> +		new_encoder = funcs->atomic_best_encoder(connector, state);
>  	else if (funcs->best_encoder)
>  		new_encoder = funcs->best_encoder(connector);
>  	else
> @@ -1313,7 +1313,7 @@ static void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
>  
>  		if (new_conn_state->writeback_job && new_conn_state->writeback_job->fb) {
>  			WARN_ON(connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK);
> -			funcs->atomic_commit(connector, new_conn_state);
> +			funcs->atomic_commit(connector, old_state);
>  		}
>  	}
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 64d885539e94..b879a0622ada 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -23,6 +23,7 @@
>   *
>   */
>  
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_edid.h>
>  #include <drm/drm_probe_helper.h>
> @@ -706,11 +707,13 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
>  }
>  
>  static struct drm_encoder *intel_mst_atomic_best_encoder(struct drm_connector *connector,
> -							 struct drm_connector_state *state)
> +							 struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>  	struct intel_connector *intel_connector = to_intel_connector(connector);
>  	struct intel_dp *intel_dp = intel_connector->mst_port;
> -	struct intel_crtc *crtc = to_intel_crtc(state->crtc);
> +	struct intel_crtc *crtc = to_intel_crtc(connector_state->crtc);
>  
>  	return &intel_dp->mst_encoders[crtc->pipe]->base.base;
>  }
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index b111fe24a06b..911c2cbe6aa3 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -32,6 +32,7 @@
>  #include <linux/hdmi.h>
>  #include <linux/component.h>
>  
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_dp_helper.h>
>  #include <drm/drm_edid.h>
> @@ -1161,8 +1162,10 @@ nv50_msto_new(struct drm_device *dev, struct nv50_head *head, int id)
>  
>  static struct drm_encoder *
>  nv50_mstc_atomic_best_encoder(struct drm_connector *connector,
> -			      struct drm_connector_state *connector_state)
> +			      struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>  	struct nv50_mstc *mstc = nv50_mstc(connector);
>  	struct drm_crtc *crtc = connector_state->crtc;
>  
> diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
> index 34612edcabbd..8aa5220885f4 100644
> --- a/drivers/gpu/drm/vc4/vc4_txp.c
> +++ b/drivers/gpu/drm/vc4/vc4_txp.c
> @@ -273,8 +273,10 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
>  }
>  
>  static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
> -					struct drm_connector_state *conn_state)
> +					struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *conn_state = drm_atomic_get_new_connector_state(state,
> +										    conn);
>  	struct vc4_txp *txp = connector_to_vc4_txp(conn);
>  	struct drm_gem_cma_object *gem;
>  	struct drm_display_mode *mode;
> diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
> index 26b903926872..cafdc8463541 100644
> --- a/drivers/gpu/drm/vkms/vkms_writeback.c
> +++ b/drivers/gpu/drm/vkms/vkms_writeback.c
> @@ -1,6 +1,7 @@
>  // SPDX-License-Identifier: GPL-2.0+
>  
>  #include "vkms_drv.h"
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_fourcc.h>
>  #include <drm/drm_writeback.h>
>  #include <drm/drm_probe_helper.h>
> @@ -99,8 +100,10 @@ static void vkms_wb_cleanup_job(struct drm_writeback_connector *connector,
>  }
>  
>  static void vkms_wb_atomic_commit(struct drm_connector *conn,
> -				  struct drm_connector_state *state)
> +				  struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 conn);
>  	struct vkms_device *vkmsdev = drm_device_to_vkms_device(conn->dev);
>  	struct vkms_output *output = &vkmsdev->output;
>  	struct drm_writeback_connector *wb_conn = &output->wb_connector;
> @@ -116,7 +119,7 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
>  	crtc_state->active_writeback = conn_state->writeback_job->priv;
>  	crtc_state->wb_pending = true;
>  	spin_unlock_irq(&output->composer_lock);
> -	drm_writeback_queue_job(wb_conn, state);
> +	drm_writeback_queue_job(wb_conn, connector_state);
>  }
>  
>  static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = {
> diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h
> index f2de050085be..16ff3fa148f5 100644
> --- a/include/drm/drm_modeset_helper_vtables.h
> +++ b/include/drm/drm_modeset_helper_vtables.h
> @@ -1044,9 +1044,8 @@ struct drm_connector_helper_funcs {
>  	 * NOTE:
>  	 *
>  	 * This function is called in the check phase of an atomic update. The
> -	 * driver is not allowed to change anything outside of the free-standing
> -	 * state objects passed-in or assembled in the overall &drm_atomic_state
> -	 * update tracking structure.
> +	 * driver is not allowed to change anything outside of the
> +	 * &drm_atomic_state update tracking structure passed in.
>  	 *
>  	 * RETURNS:
>  	 *
> @@ -1056,7 +1055,7 @@ struct drm_connector_helper_funcs {
>  	 * for this.
>  	 */
>  	struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
> -						   struct drm_connector_state *connector_state);
> +						   struct drm_atomic_state *state);
>  
>  	/**
>  	 * @atomic_check:
> @@ -1097,15 +1096,15 @@ struct drm_connector_helper_funcs {
>  	 *
>  	 * This hook is to be used by drivers implementing writeback connectors
>  	 * that need a point when to commit the writeback job to the hardware.
> -	 * The writeback_job to commit is available in
> -	 * &drm_connector_state.writeback_job.
> +	 * The writeback_job to commit is available in the new connector state,
> +	 * in &drm_connector_state.writeback_job.
>  	 *
>  	 * This hook is optional.
>  	 *
>  	 * This callback is used by the atomic modeset helpers.
>  	 */
>  	void (*atomic_commit)(struct drm_connector *connector,
> -			      struct drm_connector_state *state);
> +			      struct drm_atomic_state *state);
>  
>  	/**
>  	 * @prepare_writeback_job:
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer

[-- Attachment #1.1.1.2: OpenPGP_0x680DC11D530B7A23.asc --]
[-- Type: application/pgp-keys, Size: 4259 bytes --]

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm: Pass the full state to connectors atomic functions
  2020-11-05 17:30 [PATCH] drm: Pass the full state to connectors atomic functions Maxime Ripard
  2020-11-05 17:56 ` Harry Wentland
  2020-11-06  8:37 ` Thomas Zimmermann
@ 2020-11-16 14:02 ` Rodrigo Siqueira
  2 siblings, 0 replies; 4+ messages in thread
From: Rodrigo Siqueira @ 2020-11-16 14:02 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Haneen Mohammed, David Airlie, dri-devel, Melissa Wen, Leo Li,
	Thomas Zimmermann, Rodrigo Vivi, Alex Deucher, Daniel Vetter,
	Christian König, Ben Skeggs


[-- Attachment #1.1: Type: text/plain, Size: 10528 bytes --]

On 11/05, Maxime Ripard wrote:
> The current atomic helpers have either their object state being passed as
> an argument or the full atomic state.
> 
> The former is the pattern that was done at first, before switching to the
> latter for new hooks or when it was needed.
> 
> Now that the CRTCs have been converted, let's move forward with the
> connectors to provide a consistent interface.
> 
> The conversion was done using the coccinelle script below, and built tested
> on all the drivers.

For the VKMS change:
Reviewed-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
 
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
> Cc: Melissa Wen <melissa.srw@gmail.com>
> Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>
> ---
>  .../drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c |  5 ++++-
>  drivers/gpu/drm/drm_atomic_helper.c                 |  8 ++++----
>  drivers/gpu/drm/i915/display/intel_dp_mst.c         |  7 +++++--
>  drivers/gpu/drm/nouveau/dispnv50/disp.c             |  5 ++++-
>  drivers/gpu/drm/vc4/vc4_txp.c                       |  4 +++-
>  drivers/gpu/drm/vkms/vkms_writeback.c               |  7 +++++--
>  include/drm/drm_modeset_helper_vtables.h            | 13 ++++++-------
>  7 files changed, 31 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index eee19edeeee5..f346cc74387f 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -24,6 +24,7 @@
>   */
>  
>  #include <linux/version.h>
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_dp_mst_helper.h>
>  #include <drm/drm_dp_helper.h>
> @@ -252,8 +253,10 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector)
>  
>  static struct drm_encoder *
>  dm_mst_atomic_best_encoder(struct drm_connector *connector,
> -			   struct drm_connector_state *connector_state)
> +			   struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>  	struct drm_device *dev = connector->dev;
>  	struct amdgpu_device *adev = drm_to_adev(dev);
>  	struct amdgpu_crtc *acrtc = to_amdgpu_crtc(connector_state->crtc);
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index ddd0e3239150..ba1507036f26 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -122,7 +122,8 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
>  			continue;
>  
>  		if (funcs->atomic_best_encoder)
> -			new_encoder = funcs->atomic_best_encoder(connector, new_conn_state);
> +			new_encoder = funcs->atomic_best_encoder(connector,
> +								 state);
>  		else if (funcs->best_encoder)
>  			new_encoder = funcs->best_encoder(connector);
>  		else
> @@ -345,8 +346,7 @@ update_connector_routing(struct drm_atomic_state *state,
>  	funcs = connector->helper_private;
>  
>  	if (funcs->atomic_best_encoder)
> -		new_encoder = funcs->atomic_best_encoder(connector,
> -							 new_connector_state);
> +		new_encoder = funcs->atomic_best_encoder(connector, state);
>  	else if (funcs->best_encoder)
>  		new_encoder = funcs->best_encoder(connector);
>  	else
> @@ -1313,7 +1313,7 @@ static void drm_atomic_helper_commit_writebacks(struct drm_device *dev,
>  
>  		if (new_conn_state->writeback_job && new_conn_state->writeback_job->fb) {
>  			WARN_ON(connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK);
> -			funcs->atomic_commit(connector, new_conn_state);
> +			funcs->atomic_commit(connector, old_state);
>  		}
>  	}
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 64d885539e94..b879a0622ada 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -23,6 +23,7 @@
>   *
>   */
>  
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_edid.h>
>  #include <drm/drm_probe_helper.h>
> @@ -706,11 +707,13 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
>  }
>  
>  static struct drm_encoder *intel_mst_atomic_best_encoder(struct drm_connector *connector,
> -							 struct drm_connector_state *state)
> +							 struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>  	struct intel_connector *intel_connector = to_intel_connector(connector);
>  	struct intel_dp *intel_dp = intel_connector->mst_port;
> -	struct intel_crtc *crtc = to_intel_crtc(state->crtc);
> +	struct intel_crtc *crtc = to_intel_crtc(connector_state->crtc);
>  
>  	return &intel_dp->mst_encoders[crtc->pipe]->base.base;
>  }
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index b111fe24a06b..911c2cbe6aa3 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -32,6 +32,7 @@
>  #include <linux/hdmi.h>
>  #include <linux/component.h>
>  
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_dp_helper.h>
>  #include <drm/drm_edid.h>
> @@ -1161,8 +1162,10 @@ nv50_msto_new(struct drm_device *dev, struct nv50_head *head, int id)
>  
>  static struct drm_encoder *
>  nv50_mstc_atomic_best_encoder(struct drm_connector *connector,
> -			      struct drm_connector_state *connector_state)
> +			      struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 connector);
>  	struct nv50_mstc *mstc = nv50_mstc(connector);
>  	struct drm_crtc *crtc = connector_state->crtc;
>  
> diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
> index 34612edcabbd..8aa5220885f4 100644
> --- a/drivers/gpu/drm/vc4/vc4_txp.c
> +++ b/drivers/gpu/drm/vc4/vc4_txp.c
> @@ -273,8 +273,10 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
>  }
>  
>  static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
> -					struct drm_connector_state *conn_state)
> +					struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *conn_state = drm_atomic_get_new_connector_state(state,
> +										    conn);
>  	struct vc4_txp *txp = connector_to_vc4_txp(conn);
>  	struct drm_gem_cma_object *gem;
>  	struct drm_display_mode *mode;
> diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
> index 26b903926872..cafdc8463541 100644
> --- a/drivers/gpu/drm/vkms/vkms_writeback.c
> +++ b/drivers/gpu/drm/vkms/vkms_writeback.c
> @@ -1,6 +1,7 @@
>  // SPDX-License-Identifier: GPL-2.0+
>  
>  #include "vkms_drv.h"
> +#include <drm/drm_atomic.h>
>  #include <drm/drm_fourcc.h>
>  #include <drm/drm_writeback.h>
>  #include <drm/drm_probe_helper.h>
> @@ -99,8 +100,10 @@ static void vkms_wb_cleanup_job(struct drm_writeback_connector *connector,
>  }
>  
>  static void vkms_wb_atomic_commit(struct drm_connector *conn,
> -				  struct drm_connector_state *state)
> +				  struct drm_atomic_state *state)
>  {
> +	struct drm_connector_state *connector_state = drm_atomic_get_new_connector_state(state,
> +											 conn);
>  	struct vkms_device *vkmsdev = drm_device_to_vkms_device(conn->dev);
>  	struct vkms_output *output = &vkmsdev->output;
>  	struct drm_writeback_connector *wb_conn = &output->wb_connector;
> @@ -116,7 +119,7 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
>  	crtc_state->active_writeback = conn_state->writeback_job->priv;
>  	crtc_state->wb_pending = true;
>  	spin_unlock_irq(&output->composer_lock);
> -	drm_writeback_queue_job(wb_conn, state);
> +	drm_writeback_queue_job(wb_conn, connector_state);
>  }
>  
>  static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = {
> diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h
> index f2de050085be..16ff3fa148f5 100644
> --- a/include/drm/drm_modeset_helper_vtables.h
> +++ b/include/drm/drm_modeset_helper_vtables.h
> @@ -1044,9 +1044,8 @@ struct drm_connector_helper_funcs {
>  	 * NOTE:
>  	 *
>  	 * This function is called in the check phase of an atomic update. The
> -	 * driver is not allowed to change anything outside of the free-standing
> -	 * state objects passed-in or assembled in the overall &drm_atomic_state
> -	 * update tracking structure.
> +	 * driver is not allowed to change anything outside of the
> +	 * &drm_atomic_state update tracking structure passed in.
>  	 *
>  	 * RETURNS:
>  	 *
> @@ -1056,7 +1055,7 @@ struct drm_connector_helper_funcs {
>  	 * for this.
>  	 */
>  	struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
> -						   struct drm_connector_state *connector_state);
> +						   struct drm_atomic_state *state);
>  
>  	/**
>  	 * @atomic_check:
> @@ -1097,15 +1096,15 @@ struct drm_connector_helper_funcs {
>  	 *
>  	 * This hook is to be used by drivers implementing writeback connectors
>  	 * that need a point when to commit the writeback job to the hardware.
> -	 * The writeback_job to commit is available in
> -	 * &drm_connector_state.writeback_job.
> +	 * The writeback_job to commit is available in the new connector state,
> +	 * in &drm_connector_state.writeback_job.
>  	 *
>  	 * This hook is optional.
>  	 *
>  	 * This callback is used by the atomic modeset helpers.
>  	 */
>  	void (*atomic_commit)(struct drm_connector *connector,
> -			      struct drm_connector_state *state);
> +			      struct drm_atomic_state *state);
>  
>  	/**
>  	 * @prepare_writeback_job:
> -- 
> 2.28.0
> 

-- 
Rodrigo Siqueira
https://siqueira.tech

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-16 14:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-05 17:30 [PATCH] drm: Pass the full state to connectors atomic functions Maxime Ripard
2020-11-05 17:56 ` Harry Wentland
2020-11-06  8:37 ` Thomas Zimmermann
2020-11-16 14:02 ` Rodrigo Siqueira

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.