Screen calibration not applied if full screen display

OS (e.g. Win10): Win11
PsychoPy version (e.g. 2024.2.4 Py 3.8): 2026.2.3
Standard Standalone Installation? (y/n) If not then what?: y
Do you want it to also run online? (y/n): n
What are you trying to achieve?:

EIZO_CS2731.json (3.6 KB)

Hello everyone,

I’m trying to run an experiment using the Builder with a monitor (EIZO CS2731) that has been previously calibrated*. The calibration is not applied when the experiment is run in full-screen mode, because the displayed colors have the same luminance as those obtained with the uncalibrated default monitor (testMonitor). The Builder version must be 2026.x.x for various reasons related to the experimental paradigm, and full-screen mode is required because otherwise the Windows taskbar appears during the experiment.

What I have tried so far :

  • (Un-)tick the “full screen” option either in Psychopy Preferences (fullscr) or in the Experiment Settings (Full-Screen Window): the expected “true” colors are displayed only when the display is not in full-screen mode.
  • Run a minimal experiment (one stimulus + one response) in the Builder using the same calibration file: same results
  • Modify the calibration file itself by matching the “psychopyVersion” attribute to that of the currently running Builder, and the type of the stored values (float64 → float32…): same results
  • Enable/disable frame rate measurement when launching the experiment: same results

I’m attaching the calibration file in case it helps.

I may be missing something obvious, but if you have any suggestions to help me out that would be great!

Thanks in advance,

Ugo

* Since semi-automatic calibration wasn’t possible on any 2026.x.x version of the Builder, I performed it on an earlier version, kept the calibration file (ScreenName.json), reinstalled a 2026 version of the Builder, and moved the calibration file to Users > AppData > Roaming > psychopy3 > monitors (as indicated in Gamma calibration error (using monitor center) - #4 by jon ). The calibration file appears to be read correctly by the Builder, since all of its information is displayed in the Monitor Center and the gamma curves plot display without any issues.

Hi Ugo,

I suspect this is something to do with the graphics card and-or OS doing something funky. At present we set the gamma table using operating system calls that adjust the hardware LUT on the graphics card BUT if the card chooses to ignore that or the operating system doesn’t pass it on then it doesn’t work.

We have seen, for example:

  • computers where the LUT is only used for one of the screens (there’s one LUT but multiple output ports on most computers, no way to handle both, and then the graphics card chooses to use the LUT just for one of the outputs)
  • computers that ignore the LUT under certain conditions (I guess when the operating system uses a “window compositor”)
  • some versions of MacOS setting the LUT with incorrect values so that gamma correction is completely broken!

I haven’t yet seen the situation you’re talking about where the LUT is not applied when in full-screen mode but I think it must be related. If there is another output port on the card you could try switching to that.

This all points to something I’ve had in mind for some time, but which we should push up the priorities, which is that we should stop using these graphics card look-up-tables and rely on our own gamma correction earlier in the graphics pipeline (ie. using GL Shaders instead) so that these machine-specific differences don’t affect us.

Best wishes
Jon