[argyllcms] Re: Bug in 1.9 beta

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Mon, 29 Aug 2016 10:56:43 +1000

ternaryd wrote:

The member fdepth of the dispwin struct holds
the number of bits which are needed to
represent the size of the array regarding each
individual color channel.

Yes, the size of the X11 LUT for each channel.

This number is not
related to the (conceptual) size of each member
in the array nor to the number of bits which are
actually significant in that array. In X11 the
member size would be 16 unsigned bits.

No, this is specified by the bits_per_rgb entry
in XVisualInfo,

The call
to XGetVisualInfor() tells how many
_significant_ bits are included (a number less
than 16, and with that the value to express
100% intensity on the array's output side).

Sorry - which structure member are you referring to ?

The number of entries and the number of
significant bits do not depend on each other.


Thus, the warning

"Expected VideoLUT depth %d doesn't match actual %d"

is not correct because essentially it compares
the data size of the array index with the data
size of the array member.


There are 4 possible elements from the frame buffer out,
and they and the corresponding depth as recorded by ArgyllCMS
ramdac structure are:

 Frame buffer: depth fdepth. fdepth is determined from the
 X11 map_entries (== colormap_size).

 X11 per channel LUT. Index depth fdepth, entry size rdepth.
 rdepth is determined from the X11 bits_per_rgb.

 Graphics card HW interpolator. This scales values from
 rdepth to ndepth.

 RAMDAC (Hardware VideoLUT). Index depth is ndepth. ndepth
 is speficied by XRANDR XRRGetCrtcGammaSize() call.

 RAMDAC entry size is assumed to be 16 bits. The actual
 number of significant bits is not available, and X11 is
 assumed to scale appropriately.

The warning is issues when rdepth != ndepth, and there
is an implicit HW interpolation being performed.

Graeme Gill.

Other related posts: