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@xxxxxxxxx> > Cc: Harry Wentland <harry.wentland@xxxxxxx> > Cc: Leo Li <sunpeng.li@xxxxxxx> > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: "Christian König" <christian.koenig@xxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Cc: Ben Skeggs <bskeggs@xxxxxxxxxx> > Cc: Rodrigo Siqueira <rodrigosiqueiramelo@xxxxxxxxx> > Cc: Melissa Wen <melissa.srw@xxxxxxxxx> > Cc: Haneen Mohammed <hamohammed.sa@xxxxxxxxx> > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> > --- > .../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:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel