On 2018-05-17 11:43 PM, Leo Li wrote: > On 2018-05-16 01:08 PM, Michel Dänzer wrote: >> On 2018-05-03 08:31 PM, sunpeng.li at amd.com wrote: >>> >>> @@ -1458,6 +1586,14 @@ drmmode_crtc_init(ScrnInfoPtr pScrn, >>> drmmode_ptr drmmode, drmModeResPtr mode_res >>>      drmmode_crtc->ctm->matrix[0] = drmmode_crtc->ctm->matrix[4] = >>>          drmmode_crtc->ctm->matrix[8] = (uint64_t)1 << 32; >>>  +   /* Push properties to initialize them */ >>> +   for (i = 0; i < CM_NUM_PROPS; i++) { >>> +       if (i == CM_DEGAMMA_LUT_SIZE || i == CM_GAMMA_LUT_SIZE) >>> +           continue; >>> +       if (drmmode_crtc_push_cm_prop(crtc, i)) >>> +           return 0; >> >> Per my follow-up to the cover letter, I don't think this should be >> necessary here anyway, but FWIW: >> >> Returning 0 early here breaks the pAMDGPUEnt->assigned_crtcs related >> logic in this function and drmmode_pre_init. > > I originally thought it'd make sense if DDX pushes the properties on > init, to maintain consistency between what DDX initially reports, and > what DRM is using. It would also reset color properties if X was restarted. My point was that this will happen from drmmode_set_mode_major anyway, therefore no need to do it here. OTOH if the properties are preserved by the kernel, it might make sense to only do it here and from drmmode_crtc_gamma_set, not from drmmode_set_mode_major. > The other way around could also work, which I assume is what you're > suggesting? i.e. pull all color properties from DRM into the > driver-private crtc on crtc init, instead of pushing it to kernel? That's not what I meant, and I suspect that would be tricky. E.g. how could we separate the pulled values into the legacy and advanced LUTs? And what if console (or whatever was displaying before) was using a different colour depth (could even be 8 bpp pseudo colour)? -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer