Oyranos/X11 Requirements

From ColourWiki

(Difference between revisions)
Revision as of 09:03, 22 Sep 2010
KaiUweBehrmann (Talk | contribs)
add net-color spec TODOs
← Go to previous diff
Current revision
KaiUweBehrmann (Talk | contribs)
References - mark other done issue
Line 21: Line 21:
** a "no colour conversions" flag ** a "no colour conversions" flag
** a "no calibration from graphic card gamma tables" flag ** a "no calibration from graphic card gamma tables" flag
-* the virtually thierd is that every other content is expected as sRGB, as is the case today+* the virtually third is that every other content is expected as sRGB, as is the case today
The above would fit along all the path: The above would fit along all the path:
Line 27: Line 27:
There remains to find an endpoint where most paths meet. This could be the composite manager or a additional layer between composite manager and Xorg or inside Xorg itself. There remains to find an endpoint where most paths meet. This could be the composite manager or a additional layer between composite manager and Xorg or inside Xorg itself.
-The OpenICC project [http://www.freedesktop.org/wiki/OpenIcc/ColorManagementNearX Colour Management Near X] implemented the idea. As a result the net-color spec was born to describe the basic communication. It covers and continues most of the above outlined ideas.+The OpenICC project [http://www.freedesktop.org/wiki/OpenIcc/ColorManagementNearX Colour Management Near X] implemented the idea. As a result the X Color Management spec was born to describe the basic communication. It covers and continues most of the above outlined ideas.
== Multi Monitor EDID in X11 == == Multi Monitor EDID in X11 ==
Line 37: Line 37:
You can check independently whether a EDID atom is set by calling in a X11 environment: You can check independently whether a EDID atom is set by calling in a X11 environment:
xprop -root | grep EDID xprop -root | grep EDID
 +
 +The modern way is to search for the EDID data in the xrandr output:
 + xrandr --prop | grep EDID
=== Specification === === Specification ===
Line 49: Line 52:
=== Parsing === === Parsing ===
-This section is incomplete. But at least the code can be found here [http://www.oyranos.org/scm?p=oyranos.git;a=tree;f=modules/devices oyranos_edid_parse.c]+This section is incomplete. But at least the code can be found here in libXcm-0.3.x and higher.
The section decribes the EDID parsing in Oyranos. The section decribes the EDID parsing in Oyranos.
Line 60: Line 63:
=== References === === References ===
-* The issue was initially thrown to [https://bugs.freedesktop.org/show_bug.cgi?id=3910 the fd.o bugtracker].+* (done) The issue was initially thrown to [https://bugs.freedesktop.org/show_bug.cgi?id=3910 the fd.o bugtracker].
* [http://www.mail-archive.com/devel@xfree86.org/msg01297.html Re: DDC Atoms & Xinerama] * [http://www.mail-archive.com/devel@xfree86.org/msg01297.html Re: DDC Atoms & Xinerama]
-* [https://bugs.freedesktop.org/show_bug.cgi?id=16639 support request for XRandR in nv and nvidia drivers]+* (done) [https://bugs.freedesktop.org/show_bug.cgi?id=16639 support request for XRandR in nv and nvidia drivers]
=== Versions / Implementations === === Versions / Implementations ===
Line 74: Line 77:
=== Further Tasks === === Further Tasks ===
-[[ICC_Profiles_in_X_Specification_0.4|(Draft for a ICC Profiles in X Specification 0.4)]]+[[ICC_Profiles_in_X_Specification_0.5|(Draft for a ICC Profiles in X Specification 0.5)]]
* add xrandr-1.2 porperties per each physical output device * add xrandr-1.2 porperties per each physical output device
-== net-color spec ==+== X Color Management spec ==
The goal is to communicate ICC colour regions between a colour server and clients. The goal is to communicate ICC colour regions between a colour server and clients.
=== References === === References ===
-[[Oyranos/net-color_spec_0.2|Draft of net-color spec 0.2]]+[http://www.oyranos.org/scm?p=xcolor.git;a=blob;f=docs/X_Color_Management.txt X Color Management in libXcm git]
=== Implementations === === Implementations ===
-The implementation is available in [http://www.spinics.net/lists/xorg/msg50027.html libXcm-0.2.x].+The implementation is available in [http://www.spinics.net/lists/xorg/msg50027.html libXcm-0.2.x] and later.
The CompIcc ICC colour server for compiz plugin supports the draft. The plugin supports complete desktop colour correction and is multi monitor aware. The CompIcc ICC colour server for compiz plugin supports the draft. The plugin supports complete desktop colour correction and is multi monitor aware.
Line 96: Line 99:
** convert remaining desktop from native monitor space to document colour space ** convert remaining desktop from native monitor space to document colour space
** use document colour space from _ICC_PROFILE(_xxx) (typical sRGB) ** use document colour space from _ICC_PROFILE(_xxx) (typical sRGB)
-* describe _NET_COLOR_PROFILES (3D scene/2D vector colour correction)+* describe _ICC_COLOR_PROFILES (3D scene/2D vector colour correction)
-** server and client side implementation+** server side implementation
 +** client is the xcm tool in the Xcm package
 + 
 +== ICC meta Tag for Monitor Profiles ==
 + 
 +The specification provides means to embed monitor information into ICC profiles.
 + 
 +=== References ===
 + 
 +* [http://www.freedesktop.org/wiki/Specifications/icc_meta_tag_for_monitor_profiles ICC meta Tag for Monitor Profiles] @ fd.o
 +* older versions can be found in the [http://www.oyranos.org/wiki/index.php?title=Category:Standards Category:Standards]
 + 
 +=== Implementations ===
 + 
 +* xcmedid provides a JSON format output with complying keys and values, which can be used to embed that data into a ICC profile.
 + 
 +* dispcalGUI supports writing of these meta data.
 + 
 +* Taxi stores these meta data along with ICC profiles online.
 +* Oyranos CMS can lockup meta data from profiles on disk or search in the Taxi ICC DB for matching profiles.
== Miscellaneous == == Miscellaneous ==
Line 111: Line 133:
* ICC colour management policiy * ICC colour management policiy
** [http://www.fltk.org/str.php?L2411 FLTK feature request] ** [http://www.fltk.org/str.php?L2411 FLTK feature request]
-** [http://bugreports.qt.nokia.com/browse/QTBUG-13370 Qt feature request]+** [http://bugreports.qt.nokia.com/browse/QTBUG-6582 Qt feature request]
[[Oyranos|back -> Oyranos]] [[Oyranos|back -> Oyranos]]
[[Category:Oyranos]] [[Category:Oyranos]]
[[Category:Standards]] [[Category:Standards]]

Current revision

Oyranos has some requirements to provide colour management related informations through it's APIs. For further reading see Monitor Configuration.

Table of contents

Architectural Overview

Applications need a way to communicate colorimetry of their image content. Applications, which like to handle colour management (CM) on their own, need additional a path to tell the system what to do with the content and what not.

Applications can follow several strategies:

  1. be dumb - The application knows nothing about CM. The system takes content as being in a default RGB colour space and does colour matching. Most applications would fall in this category.
  2. tag content - The application knows about the colorimetry of its content and tells the system about it.
  3. take over control - The application knows best how to handle its content. Tell the system to not match content with following options:
    1. Dont apply colour conversions. This is for proofing and image editing applications.
    2. Dont apply calibration from graphic card gamma tables. This is useful for HDR content.

The "take over control" kind of applications want additionally to know about the screen layout and monitor colorimetry. This is handled by Xinerama alike API's and the _ICC_PROFILE_xxx atom.

Screen Areas and Colour Space tagging

Two things are needed,

  • a ICC profile container attached to window or screen region
  • a opt out flags for colour correction down the path, so applications can handle colour management on their own
    • a "no colour conversions" flag
    • a "no calibration from graphic card gamma tables" flag
  • the virtually third is that every other content is expected as sRGB, as is the case today

The above would fit along all the path:

 application -> toolkit -> composite manager -> X11 -> OpenGL -> shader.

There remains to find an endpoint where most paths meet. This could be the composite manager or a additional layer between composite manager and Xorg or inside Xorg itself.

The OpenICC project Colour Management Near X (http://www.freedesktop.org/wiki/OpenIcc/ColorManagementNearX) implemented the idea. As a result the X Color Management spec was born to describe the basic communication. It covers and continues most of the above outlined ideas.

Multi Monitor EDID in X11

EDID information describes monitor parameters like description, serial number and gives hints about colourimetric behaviour.

Oyranos uses this information to identify a particular monitor and search for a best matching profile, as long as one is stored in the Oyranos device profile database.

You can check independently whether a EDID atom is set by calling in a X11 environment:

xprop -root | grep EDID

The modern way is to search for the EDID data in the xrandr output:

xrandr --prop | grep EDID

Specification

X servers export the EDID inormation typically in the "XFree86_DDC_EDID1_RAWDATA" and "XFree86_DDC_EDID2_RAWDATA" atom. If there are more monitors connected to the root window, the following atoms get a underscore and the monitor number appended, like in

Example

Xinerama_screen_number = 0 => XFree86_DDC_EDID1_RAWDATA

Xinerama_screen_number >= 1 => XFree86_DDC_EDID1_RAWDATA_1 + XFree86_DDC_EDID1_RAWDATA_2 ...

This way compatibility is enshured for existing applications.

Parsing

This section is incomplete. But at least the code can be found here in libXcm-0.3.x and higher.

The section decribes the EDID parsing in Oyranos.

Oyranos parses EDID information for monitor identification. It uses the 18 byte blocks starting from 54 for a monitor manufacturer, model and serial ID string. In case the manufacturer was omitted, it switches back to scan the 2 byte ID's starting at position 8. The later could be extended to model(10) and serial(12).

References

Versions / Implementations

Oyranos 0.1.5 obtained the oyranos-monitor-nvidia commandline tool to demonstrate the described behaviour.

ICC Profiles in X

References

Further Tasks

(Draft for a ICC Profiles in X Specification 0.5)

  • add xrandr-1.2 porperties per each physical output device

X Color Management spec

The goal is to communicate ICC colour regions between a colour server and clients.

References

X Color Management in libXcm git (http://www.oyranos.org/scm?p=xcolor.git;a=blob;f=docs/X_Color_Management.txt)

Implementations

The implementation is available in libXcm-0.2.x (http://www.spinics.net/lists/xorg/msg50027.html) and later.

The CompIcc ICC colour server for compiz plugin supports the draft. The plugin supports complete desktop colour correction and is multi monitor aware.

Ideas exist to support the spec in a Gnome window manager.

Further Tasks

  • screenshot tools
    • take tagged regions as is - they are already colour corrected
    • convert remaining desktop from native monitor space to document colour space
    • use document colour space from _ICC_PROFILE(_xxx) (typical sRGB)
  • describe _ICC_COLOR_PROFILES (3D scene/2D vector colour correction)
    • server side implementation
    • client is the xcm tool in the Xcm package

ICC meta Tag for Monitor Profiles

The specification provides means to embed monitor information into ICC profiles.

References

Implementations

  • xcmedid provides a JSON format output with complying keys and values, which can be used to embed that data into a ICC profile.
  • dispcalGUI supports writing of these meta data.
  • Taxi stores these meta data along with ICC profiles online.
  • Oyranos CMS can lockup meta data from profiles on disk or search in the Taxi ICC DB for matching profiles.

Miscellaneous

References

30-bit visual bugs


Colour Management and Toolkits

back -> Oyranos