On 2017-12-27 09:49 PM, Mario Kleiner wrote: > On 12/27/2017 12:56 PM, Michel Dänzer wrote: >> On 2017-12-23 07:07 AM, Mario Kleiner wrote: >>> The hardware gamma luts get bypassed at color >>> depth 30 anyway, so skip their setup. >>> >>> Also skip drmmode_crtc_gamma_set() for a screen >>> with depth 30. >>> >>> Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com> >>> --- >>>  src/drmmode_display.c | 10 ++++++++-- >>>  1 file changed, 8 insertions(+), 2 deletions(-) >>> >>> diff --git a/src/drmmode_display.c b/src/drmmode_display.c >>> index 7ad3235..e5f9dbe 100644 >>> --- a/src/drmmode_display.c >>> +++ b/src/drmmode_display.c >>> @@ -1275,6 +1275,10 @@ drmmode_crtc_gamma_set(xf86CrtcPtr crtc, >>> uint16_t *red, uint16_t *green, >>>      RADEONInfoPtr info = RADEONPTR(scrn); >>>      int i; >>>  +   /* Hw gamma lut's are bypassed at color depth 30 */ >>> +   if (scrn->depth == 30) >>> +       return; >> >> It's better to set xf86CrtcFuncsRec::gamma_set = NULL in this case, to >> prevent the X server from wasting work calculating gamma tables that >> will never be used. > > I looked at that, but as far as i understand, wouldn't NULL'ing that > entry affect all active X-Screens, not only the depth 30 ones, as each > screen only references the same shared static struct with function > pointers in the driver? That's right. > At least for the use cases of many of "my" users, two separate > x-screens, with ZaphodHeads and different color depth wouldn't be an > unexpected setup. Then we'll need to use a different xf86CrtcFuncsRec instance per screen instead of a single one for all screens. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer