Created attachment 34287 [details] Urban Terror with bad gamma With xf86-video-radeon 6.12, gamma correction does not work anymore in 3D (tested with Urban Terror) - everything is dark and in-game gamma adjustment does not change anything.
Created attachment 34288 [details] X log
Created attachment 34289 [details] dmesg
Was there a previous version of the driver where gamma worked and if so which version?
Sorry, the 6.12 in the first post was not correct. Gamma does not work since at least 6.12.4 (still does not work in 6.12.192 - as seen in X log). It worked fine in 6.12.2 (that was with xserver 1.6.3 - slackware 13.0).
xgamma from commandline works. So when I do "xgamma -gamma 1.8" and start the game, it looks good. Only the in-game gamma setting does nothing.
I think this is actually an SDL issue then.
Yes, it uses SDL, namely this function: int X11_SetGammaRamp(_THIS, Uint16 *ramp) { int i, ncolors; XColor xcmap[256]; /* See if actually setting the gamma is supported */ if ( SDL_Visual->class != DirectColor ) { SDL_SetError("Gamma correction not supported on this visual"); return(-1); } /* Calculate the appropriate palette for the given gamma ramp */ ncolors = SDL_Visual->map_entries; for ( i=0; i<ncolors; ++i ) { Uint8 c = (256 * i / ncolors); xcmap[i].pixel = SDL_MapRGB(this->screen->format, c, c, c); xcmap[i].red = ramp[0*256+c]; xcmap[i].green = ramp[1*256+c]; xcmap[i].blue = ramp[2*256+c]; xcmap[i].flags = (DoRed|DoGreen|DoBlue); } XStoreColors(GFX_Display, SDL_XColorMap, xcmap, ncolors); XSync(GFX_Display, False); return(0); } ncolors is 256, xcmap is: xcmap[0] .pixel=0, .red=0, .green=0, .blue=0 xcmap[1] .pixel=65793, .red=9509, .green=9509, .blue=9509 xcmap[2] .pixel=131586, .red=12079, .green=12079, .blue=12079 xcmap[3] .pixel=197379, .red=13878, .green=13878, .blue=13878 xcmap[4] .pixel=263172, .red=15163, .green=15163, .blue=15163 xcmap[5] .pixel=328965, .red=16448, .green=16448, .blue=16448 xcmap[6] .pixel=394758, .red=17733, .green=17733, .blue=17733 xcmap[7] .pixel=460551, .red=18504, .green=18504, .blue=18504 xcmap[8] .pixel=526344, .red=19532, .green=19532, .blue=19532 xcmap[9] .pixel=592137, .red=20303, .green=20303, .blue=20303 xcmap[10] .pixel=657930, .red=21074, .green=21074, .blue=21074 xcmap[11] .pixel=723723, .red=21845, .green=21845, .blue=21845 xcmap[12] .pixel=789516, .red=22359, .green=22359, .blue=22359 xcmap[13] .pixel=855309, .red=23130, .green=23130, .blue=23130 xcmap[14] .pixel=921102, .red=23644, .green=23644, .blue=23644 xcmap[15] .pixel=986895, .red=24415, .green=24415, .blue=24415 xcmap[16] .pixel=1052688, .red=24929, .green=24929, .blue=24929 xcmap[17] .pixel=1118481, .red=25443, .green=25443, .blue=25443 xcmap[18] .pixel=1184274, .red=25957, .green=25957, .blue=25957 xcmap[19] .pixel=1250067, .red=26471, .green=26471, .blue=26471 xcmap[20] .pixel=1315860, .red=26985, .green=26985, .blue=26985 xcmap[21] .pixel=1381653, .red=27242, .green=27242, .blue=27242 xcmap[22] .pixel=1447446, .red=27756, .green=27756, .blue=27756 xcmap[23] .pixel=1513239, .red=28270, .green=28270, .blue=28270 xcmap[24] .pixel=1579032, .red=28527, .green=28527, .blue=28527 xcmap[25] .pixel=1644825, .red=29041, .green=29041, .blue=29041 xcmap[26] .pixel=1710618, .red=29555, .green=29555, .blue=29555 xcmap[27] .pixel=1776411, .red=29812, .green=29812, .blue=29812 xcmap[28] .pixel=1842204, .red=30326, .green=30326, .blue=30326 xcmap[29] .pixel=1907997, .red=30583, .green=30583, .blue=30583 xcmap[30] .pixel=1973790, .red=30840, .green=30840, .blue=30840 xcmap[31] .pixel=2039583, .red=31354, .green=31354, .blue=31354 xcmap[32] .pixel=2105376, .red=31611, .green=31611, .blue=31611 xcmap[33] .pixel=2171169, .red=32125, .green=32125, .blue=32125 xcmap[34] .pixel=2236962, .red=32382, .green=32382, .blue=32382 xcmap[35] .pixel=2302755, .red=32639, .green=32639, .blue=32639 xcmap[36] .pixel=2368548, .red=32896, .green=32896, .blue=32896 xcmap[37] .pixel=2434341, .red=33410, .green=33410, .blue=33410 xcmap[38] .pixel=2500134, .red=33667, .green=33667, .blue=33667 xcmap[39] .pixel=2565927, .red=33924, .green=33924, .blue=33924 xcmap[40] .pixel=2631720, .red=34181, .green=34181, .blue=34181 xcmap[41] .pixel=2697513, .red=34438, .green=34438, .blue=34438 xcmap[42] .pixel=2763306, .red=34952, .green=34952, .blue=34952 xcmap[43] .pixel=2829099, .red=35209, .green=35209, .blue=35209 xcmap[44] .pixel=2894892, .red=35466, .green=35466, .blue=35466 xcmap[45] .pixel=2960685, .red=35723, .green=35723, .blue=35723 xcmap[46] .pixel=3026478, .red=35980, .green=35980, .blue=35980 xcmap[47] .pixel=3092271, .red=36237, .green=36237, .blue=36237 xcmap[48] .pixel=3158064, .red=36494, .green=36494, .blue=36494 xcmap[49] .pixel=3223857, .red=36751, .green=36751, .blue=36751 xcmap[50] .pixel=3289650, .red=37008, .green=37008, .blue=37008 xcmap[51] .pixel=3355443, .red=37265, .green=37265, .blue=37265 xcmap[52] .pixel=3421236, .red=37522, .green=37522, .blue=37522 xcmap[53] .pixel=3487029, .red=37779, .green=37779, .blue=37779 xcmap[54] .pixel=3552822, .red=38036, .green=38036, .blue=38036 xcmap[55] .pixel=3618615, .red=38293, .green=38293, .blue=38293 xcmap[56] .pixel=3684408, .red=38550, .green=38550, .blue=38550 xcmap[57] .pixel=3750201, .red=38807, .green=38807, .blue=38807 xcmap[58] .pixel=3815994, .red=39064, .green=39064, .blue=39064 xcmap[59] .pixel=3881787, .red=39321, .green=39321, .blue=39321 xcmap[60] .pixel=3947580, .red=39578, .green=39578, .blue=39578 xcmap[61] .pixel=4013373, .red=39578, .green=39578, .blue=39578 xcmap[62] .pixel=4079166, .red=39835, .green=39835, .blue=39835 xcmap[63] .pixel=4144959, .red=40092, .green=40092, .blue=40092 xcmap[64] .pixel=4210752, .red=40349, .green=40349, .blue=40349 xcmap[65] .pixel=4276545, .red=40606, .green=40606, .blue=40606 xcmap[66] .pixel=4342338, .red=40863, .green=40863, .blue=40863 xcmap[67] .pixel=4408131, .red=41120, .green=41120, .blue=41120 xcmap[68] .pixel=4473924, .red=41120, .green=41120, .blue=41120 xcmap[69] .pixel=4539717, .red=41377, .green=41377, .blue=41377 xcmap[70] .pixel=4605510, .red=41634, .green=41634, .blue=41634 xcmap[71] .pixel=4671303, .red=41891, .green=41891, .blue=41891 xcmap[72] .pixel=4737096, .red=42148, .green=42148, .blue=42148 xcmap[73] .pixel=4802889, .red=42405, .green=42405, .blue=42405 xcmap[74] .pixel=4868682, .red=42405, .green=42405, .blue=42405 xcmap[75] .pixel=4934475, .red=42662, .green=42662, .blue=42662 xcmap[76] .pixel=5000268, .red=42919, .green=42919, .blue=42919 xcmap[77] .pixel=5066061, .red=43176, .green=43176, .blue=43176 xcmap[78] .pixel=5131854, .red=43176, .green=43176, .blue=43176 xcmap[79] .pixel=5197647, .red=43433, .green=43433, .blue=43433 xcmap[80] .pixel=5263440, .red=43690, .green=43690, .blue=43690 xcmap[81] .pixel=5329233, .red=43947, .green=43947, .blue=43947 xcmap[82] .pixel=5395026, .red=43947, .green=43947, .blue=43947 xcmap[83] .pixel=5460819, .red=44204, .green=44204, .blue=44204 xcmap[84] .pixel=5526612, .red=44461, .green=44461, .blue=44461 xcmap[85] .pixel=5592405, .red=44718, .green=44718, .blue=44718 xcmap[86] .pixel=5658198, .red=44718, .green=44718, .blue=44718 xcmap[87] .pixel=5723991, .red=44975, .green=44975, .blue=44975 xcmap[88] .pixel=5789784, .red=45232, .green=45232, .blue=45232 xcmap[89] .pixel=5855577, .red=45232, .green=45232, .blue=45232 xcmap[90] .pixel=5921370, .red=45489, .green=45489, .blue=45489 xcmap[91] .pixel=5987163, .red=45746, .green=45746, .blue=45746 xcmap[92] .pixel=6052956, .red=45746, .green=45746, .blue=45746 xcmap[93] .pixel=6118749, .red=46003, .green=46003, .blue=46003 xcmap[94] .pixel=6184542, .red=46260, .green=46260, .blue=46260 ... not sure why the output got truncated Both XStoreColors() and XSync() calls return 1.
Now tried compiling newer drivers with X server 1.6.3. Gamma works fine in Urban Terror with xf86-video-ati-6.12.4 and also with xf86-video-ati-6.12.6. So this is X server bug, not ATI driver bug.
It works fine up to xorg-server-1.6.5 and it's broken in xorg-server-1.6.99.900. I tried to bisect it but the compilation fails.
*** Bug 44332 has been marked as a duplicate of this bug. ***
See http://lists.x.org/archives/xorg-devel/2011-February/019152.html for the underlying issues.
*** Bug 44848 has been marked as a duplicate of this bug. ***
In 2014, this bug is present in most games :( Just tested with Radeon HD6850, Intel HD4000, Radeon HD8730 in Source based games, euro truck simulator, europe universalis.
*** Bug 89452 has been marked as a duplicate of this bug. ***
See the "Fix colormaps with RandR 1.2 capable Xorg drivers" item on http://www.x.org/wiki/SummerOfCodeIdeas/ .
Since the item has been removed from the SummerOfCodeIdeas with the comment that "Fixing colormaps requires less effort than I thought", I wonder if _a fix_ actually made it to the code base or if one is still required? I'm hoping to be able to avoid workaround with native API's and #ifdefs when SDL2 should do. Thanks
Created attachment 120828 [details] [review] WIP: Hook up colormaps to RandR 1.2 gamma code Here's what I have so far attempting to fix this. It'll need to be fleshed out / split up / cleaned up before it can be applied, and it probably doesn't work correctly yet in all cases (e.g. if running Xorg at colour depths other than 24). That said, it does fix the problem for me with SDL based games, and since I don't know when I can do more work on this next, I'm attaching this WIP patch. YMMV.
Thanks Michel. I unfortunately don't have the necessary knowledge myself to fix this properly the way you mention, I just hope it doesn't get "forgotten" for years again and that you will find time to finish it up. It would be much appreciated across the board of SDL users and developers (it mostly affects users though, I feel it might be a bit hefty to require them to recompile Xorg.) Thanks for working on this.
Comment on attachment 120828 [details] [review] WIP: Hook up colormaps to RandR 1.2 gamma code Current WIP patches available on the randr12-colormaps branch of https://cgit.freedesktop.org/~daenzer/xserver/ . These work fine for me at depths 24, 16, 15 and 8.
Is there a PPA or easy way for us to test this code out?
commit b4e46c0444bb09f4af59d9d13acc939a0fbbc6d6 Author: Michel Dänzer <michel.daenzer@amd.com> Date: Sat Nov 28 16:50:47 2015 +0900 xfree86: Hook up colormaps and RandR 1.2 gamma code v6
Michel, Verified fixed in Fedora 25 with the xorg session. Do these changes need to be ported over to xwayland?
These changes cannot be ported to Xwayland directly. AFAIK there is no Wayland protocol support for gamma correction yet.
Fix verified with xorg-server-1.19.0.
Seems to be broken again on xorg-server-1.19.1. It was working find on Fedora 25 with my Intel HD 5500 (Broadwell GT2) . After I upgraded from 1.19.0 to 1.19.1, the gamma controls stopped working and everything is dark again.
(In reply to Luke from comment #25) > Seems to be broken again on xorg-server-1.19.1. It was working find on > Fedora 25 with my Intel HD 5500 (Broadwell GT2) . After I upgraded from > 1.19.0 to 1.19.1, the gamma controls stopped working and everything is dark > again. Make sure you're not using the modesetting driver, that one doesn't support gamma control yet.
Michel Dänzer, Thank you! That was the problem. Fedora and Arch both made the switch to modesetting the same time as upgrading to xorg-server-1.19.1. Should I file a bug report for this issue? I couldn't find it in the bug tracker. Anyone else having this issue, To fix this with Arch: $ sudo pacman -S xf86-video-intel To fix this in Fedora: $ sudo nano /etc/X11/xorg.conf.d/20-intel.conf Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" EndSection
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.