kc3-lang/SDL/src

Branch :


Log

Author Commit Date CI Message
dad07f96 2017-01-23 16:45:50 audio: Resampler now special-cases stereo and mono processing. Turns out that iterating from 0 to channels-1 was a serious performance hit! These cases now tend to match or beat the original audio resampler's speed!
8ce6ddf1 2017-01-23 16:42:47 audio: Fixed incorrect pointer in SDL_ResampleCVT_si16_c2(). Forgot to update this when we changed this to process in-place. Whoops!
ecdc6c12 2017-01-23 12:14:28 audio: Fixed copy/paste bug in float32->sint16/SSE2 scalar leftover code.
4b8f3546 2017-01-23 12:06:10 audio: Fix same bug as last commit, but for _mm_bslli_si128 vs _mm_slli_si128.
fab45018 2017-01-23 12:02:02 audio: use _mm_srli_si128 instead of _mm_bsrli_si128. They're the same thing (one is generally a #define of the other), but some toolchains don't offer the 'b' version.
3594bf8e 2017-01-23 01:05:44 audio: Wired up new SSE code to build system.
64056e81 2017-01-23 00:57:19 audio: Added SSE3 implementation of SDL_ConvertStereoToMono().
8855daac 2017-01-22 23:48:15 audio: Make the simple resampler operate in-place. This allows us to avoid an extra copy, allocate less memory and reduce cache pressure. On the downside: we have to do a lot of tapdancing to resample the buffer in reverse when the output is growing.
202ab30c 2017-01-22 20:27:48 audio: Special case for resampling stereo AUDIO_S16SYS audio data. This is a fairly common case, so we avoid the conversion to/from float here.
a7f86f2f 2017-01-22 20:18:59 audio: don't cast to double in SDL_ConvertStereoToMono(). It's expensive and (hopefully) unnecessary. If this becomes an overflow problem, we could multiply both values by 0.5f before adding them, but let's see if we can get by without the extra multiplication first.
4f981df3 2017-01-22 22:15:36 Haiku: Fixed memory leak if creating framebuffer failed.
63e83a31 2017-01-21 22:01:17 Haiku: Removed unused variable. Found by Cppcheck.
800a9e84 2017-01-21 22:00:56 Fixed compiler warning about returning a value in a void function.
83454c82 2017-01-20 16:26:24 audio: removed conditional from simple resampler's inner loop. We never seem to overflow the source buffer now; this might have been a leftover from a bug that was covered by Vitaly's fixes? Removing this conditional makes the resampler 10-20% faster. Left an assert in there for debug builds, in case this still happens.
8fa0b088 2017-01-20 08:13:23 Added support for the 8Bitdo Zero GamePad
9b99265a 2017-01-19 20:19:37 Fixed mingw64 32-bit build, which does have the correct structure definitions
f3540242 2017-01-18 12:19:57 Removed unused variable
b0c5ceef 2017-01-18 12:18:50 Fixed bug 3533 - Enumeration joystick devices omitted during directinput enumeration white.magic The logic which decides if a device enumerated via the direct input system in the function EnumJoysticksCallback in SDL_dinputjoystick.c is processed is discarding valid joystick devices due to the assumption that devices of the type DI8DEVTYPE_SUPPLEMENTAL are not valid devices. This change was added with 2.0.4 with this commit http://hg.libsdl.org/SDL/rev/1b9d40126645 that is linked to this bug report https://bugzilla.libsdl.org/show_bug.cgi?id=2460 which indicates that in that case devices of the type DI8DEVTYPE_SUPPLEMENTAL were not desirable as they caused a singular device to emit multiple "device added" events. Since then there appear to have been a few fixes to handle devices that fall into various other classes in the following two commits: http://hg.libsdl.org/SDL/rev/10ffb4787d7a and http://hg.libsdl.org/SDL/rev/6a2bbac05728 Two devices I have reports of failing to be listed when the DI8DEVTYPE_SUPPLEMENTAL type is excluded are ECS Gametric Throttle and Thrustmaster MFD Cougar. Sam Lantinga I verified that the OUYA controller shows up as a single device with this change, so I've reverted the change to ignore supplemental devices, leaving framework in place to easily add devices that we want to ignore.
dd007e3f 2017-01-18 11:58:16 Fixed bug 3561 - Re-acquire device before playing effects if needed. Mathieu Laurendeau Check the result of IDirectInputEffect_SetParameters and re-acquire the device to solve concurrency issues.
5cb1ca55 2017-01-18 11:57:27 Fixed building with mingw32
3e1679c8 2017-01-18 02:11:56 audio: Several fixes to "simple" resampler (thanks, Vitaly!). Fixes Bugzilla #3551.
95defd66 2017-01-17 21:18:31 Use icon width * sizeof(Uint32) instead of icon pitch when copying to icon resource data
57182930 2017-01-16 00:58:28 audio: Implemented SIMD support for audio data type converters. This currently adds an SSE2 implementation (but it's #ifdef'd out for now, until it's hooked up to the configure script and such).
1e66d457 2017-01-15 05:01:59 audio: Some fixes to the audio data type converter code. Removed some needless things ("len / sizeof (Uint8)"), and made sure the int32 -> float code uses doubles to avoid working with large integer values in a 32-bit float.
1e482095 2017-01-14 21:36:06 Fixed comments.
341d1ff9 2017-01-13 11:37:12 Fixed comment
a52d48c5 2017-01-10 08:54:33 Fixed bugs 2570, 3145, improved OpenGL ES context support on Windows and X11 Mark Callow The attached patch does the following for the X11 and Windows platforms, the only ones where SDL attempts to use context_create_es_profile: - Adds SDL_HINT_OPENGL_ES_DRIVER by which the application can say to use the OpenGL ES driver & EGL rather than the Open GL driver. (For bug #2570) - Adds code to {WIN,X11}_GL_InitExtensions to determine the maximum OpenGL ES version supported by the OpenGL driver (for bug #3145) - Modifies the test that determines whether to use the OpenGL driver or the real OpenGL ES driver to take into account the hint, the requested and supported ES version and whether ES 1.X is being requested. (For bug #2570 & bug #3145) - Enables the testgles2 test for __WINDOWS__ and __LINUX__ and adds the test to the VisualC projects. With the fix in place I have run testdraw2, testgl and testgles2 without any issues and have run my own apps that use OpenGL, OpenGL ES 3 and OpenGL ES 1.1.
bf11cd50 2017-01-09 20:37:52 Fixed bug 3552 - Building SDL in release mode fails under VS 2017 RC Lukasz Biel Tried to compile SDL2 using newest version of VS. Got: SDL_audiocvt.obj : error LNK2019: unresolved external symbol memcpy referenced in function SDL_ResampleCVT 1>E:\Users\dotPo\Lib\SDL\VisualC\x64\Release\SDL2.dll : fatal error LNK1120: 1 unresolved externals whole compilation process: http://pastebin.com/eWDAvBce Steps to reproduce: clone http://hg.libsdl.org/SDL using tortoise hg, open SDL\VisualC\SDL.sln, when promted if should retarget solution click ok, select release x64 build type, Build/Build Solution attempt 2, using Visual Studio cmake support: open folder SDL\ select release x64 build type, run CMake\Build CMakeLists.txt build fails When switched to debug build type, buils succeeds in both cases. VS 2017 is still beta.
23020f92 2017-01-09 16:31:57 audio: Don't ever use libsamplerate in the SDL_AudioCVT codepath. It causes audio pops if you're converting in chunks (and needs to allocate/initialize/free on each convert). We'll either adjust this interface when we break ABI for 2.1 to make this usable, or publish the SDL_AudioStream API for those that want a streaming solution. In the meantime, the "simple" resampler produces "good enough" audio without pops and doesn't have to be initialized, so that'll do for now on the SDL_AudioCVT interface.
ad7c26ff 2017-01-09 11:58:01 We only need the first few keymaps corresponding to the following constants: K_NORMTAB, K_SHIFTTAB, K_ALTTAB, K_ALTSHIFTTAB In the normal case we'll load all the keymaps from the kernel, but this reduces the size of the SDL library for the fallback case when we can't get to the tty.
6d6edcb8 2017-01-09 11:30:29 Fixed spacing
4e9c9fce 2017-01-09 10:10:33 Fixed bug 3100 - SetSwapInterval should now be enabled for ANGLE/EGL Mark Logan 2015-08-24 15:57:50 UTC In SDL_windowsopengles.c, WIN_GLES_SetSwapInterval is as follows: WIN_GLES_SetSwapInterval(_THIS, int interval) { /* FIXME: This should call SDL_EGL_SetSwapInterval, but ANGLE has a bug that prevents this * from working if we do (the window contents freeze and don't swap properly). So, we ignore * the request for now. */ SDL_Log("WARNING: Ignoring SDL_GL_SetSwapInterval call due to ANGLE bug"); return 0; } With a recent version of ANGLE (early July) calling SDL_EGL_SetSwapInterval with a D3D11 backend appears to work just fine. I am working on testing this with D3D9. -- Alex Szpakowski I found the bug, it was fixed in 2013. https://bugs.chromium.org/p/angleproject/issues/detail?id=481 In my opinion it should be safe to unconditionally use SetSwapInterval now. Anyone who encounters the bug should update their ANGLE to a version less than 3 years old, especially since they'd be using a SDL version that's 3+ years newer than their ANGLE version.
063c9d40 2017-01-09 06:00:58 audio: Replaced older resamplers in SDL_AudioCVT with the new ones.
a41103b1 2017-01-09 05:59:30 audio: Patched to compile if linking directly to libsamplerate.
e0a40fb6 2017-01-09 02:54:42 Implemented full evdev keyboard text support This is based on the Linux kernel driver, and has fallback mapping tables in case we aren't connected to a virtual terminal.
49292705 2017-01-08 20:03:18 Fixed bug 3545 - SDL_EVDEV_do_text_input() may be too eager to find error cases Rob I've ran into an issue where I successfully receive SDL_KEY[UP,DOWN] events but not SDL_TEXTINPUT or SDL_TEXTEDITING. In my case the code in SDL_EVDEV_do_text_input() is returning early (on error) prior to calling SDL_SendKeyboardText(). I'm running on the RaspberryPi 3, without X11. In SDL_EVDEV_do_text_input() there is a condition to check keysyms with a type value below 0xf0, then subtract 0xf0 from type. Without understanding the purpose of this code, I disabled it, recompiled, and I'm getting correct SDL_TEXTINPUT events. I'm going to guess that my hack/fix is going to be problematic in some other environment, but after some initial testing it looks like everything is running fine in my setup.
7b66295e 2017-01-08 19:04:38 Removed console check, let the kernel decide whether muting is appropriate on this terminal. We don't fail the init if we can't mute the terminal (we might be running from ssh, or on a system without virtual terminals, etc.)
c16dd74f 2017-01-08 18:32:20 Check the return value of SDL_EVDEV_Init()
38854e03 2017-01-08 16:18:49 audio: Improvements in channel conversion code.
35166609 2017-01-08 14:28:44 audio: Patched to compile with libsamplerate support (again).
d005dc21 2017-01-08 14:23:15 audio: Patched to compile with libsamplerate support.
19e937fc 2017-01-08 14:18:03 audio: libsamplerate loading now happens once at init time.
98cc9d10 2017-01-08 14:17:09 Fixed coding style on a function signature.
9d9e92cf 2017-01-08 10:41:22 Fixed bug 3304 - Android black screen on resume Richard Russell Resuming from a suspended state results in a black screen. This only happens when using GLES 1.1 (GLES 2 resumes correctly) and when the render target has been changed using SDL_SetRenderTarget. This problem is new in 2.0.4. The attached test case demonstrates the issue. Sylvain Becker has apparently found a fix as follows: "In the opengles leaf function (in 'src/render/opengles/SDL_render_gles.c'), it appears there is a call to 'GLES_ActivateRenderer' in 'GLES_SetRenderTarget', which is not present in opengles2. When commenting out this 'GLES_ActivateRenderer', it seems to resume fine". This appears to fix the testcase perfectly, but I don't know whether it could have any undesirable side-effects.
b8ab4eb9 2017-01-08 10:15:22 SDL_evdev.c: fix building against old kernel headers (K_OFF may not be defined.)
13f2e542 2017-01-07 19:55:29 x11: make the X11 target work on macOS with Xquartz.
e25f4e50 2017-01-07 16:51:48 Really fixed blit issue for capehill
7e505b0d 2017-01-07 16:49:23 Don't fail if we can't open the tty, this can be a legitimate use case.
61a3ba30 2017-01-07 17:09:14 Replaced a few single-line "//" comments.
267c9509 2017-01-07 13:47:34 Added mappings for the 8Bitdo NES30 Pro and iBuffalo SNES Controller Also swapped the Wii U Pro controller button mappings to position instead of label, as emulators expect from XBox controllers.
e9c2dcda 2017-01-07 10:13:04 Fixed bug 3469 - Keypresses leak to the console with 2.0.5 tvc I believe this patch should fix it, instead of looping through all the tty's and seemingly selecting the wrong one and corrupting the console I've just made SDL open /dev/tty which is the console attached to the current process anyway.
df25258a 2017-01-06 20:43:53 Added configure and cmake support for libsamplerate
c5825b69 2017-01-06 21:23:51 audio: Don't call a NULL function pointer when clearing audio streams. (Partially?) fixes Bugzilla #3547.
c1ac4c68 2017-01-06 21:17:33 Better fix for static analysis issue in SDL_DestroyRenderer(). Follow up fix for Bugzilla #3544.
cbe44f7f 2017-01-06 02:16:26 Added support for using libsamplerate to do audio resampling
37f404fb 2017-01-06 00:47:42 Fixed confusion between Ryan's new audio stream and the audio buffer we were calling stream in the callback
3df77ced 2017-01-06 00:40:22 Just roll back the entire portion of the commit from a8253d439914 which caused bug 3544 until we figure out what the right static analysis fix is.
748f4605 2017-01-06 03:38:14 audio: Add an assert to make sure non-streaming audio uses good buffer sizes.
356c2ead 2017-01-06 00:32:06 Fixed bug 3544 - Memory freeing bug in SDL_DestroyRenderer/SDL_DestroyTexture felix Here's a snippet of SDL_DestroyRenderer from hg revision 10746:7540ff5d0e0e: SDL_Texture *texture = NULL; SDL_Texture *nexttexture = NULL; /* ... */ for (texture = renderer->textures; texture; texture = nexttexture) { nexttexture = texture->next; SDL_DestroyTexture(texture); } SDL_DestroyTexture removes the texture from the linked list pointed to by the renderer and ends up calling SDL_DestroyTextureInternal, which contains this: if (texture->native) { SDL_DestroyTexture(texture->native); } If it happens that texture->native is an alias of nexttexture two stack frames up, SDL_DestroyRenderer will end up trying to destroy an already freed texture. I've had this very situation happen in dosemu2. Bug introduced in revision 10650:a8253d439914, which has a somewhat ironic description of "Fixed all known static analysis bugs"...
345c5989 2017-01-06 03:15:27 haiku: Patched to compile.
3443dc19 2017-01-05 23:53:46 Don't do any audio conversion if none is necessary
41be9756 2017-01-05 23:26:13 Fixed bug 3546 - SDL_EVDEV_is_console() uses type of wrong size when calling ioctl Rob When calling ioctl(fd, KDGKBTYPE, &type) in SDL_EVDEV_is_console(), we declare type as an 'int'. This should be a 'char'. The subsequent syscall, and kernel code, only writes the lower byte of the word. See: http://lxr.free-electrons.com/source/drivers/tty/vt/vt_ioctl.c?v=4.4#L399 ucval = KB_101; ret = put_user(ucval, (char __user *)arg); I've observed intermittent behavior related to this, and I can force an error condition by using an int initialized to 0xFFFFFFFF. The resulting ioctl will set type to 0XFFFFFF02, and the conditional return in SDL_EVDEV_is_console() will fail. Recommend changing to char, or masking off unused bits.
b3e8db80 2017-01-06 01:07:34 audio: rename fake_stream to work_buffer. It's more than an alternative for when the OS can't provide a DMA buffer, now.
992124d4 2017-01-06 01:02:58 audio: Fixed SDL_AudioStreamGet() function parameters. There was a draft of this where it did audio conversion into the final buffer, if there was enough room available past what you asked for, but that interface got removed, so the parameters didn't make sense (and we were using the wrong one in any case, too!).
99fc1ef9 2017-01-06 00:56:29 naclaudio: Untested attempt to migrate to SDL_AudioStream.
115d0ce7 2017-01-06 00:50:01 haikuaudio: Untested attempt to get this working with SDL_AudioStream.
1a90c72d 2017-01-06 00:49:35 emscriptenaudio: don't get stuck in infinite loop if SDL_AudioStreamPut fails.
f07a1a5a 2017-01-05 21:31:02 emscriptenaudio: Reworked to use SDL_AudioStream.
3761b5f6 2017-01-05 20:11:19 Fixed a few compiler warnings.
4aa9e369 2017-01-05 19:45:57 Patched to compile on some compilers.
52130bde 2017-01-05 19:30:45 diskaudio: Use SDL_Log, not fprintf.
30178a9b 2017-01-05 19:29:38 audio: Added SDL_AudioStream. Non-power-of-two resampling now works!
f12ab8f2 2017-01-05 19:12:20 audio: More effort to improve and simplify audio resamplers.
d024c724 2017-01-05 08:16:39 Fixed signedness issue when blitting on a big endian platform, as reported by capehill For example, if sR is 0 and dR is 255, we will get -255*sA casted to an unsigned value. Basically results are quite large numbers instead of the expected 0-255 range.
e6e6613c 2017-01-05 02:53:29 Fixed build warning on Haiku
4938c505 2017-01-04 10:28:07 Added SDL_JoystickGetAxisInitialState() to get a joystick axis' initial value. This is useful for controller mapping programs to determine an axis' zero state
99e10ef5 2017-01-04 07:06:48 Assume D-pad or thumbstick style axes are centered at 0
9d042052 2017-01-04 09:33:47 x11: deal with xrandr display size in millimeters being zero. Xquartz on macOS reports a zero size, which leads to a division by zero here.
26f84d74 2017-01-04 06:21:17 Added mappings for several GameCube and SNES controllers
d2a01b6e 2017-01-04 06:19:56 Added the NEXT SNES Controller to the list of zero-centered joysticks
c7780497 2017-01-04 05:56:47 Increased joystick jitter tolerance for PS3 controllers
082132a7 2017-01-03 23:39:28 Fixed binding the D-pad on some Super NES style controllers Fixed a case where partial trigger pull could be bound to another button There is a fundamental problem not resolved by this commit: Some controllers have axes (triggers, pedals, etc.) that don't start at zero, but we're guaranteed that if we get a value that it's correct. For these controllers, the current code works, where we take the first value we get and use that as the zero point and generate axis motion starting from that point on. Other controllers have digital axes (D-pad) that assume a zero starting point, and the first value we get is the min or max axis value when the D-pad is moved. For these controllers, the current code thinks that the zero point is the axis value after the D-pad motion and this doesn't work. My hypothesis is that the first class of devices is more common and that we should solve for that, and add an exception to SDL_JoystickAxesCenteredAtZero() as needed for the second class of devices.
d3591800 2017-01-03 00:44:05 Fixed bug 3519 - SDL_GetDisplayMode fails to report mode.format when using Wayland backend Ryan C. Gordon Kristian says you can't do it with Wayland, and that going forward, it'll just handle whatever you throw at it anyhow. https://twitter.com/hoegsberg/status/816148272402165761 So I say we mark it SDL_PIXELFORMAT_RGB888, which is what my X11 display currently reports, and leave it at that.
18d9b23c 2017-01-02 10:30:32 Fixed bug 3539 - SDL2, missing MIR LDFLAGS Gianfranco Hello, this is the failure I got https://launchpadlibrarian.net/300679206/buildlog_ubuntu-zesty-amd64.libsdl2_2.0.5+dfsg1-2ubuntu1_BUILDING.txt.gz LTLINK build/libSDL2.la build/.libs/SDL_mirvideo.o: In function `MIR_InitDisplayFromOutput': ././src/video/mir/SDL_mirvideo.c:258: undefined reference to `mir_output_get_current_mode' collect2: error: ld returned 1 exit status
67ed8943 2017-01-01 19:10:36 Fixed bug 3529 - SDL_EGL_UnloadLibrary is not called at all on SDL_Quit kaisyu In case of OpenGLES, the sequences of loading and unloading driver library should be like that: SDL_Init ... SDL_GL_LoadLibrary SDL_EGL_LoadLibrary ... SDL_Quit ... SDL_GL_UnloadLibrary SDL_EGL_UnloadLibrary ... However, according to my test results, the varible '_this->gl_config.driver_loaded' does not allow 'SDL_GL_UnloadLibrary' to call 'SDL_EGL_UnloadLibrary'.
45b774e3 2017-01-01 18:33:28 Updated copyright for 2017
49225f5f 2016-12-31 18:11:19 We don't currently support blitting to < 8 bpp surfaces, return an error instead of corrupting memory in that case.
2ba66d05 2016-12-31 16:21:55 Fixed bug 3535 - Misplaced comment #if/#endif closure comment Coriiander This notice is about a misplaced comment. Often times when we use an #if #endif sequence, the #endif is followed by a comment to indicate what #if statement it belonged to. The SDL_xaudio2.c file contains a misplaced comment, as follows (I stripped the other comments): #ifdef __GNUC__ # define SDL_XAUDIO2_HAS_SDK 1 #elif defined(__WINRT__) # define SDL_XAUDIO2_HAS_SDK #include "SDL_xaudio2.h" #else #if 0 #include <dxsdkver.h> #if (!defined(_DXSDK_BUILD_MAJOR) || (_DXSDK_BUILD_MAJOR < 1284)) # pragma message("Your DirectX SDK is too old. Disabling XAudio2 support.") #else # define SDL_XAUDIO2_HAS_SDK 1 #endif #endif #endif /* 0 */ That final /* 0 */ should be moved one line up. Like this (I tabbed it out for you to make it more clear):
880842cf 2016-12-31 16:14:51 Fixed bug 3531 - internal SDL_vsnprintf implementation access memory outside given buffer ranges Tristan The internal SDL_vsnprintf implementation accesses memory outside buffer. The bug existed also inside the format (%) processing, which was fixed with Bug 3441. But there is still an invalid access, if we do not have any format inside the source string and the destination string is shorter than the format string. You can use any string for this test, as long it is longer than the buffer. Example: va_list argList; char buffer[4]; SDL_vsnprintf(buffer, sizeof(buffer), "Testing", argList); The bug is located on the 'else' branch of the format char test: while (*fmt) { if (*fmt == '%') { ... } else { if (left > 1) { *text = *fmt; --left; } ++fmt; ++text; } } if (left > 0) { *text = '\0'; } As you can see that text is always incremented, even when left is already one. When then on the last lines, *text is assigned the NULL char, the pointer is located outside bounds.
7f2068da 2016-12-31 10:30:07 Fixed bug 3541 - DisplayIndex out of bounds in SDL_SetWindowPosition Intellectual Kitty In SDL_video.c, on line #1756, in SDL_SetWindowPosition (from today's distribution, 12-31-2016, https://hg.libsdl.org/SDL/shortlog/bf19e0c84483): if (displayIndex > _this->num_displays) { should be: if (displayIndex >= _this->num_displays) {
0cfa0aa1 2016-12-29 11:49:18 improved SDL_GetError() output generated by EGL code This change attempts to report the EGL error codes generated by SDL's calls into EGL, along with the name of the EGL function that failed.
af263798 2016-12-28 20:10:48 Fixed crash if allocating memory for game controller failed.
2e2572a4 2016-12-27 23:48:43 Added SDL_ReserveSpaceInDataQueue() to make space without copying data.
cb8685c0 2016-12-27 02:04:38 Fixed comment style
6d7da088 2016-12-27 01:39:07 Split controller axes into positive and negative sides so each can be bound independently. Using this a D-Pad can be mapped to a thumbstick and vice versa. Also added support for inverted axes, improving trigger binding support
7c316366 2016-12-26 23:02:14 x11: Don't loop forever if the X server refuses a pointer grab.
b4e069e7 2016-12-26 02:12:21 Fixed bug 3517 - Compiler warnings with gcc -Wstrict-prototypes felix Compiling even a simple SDL2 'hello world' program with gcc -Wstrict-prototypes (GCC 6.2.1) results in warnings like: /usr/include/SDL2/SDL_gamecontroller.h:143:1: attention : function declaration isn't a prototype [-Wstrict-prototypes] extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(); ^~~~~~ It seems there is a missing 'void' between the parentheses.
9492492d 2016-12-26 01:56:52 Fixed bug 3516 - fix build on illumos Sylvain trivial patch to fix the build on illumos -Werror=declaration-after-statement https://gist.github.com/wiedi/15b71456667f7aa2a7f8815663723bb3
fd85f574 2016-12-23 22:49:37 Mac: back out commit 3e9b2ae41adf. It causes significant overhead on many GPUs.
d719374c 2016-12-23 22:08:18 Mac: Fix over-saturated colors on P3 displays (e.g. the 2016 MBPs).