dispread
Author: Graeme Gill

## spectro/dispread

### Summary

Display test patches on a monitor, read the colorimetric value result with the colorimeter, and create the chart readings file. The type of instrument is determined by the communication port selected. Emission and display measurement instruments are supported.
If you want to read a display manually rather than automatically, see chartread and the -d option.

### Usage

dispread [-options] inoutfile
-v Verbose mode
-display displayname [X11 only] Choose X11 display name
-d n[,m] [X11 only]Choose the display from the following list (default 1),
and optionally choose a different display m for VideoLUT access.
-d n Choose the display from the following list (default 1)
-d web[:port] Display via a web server at port (default 8080)
`-d cc[:n]` `Display via n'th ChromeCast (default 1, ? for list)
` -d madvr [MSWin] Display via MadVR Video Renderer
-d dummy Dummy (non-existant, invisible) display
-c listno Set communication port from the following list (default 1)
-p Use telephoto mode (ie. for a projector, if available)
-a Use ambient mode (ie. for a projector, if available)
-y X Display type - instrument specific list to choose from.
-k file.cal Load calibration file into display while reading
-K file.cal Apply calibration file to test values while reading
`-V [MSWin] Enable MadVR color management (3dLut)`
-s Save spectral information (default don't save)
-P ho,vo,ss[,vs] Position test window and scale it
ho,vi: 0.0 = left/top, 0.5 = center, 1.0 = right/bottom etc.
ss: 0.5 = half, 1.0 = normal, 2.0 = double etc.
ss,vs: = optional horizontal, vertical scale.
-F Fill whole screen with black background
-E Video encode output as (16-235)/255 "TV" levels
-Z nbits Quantize test values to fit in nbits
-n [X11 only] Don't set override redirect on test window
-J Run calibration first (used rarely)
-N Disable initial calibration of instrument if possible
-h scale Scale instrument calibration patch values (default 1.0)
-H Use high resolution spectrum mode (if available)
-w Disable normalisation of white to Y = 100
-X file.ccmx Apply Colorimeter Correction Matrix
-X file.ccss Use Colorimeter Calibration Spectral Samples for calibration
-Q observ Choose CIE Observer for spectrometer or CCSS colorimeter data:
1931_2 (def.), 1964_10, `2015_2, 2015_10,` S&B 1955_2, shaw, J&V 1978_2, 1964_10c or file.cmf
-I b|w Drift compensation, Black: -Ib, White: -Iw, Both: -Ibw
`-Y R:rate Override measured refresh rate with rate Hz
` -Y A Use non-adaptive integration time mode (if available).
-Y p Don't wait for the instrument to be placed on the display
-Y k Omit the file.cal information from the .ti3 file
-C "command" Invoke shell "command" each time a color is set
-M "command" Invoke shell "command" each time a color is measured
-x x Take manually entered XYZ values
-W n|h|x Override serial port flow control: n = none, h = HW, x = Xon/Xoff
-D [level] Print debug diagnostics to stderr
inoutfile Base name for input[.ti1]/output[.ti3] file.
Examples
dispread mydisplay

### Comments

This is the tool for exercising a display, in order to measure its color characteristics. The device test colors are defined by the outfile.ti1 file, while the resulting device+colorimetric and optional spectral readings are stored in the outfile.ti3 file. Display calibration curves can be applied during the measurements, and the curves included in the resulting .ti3 data file using the -kflag. See dispcal for information on how to calibrate the display before profiling it. For best results, you should run this against a neutral grey desktop background, and avoid having any bright images or windows on the screen at the time you run it.
The -v flag reports progress information.
-display: When running on a UNIX based system that used the X11 Windowing System, dispread will by default use the $DISPLAY environment variable to determine which display and screen to read from. This can be overridden by supplying an X11 display name to the -display option. Note that if Xinerama is active, you can't select the screen using $DISPLAY or -display, you have to select it using the -d parameter.
-d: By default the main display will be the location of the test window. If the system has more than one display or screen, an alternate display/screen can be selected with the -d parameter. If you invoke dispread so as to display the usage information (i.e. "dispread -?" or "dispread --"), then the discovered displays/screens will be listed. Multiple displays may not be listed, if they appear as a single display to the operating system (ie. the multi-display support is hidden in the video card driver). On UNIX based system that used the X11 Windowing System, the -d parameter will override the screen specified by the $DISPLAY or -display parameter.
On X11 the inability to access VideoLUTs could be because you are trying to access a remote display, and the remote display doesn't support the XF86VidMode extension, or perhaps you are running multiple monitors using NVidia TwinView, or MergedFB, and trying to access anything other than the primary monitor. TwinView and MergedFB don't properly support the XF86VidMode extension for multiple displays. You can use dispwin -r to test whether the VideoLUTs are accessible for a particular display. See also below, on how to select a different display for VideoLUT access. Also note that dispcal will fail if the Visual depth doesn't match the VideoLUT depth. Typically the VideoLUTs have 256 entries per color component, so the Visual generally needs to be 24 bits, 8 bits per color component.
Because of the difficulty cause by TwinView and MergedFB in X11 based systems, you can optionally specify a separate display number after the display that is going to be used to present test patches, for accessing the VideoLUT hardware. This must be specified as a single string, e.g. -d 1,2 . Some experimentation may be needed using dispwin on such systems, to discover what screen has access to the VideoLUT hardware, and which screens the test patches appear on. You may be able to calibrate one screen, and then share the calibration with another screen. Profiling can be done independently to calibration.
-dweb or -dweb:port starts a standalone web server on your machine, which then allows a local or remote web browser to display the the color test patches. By default port 8080 is used, but this can be overridden by appending a : and the port number i.e. -dweb:8001. The URL will be http:// then name of the machine or its I.P. address followed by a colon and the port number - e.g something like http://192.168.0.1:8080. If you use the verbose option (-v) then a likely URL will be printed once the server is started, or you could run ipconfig (MSWin) or /sbin/ifconfig (Linux or OS X) and identify an internet address for your machine that way. JavaScript needs to be enabled in your web browser for this to work. You may have to modify any firewall to permit port 8080 to be accessed on your machine.
Note that if you use this method of displaying test patches, that there is no access to the display VideoLUTs and that the colors will be displayed with 8 bit per component precision, and any screen-saver or power-saver will not be disabled. You will also be at the mercy of any color management applied by the web browser, and may have to carefully review and configure such color management. See the -o flag for an explanation of the implications of having no access to the VideoLUTs.
-dcc or -dcc:no causes test patches to be displayed using and available ChromeCast to your TV. Use -dcc:? to display a list of ChromeCasts on your local network. Note that the ChromeCast as a test patch source is probably the least accurate of your choices, since it up-samples the test patch and transforms from RGB to YCC and back, but should be accurate within ± 1 bit. You may have to modify any firewall to permit port 8081 to be accessed on your machine if it falls back to the Default receiver (see installation instructions for your platform).
-dmadvr [MSWin only] causes test patches to be displayed using the MadVR video renderer. Note that will have to start MadTPG before running dispread, and that while you can adjust the "Test Pattern Configuration" controls, you should not normally alter the "Existing Calibration" controls, as dispread will set these appropriately. See also `-V flag.
`
-ddummy causes test patches not to be displayed at all. This is useful when used with the these appropriately. This is useful when patch values are going to be displayed via the -C option.
``
-c: The instrument is assumed to communicate through a USB or serial communication port, and the port can be selected with the -c option, if the instrument is not connected to the first port. If you invoke dispread so as to display the usage information (i.e. "dispread -?" or "dispread --"), then the discovered USB and serial ports will be listed. On UNIX/Linux, a list of all possible serial ports are shown, but not all of them may actually be present on your system.
The -p flag allows measuring in telephoto mode, using instruments that support this mode, e.g. the ColorMunki. Telephoto mode is one for taking emissive measurements from a distance (ie. telespectometer, tele-colorimeter) mode, and typically would be used for measuring projector type displays. If a device does not support a specific telephoto mode, then the normal emissive mode may be suitable for measuring projectors.
The -a flag allows measuring in ambient mode, using instruments that support this mode. This typically would be used for measuring projector type displays when the light levels reflected from the projection surface are very low. Note that this means that the color value will not be quite as accurate, because the effect the projection surface has on the color is not taken into account.
The -y flag allows setting the Display Type. The selection typically determines two aspects of of the instrument operation: 1) It may set the measuring mode to suite refresh or non-refresh displays. Typically only LCD (Liquid Crystal) displays have a non-refresh nature. 2) It may select an instrument calibration matrix suitable for a particular display type. The selections available depends on the type and model of instrument, and a list of the options for the discovered instruments will be shown in the usage information. For more details on what particular instruments support and how this works, see Operation of particular instruments. 3) Any installed CCSS files (if applicable), or CCMX files. These files are typically created using ccxxmake, and installed using oeminst. The default and Base Calibration types will be indicated in the usage.
-s: By default only the colorimetric information (XYZ value) will be saved, but for instruments that support spectral readings (such as the Gretag Spectrolino), the -s option will save the spectral readings to the .ti3 file as well.
-k: If a display video lookup table calibration .cal file is provided, it will be loaded into the display VideoLUTs while the measurements are being taken, thereby being applied to the measurement values, and the calibration will also included in the resulting .ti3 data file, so that colprof can include it as a vcgt tag in the resulting profile. This is the normal way to profile a calibrated display. The calibration file has usually been created using dispcal. If the calibration file indicates that the displays VideoLUTs are not accessible, or if they prove not to be accessible, then dispread will switch to -K mode (see below). If a calibration file is not supplied using -k or -K, then the display will be measured in whatever calibration state it is in, and no calibration information is saved to the resulting .ti3 file.
If the calibration file provided created using video range encoding (dispcal -E), then the -E option in dispread will be triggered automatically.
NOTE that the calibration is loaded into the display hardware just before the instrument starts measurement, after the test window first appears.
See also the -Y k flag.
-K: If a display video lookup table calibration .cal file is provided, it will be applied to the test values for each measurement, and also included in the resulting .ti3 data file, so that colprof can include it as a vcgt tag in the resulting profile. This is NOT normally the best way to profile a calibrated display, since the frame buffer may have lower precision than the VideoLUTs output values. This is the way calibration should be applied if MadVR is being used to display the test patches. If a calibration file is not supplied using -k or -K, then the display will be measured in whatever calibration state it is in, and no calibration information is saved to the resulting .ti3 file.
If the calibration file provided created using video range encoding (dispcal -E), then the -E option in dispread will be triggered automatically.
See also the -Y k flag.
-V: [MSWin] If using MadVR to display test patches, then enable Color Managenent (3dLut). This would be used for verification measurement.
The -P parameter allows you to position and size the test patch window. By default it is places in the center of the screen, and sized appropriately for the type of instrument, or 10% of the width of the display if the display size is unknown. The ho and vo values govern the horizontal and vertical offset respectively. A value of 0.0 positions the window to the far left or top of the screen, a value of 0.5 positions it in the center of the screen (the default), and 1.0 positions it to the far right or bottom of the screen. If three parameters are provided, then the ss parameter is a scale factor for the test window size. A value of 0.5 for instance, would produce a half sized window. A value of 2.0 will produce a double size window. If four parameters are provided, then the last two set independent horizontal and vertical scaling factors. Note that the ho,vo,ss or ho,vo,hs,vs numbers must be specified as a single string (no space between the numbers and the comma). For example, to create a double sized test window at the top right of the screen, use -P 1,0,2 . To create a window twice as wide as high: -P 1,0,2,1.
The -F flag causes the while screen behind the test window to be masked with black. This can aid black accuracy when measuring CRT displays or projectors.
The -E flag causes the test values to be scaled to the Video RGB encoding range of 16/255 to 235/255. If the calibration file provided using the -k or -K flag was created using video range encoding, then this option will be triggered automatically. This will also set quantization of 8 bits (see -Z flag below). If your frame buffer and video connection is better than 8 bits (ie. 10 or 12 bits), then you may wish to raise this default.
-Z nbits Normally the target device values are floating point numbers that may get rounded and quantized in the process of printing them or reproducing them on the display device. If some of this quantization can be accounted for, it may improve the accuracy of the resulting profile, and the Z parameter allows this quantization to be specified. The parameter is the number of binary digits (bits) that the device values should be quantized to. This will depend on the frame buffer depth that dispread has access to, and for MSWindows and Apple OS X this is typically 8 bits, while X11 systems may have access to a deeper frame buffer. If Video encoding is selected (see -E flag above), then 8 bits is selected by default. On systems using a VGA connection or Display Port with a deeper than 8 bit frame buffer and similar path to the display, or if using the MadVR rendered with dithering, then a higher bit depth is typically possible.
Often it is hard to notice any practical difference whether this option is used or not, since the repeatability of displays and measurement instruments can often exceed the extra precision of 8 bits per color component. The benefits of extra frame buffer precision are mainly in the areas of better smoothness for gradients, particularly using wide gamut or HDR displays, while sampling of color spaces for the purposes of profiling is typically sparse due to limitations of measurement speed.
-n: When running on a UNIX based system that used the X11 Windowing System, dispread normally selects the override redirect so that the test window will appear above any other windows on the display. On some systems this can interfere with window manager operation, and the -n option turns this behaviour off.
The -J option runs through the black and sensor relative calibration routines for the Xrite DTP92 and DTP94 instrument, the black level calibration for the Eye-One Display 1, and a CRT frequency calibration for the Eye-One Display 2. For the black calibration the instrument should be placed on an opaque, black surface, and any stray light should be avoided by placing something opaque over the instrument. If a Spectrolino is being used, then a white and black calibration will always be performed before the instrument can be placed on the display, unless the -N flag is used. Generally it is not necessary to do a calibration every time an instrument is used, just now and again. There is no point in doing a CRT frequency calibration, as this will be done automatically at the commencement of patch reading.
-N Any instrument that requires regular calibration will ask for calibration on initial start-up. Sometimes this can be awkward if the instrument is being mounted in some sort of measuring jig, or annoying if several sets of readings are being taken in quick succession. The -N suppresses this initial calibration if a valid and not timed out previous calibration is recorded in the instrument or on the host computer. It is advisable to only use this option on the second and subsequent measurements in a single session.
-h scale Often there are automatic display instrument calibrations, such as measuring the time between changing a patch color and the instrument registering it, measuring the refresh rate, or calibrating the instrument. These calibrations use pre-set patch values that may not be ideal for HDR displays, so the -h scale parameter allows scaling these values down. A value less than 1.0 would typically be provided. This value does not affect the .ti1 test patch values.
The -H option turns on high resolution spectral mode, if the instrument supports it. See Operation of particular instruments for more details. This may give better accuracy for display measurements.
The -w flag disables the normalisation of the white patch value to 100.0, resulting in values that are in cd/m^2. This is mainly for diagnostic purposes. By default dispread will add a white patch if the .ti1 file doesn't contain one, so that the .ti3 values can be normalized to 100.0, but this is not done if the -w flag is used. If -w is used and the .ti1 file doesn't contain a white patch, then the brightness of the display will not be recorded in the resulting .ti3 file (LUMINANCE_XYZ_CDM2).
The -X file.ccmx option reads a Colorimeter Correction Matrix from the given file, and applies it to the colorimeter instruments readings. This can improve a colorimeters accuracy for a particular type of display. A list of contributed ccmx files is here.
The -X file.ccss option reads a Colorimeter Calibration Spectral Sample from the given file, and uses it to set the colorimeter instruments calibration. This will only work with colorimeters that rely on sensor spectral sensitivity calibration information (ie. the X-Rite i1d3, or the DataColor Spyder4 & Spyder 5).This can improve a colorimeters accuracy for a particular type of display. A list of contributed ccss files is here.
The -Q flag allows specifying a tristimulus observer, and is used to compute PCS (Profile Connection Space) tristimulus values from spectral readings or using a colorimeter that has CCSS capability. The following choices are available:
1931_2 selects the standard CIE 1931 2 degree observer. The default.
1964_10 selects the standard CIE 1964 10 degree observer.
2015_2 selects the standard CIE 2015 2 degree observer
2015_10 selects the standard CIE 2015 10 degree observer
1955_2 selects the Stiles and Birch 1955 2 degree observer
1978_2 selects the Judd and Voss 1978 2 degree observer
shaw selects the Shaw and Fairchild 1997 2 degree observer
1964_10c selects a version of the CIE 1964 10 degree observer that has been adjusted using a 3x3 matrix to better agree with the 1931 2 degree observer.
file.cmf selects an observer specified by the given .cmf file.
NOTE that if you select anything other than the default 1931 2 degree observer, that the Y values will not be cd/m^2, due to the Y curve not being the CIE 1924 photopic V(λ) luminosity function.
The -I b|w options invoke instrument black level, and display white level compensation (respectively). Instrument black level drift compensation attempts to combat instrument black calibration drift by using an initial display black test patch as a reference,and then measuring black patches regularly between other measurements. If an instrument is not acclimatised sufficiently to the measurement conditions, changes in temperature can affect the black readings. Display white level drift compensation attempts to combat changes in display brightness and white point as it warms up by measuring white patches regularly between other measurements, and using them to normalise all the other readings to the final white value. If just instrument black drift compensation is needed, use -Ib. If just display white level compensation is needed, use -Iw. If both are needed, use -Ibw or -Iwb.
The -Y R:rate options overrides calibration of the instrument refresh rate. This may be useful if the instrument supports this function and the refresh rate cannot be accurately calibrated from the display itself.
The -Y A option uses a non-adaptive integration time emission measurement mode, if the instrument supports it, such as the Eye-One Pro, ColorMunki, i1d3 and K10. By default an adaptive integration time measurement mode will be used for emission measurements, but some instruments support a fixed integration time mode that can be used with display devices. This may give faster measurement times, but may also give less accurate low level readings.
The -Y p option skips asking the user to place the instrument on the display. Normally a grey patch is displayed, and then the user is asked to confirm that the instrument is in place, so that readings can commence. This flag disables that check. This may be useful in automating certain operations.
The -Y k option is used, then calibration information is omitted, and the resulting profile will not have a 'vcgt' tag. Normally when calibration information is provided using the -k or -K options, this is saved to the resulting .ti3 file so that a profile can be created with a matching 'vcgt' calibration tag.
The -C "command" option allows a method of relaying each test value to some other display than that on the system running dispread (for instance, a photo frame, PDA screen etc.), by causing the given command to be invoked to the shell, with six arguments. The first three arguments are the RGB test color as integers in the range 0 to 255, the second three parameters are the RGB test color as floating point numbers in the range 0.0 to 1.0. The script or tool should relay the given color to the screen in some manner (e.g. by generating a raster file of the given color and sending it to the display being profiled), before returning. Note that a test window will also be created on the system running dispread.
The -M "command" option allows a method of gathering each test value from some external source, such as an instrument that is not directly supported by Argyll. The given command is involked to the shell, with six arguments. The first three arguments are the RGB test color as integers in the range 0 to 255, the second three parameters are the RGB test color as floating point numbers in the range 0.0 to 1.0. The script or tool should create a file called "command.meas" that contains the XYZ values for the given RGB (or measured from the test window) in cd/m^2 as three numbers separated by spaces, before returning. If the command returns a non-zero return value, dispread will abort. Note that a test window will also be created on the system running dispread.
The -x flag causes dispread to expect values to be manually entered for each reading, rather than using an instrument to do the measurements. This mode is ideal if your instrument is not supported by Argyll. XYZ values should be entered. It is possible to navigate about the test values being measured, so as to do them in any order, as well as re-do values, in case of any mistakes.
The -W n|h|x parameter overrides the default serial communications flow control setting. The value n turns all flow control off, h sets hardware handshaking, and x sets Xon/Xoff handshaking. This commend may be useful in workaround serial communications issues with some systems and cables.
The -D flag causes communications and other instrument diagnostics to be printed to stdout. A level can be set between 1 .. 9, that may give progressively more verbose information, depending on the instrument. This can be useful in tracking down why an instrument can't connect.
The final parameter on the command line is the base filename for the .ti1 input file, and the .ti3 output file. dispread will add the .ti1 and .ti3 extensions automatically.
NOTE that on an X11 system, if the environment variable ARGYLL_IGNORE_XRANDR1_2 is set (ie. set it to "yes"), then the presence of the XRandR 1.2 extension will be ignored, and other extensions such as Xinerama and XF86VidMode extension will be used. This may be a way to work around buggy XRandR 1.2 implementations.

If a large number of patches is being read, the screensaver on many systems can interfere with the operation of dispread. It is therefore advisable in these cases to manually turn off the screensaver before commencing the measurements.
If communications break down with a USB connected instrument, you may have to unplug it, and plug it in again to recover.
Some systems (Apple OSX in particular) have a special set of user interface controls ("Universal Access") that allows altering the display in ways designed to assist visually impaired users, by increasing contrast etc. This will interfere badly with any attempts to calibrate or profile such a system, and must be turned off in order to do so. Note that certain magic keyboard sequences can turn this on by accident.