Re: Full screen color management



On Thu, 2010-03-25 at 11:27 +0000, Richard Hughes wrote:

> What I'm proposing is a plugin for mutter that uses lcms to color
> convert the whole screen, masking out the color-corrected regions.
> Using mutter allows this to work with GNOME 2 and GNOME 3, and mutter
> also seems to be the sweet-spot for this kind of display correction
> without putting ICC profile decoding and gamut mapping into the X
> server.
> 
> Is full screen color correction something that you think is a good
> idea, and also would you allow me to create the required hooks in
> mutter-plugin.h to make this possible?

* I think making the compositor manager do color correction for
  naive apps is a great idea.

* Mutter is the certainly compositing manager of interest for GNOME.
  
  (Though in terms of "GNOME 2" - Mutter working without a plugin
  is pretty much gravy - it seems to work pretty well now, but
  it isn't an explicit development goal.)

* I'm not at all convinced that stacking multiple Mutter plugins
  is a good idea. Think of mutter as 'libmutter' implemented
  with a weird inversion of control where main() lives in
  libmutter rather than in the application.

  Is there are reason this capability couldn't be built into
  Mutter?

* Do you know what technique you would be using to do the
  color correction?

  Do you render the whole screen to an offscreen buffer than
  color correct that when drawing to the stage?

  Or do you apply mapping tables to individual windows?

  This affects whether Clutter changes would be needed as 
  well.

Note that much of the screen when gnome-shell is rendering is *not*
windows, and Mutter doesn't see it being rendered at all - Mutter is
just adding actors to the Clutter stage and gnome-shell adds additional
actors to the Clutter stage. 

(This additional content will normally be sRGB content, though I suppose
you could imagine putting a non-sRGB photo as your desktop background
and wanting it to appear in full gamut.)

- Owen




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]