Message ID | 20190930222802.32088-6-ezequiel@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RK3288 Gamma LUT | expand |
Hi Ezequiel, On Mon, Sep 30, 2019 at 07:28:02PM -0300, Ezequiel Garcia wrote: > Some platforms are not able to maintain the color transformation > state after a system suspend/resume cycle. > > Set the colog_mgmt_changed flag so that CMM on the CRTCs in CMM is the name of the Renesas unit for color enanchement. It should not be used here as this will apply to all platforms. > the suspend state are reapplied after system resume. > > Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> > --- > This is an RFC, and it's mostly based on Jacopo Mondi's work https://lkml.org/lkml/2019/9/6/498. > > Changes from v2: > * New patch. > --- > drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index e41db0f202ca..518488125575 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -3234,8 +3234,20 @@ int drm_atomic_helper_resume(struct drm_device *dev, > struct drm_atomic_state *state) > { > struct drm_modeset_acquire_ctx ctx; > + struct drm_crtc_state *crtc_state; > + struct drm_crtc *crtc; > + unsigned int i; > int err; > > + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { > + /* > + * Force re-enablement of CMM after system resume if any > + * of the DRM color transformation properties was set in > + * the state saved at system suspend time. > + */ > + if (crtc_state->gamma_lut) Please note that in my original patch I only took gamma_lut into account as that's what our CMM supports at the moment, but you should here consider the degamma_lut and cmt flags in the crtc_state. > + crtc_state->color_mgmt_changed = true; > + } > drm_mode_config_reset(dev); > > DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, err); > -- > 2.22.0 >
On Mon, Sep 30, 2019 at 07:28:02PM -0300, Ezequiel Garcia wrote: > Some platforms are not able to maintain the color transformation > state after a system suspend/resume cycle. > > Set the colog_mgmt_changed flag so that CMM on the CRTCs in > the suspend state are reapplied after system resume. > > Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> > --- > This is an RFC, and it's mostly based on Jacopo Mondi's work https://lkml.org/lkml/2019/9/6/498. > > Changes from v2: > * New patch. > --- > drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index e41db0f202ca..518488125575 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -3234,8 +3234,20 @@ int drm_atomic_helper_resume(struct drm_device *dev, > struct drm_atomic_state *state) > { > struct drm_modeset_acquire_ctx ctx; > + struct drm_crtc_state *crtc_state; > + struct drm_crtc *crtc; > + unsigned int i; > int err; > > + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { > + /* > + * Force re-enablement of CMM after system resume if any > + * of the DRM color transformation properties was set in > + * the state saved at system suspend time. > + */ > + if (crtc_state->gamma_lut) You say "any" but you check the one? > + crtc_state->color_mgmt_changed = true; But I'm not convinced this is the best way to go about it. I would generally expect that you repgrogram everything when doing a full modeset since the state was possibly lost while the crtc was disabled. > + } > drm_mode_config_reset(dev); > > DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, err); > -- > 2.22.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index e41db0f202ca..518488125575 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -3234,8 +3234,20 @@ int drm_atomic_helper_resume(struct drm_device *dev, struct drm_atomic_state *state) { struct drm_modeset_acquire_ctx ctx; + struct drm_crtc_state *crtc_state; + struct drm_crtc *crtc; + unsigned int i; int err; + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { + /* + * Force re-enablement of CMM after system resume if any + * of the DRM color transformation properties was set in + * the state saved at system suspend time. + */ + if (crtc_state->gamma_lut) + crtc_state->color_mgmt_changed = true; + } drm_mode_config_reset(dev); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, err);
Some platforms are not able to maintain the color transformation state after a system suspend/resume cycle. Set the colog_mgmt_changed flag so that CMM on the CRTCs in the suspend state are reapplied after system resume. Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> --- This is an RFC, and it's mostly based on Jacopo Mondi's work https://lkml.org/lkml/2019/9/6/498. Changes from v2: * New patch. --- drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)