On Thu, Nov 05, 2020 at 08:07:57PM +0100, Thomas Zimmermann wrote: > Hi > > Am 05.11.20 um 17:45 schrieb Maxime Ripard: > > Many drivers reference the crtc->pointer in order to get the current CRTC > > state in their atomic_begin or atomic_flush hooks, which would be the new > > CRTC state in the global atomic state since _swap_state happened when those > > hooks are run. > > > > Use the drm_atomic_get_new_crtc_state helper to get that state to make it > > more obvious. > > > > This was made using the coccinelle script below: > > > > @ crtc_atomic_func @ > > identifier helpers; > > identifier func; > > @@ > > > > ( > > static struct drm_crtc_helper_funcs helpers = { > > ..., > > .atomic_begin = func, > > ..., > > }; > > | > > static struct drm_crtc_helper_funcs helpers = { > > ..., > > .atomic_flush = func, > > ..., > > }; > > ) > > > > @@ > > identifier crtc_atomic_func.func; > > identifier crtc, state; > > symbol crtc_state; > > expression e; > > @@ > > > > func(struct drm_crtc *crtc, struct drm_atomic_state *state) { > > ... > > - struct tegra_dc_state *crtc_state = e; > > + struct tegra_dc_state *dc_state = e; > > <+... > > - crtc_state > > + dc_state > > ...+> > > } > > > > @@ > > identifier crtc_atomic_func.func; > > identifier crtc, state; > > symbol crtc_state; > > expression e; > > @@ > > > > func(struct drm_crtc *crtc, struct drm_atomic_state *state) { > > ... > > - struct mtk_crtc_state *crtc_state = e; > > + struct mtk_crtc_state *mtk_crtc_state = e; > > <+... > > - crtc_state > > + mtk_crtc_state > > ...+> > > } > > > > @ replaces_new_state @ > > identifier crtc_atomic_func.func; > > identifier crtc, state, crtc_state; > > @@ > > > > func(struct drm_crtc *crtc, struct drm_atomic_state *state) { > > ... > > - struct drm_crtc_state *crtc_state = crtc->state; > > + struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc); > > ... > > } > > > > @@ > > identifier crtc_atomic_func.func; > > identifier crtc, state, crtc_state; > > @@ > > > > func(struct drm_crtc *crtc, struct drm_atomic_state *state) { > > struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc); > > ... > > - crtc->state > > + crtc_state > > ... > > } > > > > @ adds_new_state @ > > identifier crtc_atomic_func.func; > > identifier crtc, state; > > @@ > > > > func(struct drm_crtc *crtc, struct drm_atomic_state *state) { > > + struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc); > > ... > > - crtc->state > > + crtc_state > > ... > > } > > > > @ include depends on adds_new_state || replaces_new_state @ > > @@ > > > > #include <drm/drm_atomic.h> > > > > @ no_include depends on !include && (adds_new_state || replaces_new_state) @ > > @@ > > > > + #include <drm/drm_atomic.h> > > #include <drm/...> > > > > Cc: "James (Qian) Wang" <james.qian.wang@xxxxxxx> > > Cc: Liviu Dudau <liviu.dudau@xxxxxxx> > > Cc: Mihail Atanassov <mihail.atanassov@xxxxxxx> > > Cc: Brian Starkey <brian.starkey@xxxxxxx> > > Cc: Russell King <linux@xxxxxxxxxxxxxxx> > > Cc: Paul Cercueil <paul@xxxxxxxxxxxxxxx> > > Cc: Chun-Kuang Hu <chunkuang.hu@xxxxxxxxxx> > > Cc: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> > > Cc: Sandy Huang <hjc@xxxxxxxxxxxxxx> > > Cc: "Heiko Stübner" <heiko@xxxxxxxxx> > > Cc: Thierry Reding <thierry.reding@xxxxxxxxx> > > Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx> > > Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Suggested-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> > Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx> Applied, thanks! Maxime
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel