Zandronum Chat on our Discord Server Get the latest version: 3.0
Source Code

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003770Zandronum[All Projects] Bugpublic2020-03-20 20:332021-02-23 21:54
Assigned To 
PlatformPCOSMicrosoft WindowsOS Version10
Product Version3.1 
Target VersionFixed in Version 
Summary0003770: SetDeviceGammaRamp() unreliable in multi-display setup
DescriptionThis issue is difficult to diagnose because so far 3 different systems have given me 3 different results. The problem is:

When there is more than one monitor connected to the system, SetDeviceGammaRamp() when called on a HDC obtained from GetDC() may fail and not set gamma at all. The observed problem is that the `gamma` CCMD doesn't work in OpenGL.

I can reproduce this problem with 100% repetition on my main Win 10 PC only if I connect a second monitor to my GPU. When I have just one monitor, there is no problem.

On my laptop (with Windows 7) I can reproduce a different problem with SetDeviceGammaRamp(): the function works as the gamma is set, but it returns FALSE as if it failed.

Pol M says that there is no problem at all on his computer.

I did some research in to this issue and it seems that SetDeviceGammaRamp() is more reliable if the HDC is not obtained from GetDC() but from CreateDC(). Using CreateDC() is also the way to control the monitors separately.

The problem is not present in the recent GZDoom versions. GZDoom doesn't call SetDeviceGammaRamp() anymore. It seems that they've converted to applying the gamma adjustments in the shaders.

There is also no problem in Zandronum's software mode at all.
Additional InformationHere's an app that has two examples:

1. Example 1 uses GetDC() (the same as Zandronum) and fails on my PC with more than one monitor
2. Example 2 uses CreateDC() and succeeds [^]

This problem may be the same problem that was reported in ticket 0002957.
Attached Files

- Relationships

-  Notes
User avatar (0021573)
otarU1921 (reporter)
2020-12-03 14:22

I have the same problem when using multi-monitor setups on AMD GPU.

Contrast, Brightness, Gamma doesn't work using OpenGL on Zandronum when you launch Zandronum and have at least 2 displays on.

GZDoom works fine.
User avatar (0021576)
Visual Vincent (reporter)
2020-12-07 09:57
edited on: 2020-12-07 09:58

I can confirm this issue as well. Neither Contrast, Brightness nor Gamma works on Windows 10 when I have multiple monitors connected. It does however work perfectly fine on my Windows 7 partition on the exact same PC, regardless of the number of monitors used.

- My specs -
Zandronum: 3.0 (170901-1140)
OS: Windows 10 20H2 (19042.630)
CPU: Intel Core i5-6500 Skylake
RAM: 16 GB @ 2133 MHz (single stick)
GPU: AMD Radeon RX 580 (8 GB)
Monitors: 3 (2 DisplayPort, 1 HDMI) @ 144 Hz

I can confirm the same issue also occurs for a friend of mine, who has the exact same GPU as me (don't know his Windows 10 version, though).

User avatar (0021602)
Visual Vincent (reporter)
2021-02-23 21:54

While we're waiting for this to get fixed I put together a small program with a slider that lets you change the Gamma on all your monitors. It's based on Zalewa's workaround using CreateDC() instead of GetDC() (thanks for finding that, by the way!)

I've tested it on my Windows 10 20H2 system and it appears to work with Zandronum: [^]

Issue Community Support
Only registered users can voice their support. Click here to register, or here to log in.
Supporters: EpicTyphlosion
Opponents: No one explicitly opposes this issue yet.

- Issue History
Date Modified Username Field Change
2020-03-20 20:33 Zalewa New Issue
2020-12-03 14:22 otarU1921 Note Added: 0021573
2020-12-07 09:57 Visual Vincent Note Added: 0021576
2020-12-07 09:57 Visual Vincent Note Edited: 0021576 View Revisions
2020-12-07 09:58 Visual Vincent Note Edited: 0021576 View Revisions
2020-12-07 09:58 Visual Vincent Note Edited: 0021576 View Revisions
2021-02-23 21:54 Visual Vincent Note Added: 0021602

Questions or other issues? Contact Us.


Copyright © 2000 - 2021 MantisBT Team
Powered by Mantis Bugtracker