Hi Jyri, On Thu, Sep 05, 2019 at 01:00:51PM +0300, Jyri Sarha wrote: > On 05/09/2019 00:52, Laurent Pinchart wrote: > >>>>>> static void omap_crtc_write_crtc_properties(struct drm_crtc *crtc) > >>>>>> { > >>>>>> struct omap_drm_private *priv = crtc->dev->dev_private; > >>>>>> @@ -402,7 +428,16 @@ static void omap_crtc_write_crtc_properties(struct drm_crtc *crtc) > >>>>>> info.default_color = 0x000000; > >>>>>> info.trans_enabled = false; > >>>>>> info.partial_alpha_enabled = false; > >>>>>> - info.cpr_enable = false; > >>>>>> + > >>>>>> + if (crtc->state->ctm) { > >>>>>> + struct drm_color_ctm *ctm = > >>>>>> + (struct drm_color_ctm *) crtc->state->ctm->data; > >>>>>> + > >>>>>> + info.cpr_enable = true; > >>>>>> + omap_crtc_cpr_coefs_from_ctm(ctm, &info.cpr_coefs); > >>>>> > >>>>> As an optimisation it would be nice to only write the coefficients when > >>>>> they actually change. That could be implemented on top of this series. > >>>> > >>>> E.g. apply this ? > >>>> > >>>> - if (crtc->state->ctm) > >>>> + if (crtc->state->color_mgmt_changed && crtc->state->ctm) > >>> > >>> Something like that, but .mgr_setup() should then be taught not to write > >>> unchanged CTM tables to registers. Do you think it would be worth it ? > >> > >> Hmmm, jess I should do it like this: > >> if (crtc->state->color_mgmt_changed) { > >> if (crtc->state->ctm) { > >> ... > >>>>>> + } else { > >>>>>> + info.cpr_enable = false; > >>>>>> + } > >> } > >> > >> This way the whole CPR functionality is turned off, if the there is no > >> CTM in the crtc state. > > > > Yes, but you would also need to update .mgr_setup() :-) A new > > color_mgmt_changed flag would be needed in the info structure too. > > I am starting to thing that such an "optimization" may not be worth the > added complexity. The arithmetic and writing three registers is not that > costly and we do not commit a new crtc state that often. We call omap_crtc_write_crtc_properties() in omap_crtc_atomic_flush(), so that's at every page flip... > If we later consider otherwise we can add the optimization as a separate > patch. -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel