src


Log

Author Commit Date CI Message
Sam Lantinga 5f341620 2019-05-19T12:06:58 Fixed bug 4474 - Add support for an ASUS Gamepad variation Trent Gamblin This patch adds a variation of the ASUS Gamepad to the game controller DB. All the values are the same except the GUID.
Sam Lantinga 41c718db 2019-05-19T12:04:06 Fixed bug 4469 - make SDL_CreateTextureFromSurface pick a more appropriate format Sylvain Currently SDL_CreateTextureFromSurface picks first valid format, and do a conversion. format = renderer->info.texture_formats[0]; for (i = 0; i < renderer->info.num_texture_formats; ++i) { if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) && SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == needAlpha) { format = renderer->info.texture_formats[i]; break; It could try to find a better format, for instance : if SDL_Surface has no Amask, but a colorkey : if surface fmt is RGB888, try to pick ARGB8888 renderer fmt if surface fmt is BGR888, try to pick ABGR8888 renderer fmt else try to pick the same renderer format as surface fmt if no format has been picked, use the fallback. I think it goes with bug 4290 fastpath BlitNtoN when you expand a surface with pixel format of size 24 to 32, there is a fast path possible. So with this issue: - if you have a surface with colorkey (RGB or BGR, not palette), it takes a renderer format where the conversion is faster. (it avoids, if possible, RGB -> ABGR which means switching RGB to BGR) - if you have a surface ABGR format, it try to take the ABGR from the renderer. (it avoids, if possible, ABGR -> ARGB, which means switch RGB to BGR)
Sam Lantinga c377de54 2019-05-19T11:56:26 Fixed bug 4436 - [OpenBSD] fix D-pad Thomas Frohwein Hi, If a gamepad lists the Dpad as 4 buttons (Dpad Up,Down, Left, Right) like with the Xbox 360 gamepad / XInput report descriptor used by OpenBSD (https://github.com/openbsd/src/blob/master/sys/dev/usb/uhid_rdesc.h#L184), this is not recognized by the SDL BSD backend and no hat or any other listing for the D-pad exists, e.g. in sdl2-jstest (https://gitlab.com/sdl-jstest/sdl-jstest). The attached diff fixes this and makes the D-pad on my Xbox 360 and Logitech F310 controllers usable. It adds a hat to nhats when usage HUG_DPAD_UP is found, reads the state of the D-pad buttons into array dpad[], and turns the value of dpad[] into an SDL hat direction (dpad_to_sdl()). Tested and works with Xbox 360 controller and Logitech F310 in XInput mode. Software-side tested with sdl2-jstest and Owlboy where this worked without problems or regressions. I don't know if this would be applicable to other *BSDs and don't have an install to test it with, therefore wrapped it in __OpenBSD__ ifdefs. Thanks, thfr
Sam Lantinga ee0a482a 2019-05-19T11:52:25 Fixed bug 4401 - SDL_GetWindowPosition() wrong after SDL_SetWindowPosition() until window is moved on macOS Removed incorrect call to SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, x, y); If the position of the window isn't adjusted in the SetWindowPosition() call, then sending the window event would have no effect because x and y equals the window x and y. If the position of the window is adjusted in the SetWindowPosition() call, then we don't want to clobber it with values that the user passed in.
Sam Lantinga 2ee9b1dd 2019-05-19T11:01:36 Fixed bug 4025 - SDL_Renderer OpenGL : add support for textures ABGR, RGB, BGR Sylvain OpenGLES2 SDL renderer has support for textures ARGB, ABGR, RGB and BGR, whereas OpenGL SDL renderer only had ARGB. If you think it's worth adding it, here's a patch. I quickly tried and it worked, but there may be missing things or corner case.
Sam Lantinga 8dea23c7 2019-05-19T10:44:14 Fixed bug 3911 - SYSWM generic X11 events missing event data Andrei Drexler For X11 GenericEvents, the associated data is only available between a call to XGetEventData and the matching XFreeEventData, i.e. in X11_HandleGenericEvent. Trying to call XGetEventData a second time on the same event will fail, so an application that wants to inspect XInput2 events (e.g. for stylus pressure) has no way of retrieving its data from queued SYSWM events. The attached patch (based on SDL-2.0.7-11629) sends SYSWM messages from X11_HandleGenericEvent while the data is still available, allowing client code to register an event filter/watcher and process the event inside the callback.
Wladimir J. van der Laan 29f34453 2019-05-19T10:36:44 video: Add Vulkan support for vivante fb Vivante drivers use the VK_KHR_display extension for rendering directly to the frame buffer. This patch adds support to the video driver for Vulkan rendering using that method. - Add an utility function SDL_Vulkan_Display_CreateSurface that creates a surface using this extension. The display to use (if there are multiple) can be overridden using the environment variable "SDL_VULKAN_DISPLAY". - Use this function in a new compilation unit SDL_vivantevideo.c, which implements the SDL_VIDEO_VULKAN methods of the driver structure.
Ryan C. Gordon 00e5eeb4 2019-05-19T01:45:15 test: added SDLTest_CommonDefaultArgs() This is for test apps that don't need custom command line arguments; it lets us reduce the boilerplate code a tiny bit.
Sam Lantinga 62a57970 2019-05-15T14:01:15 Windows are not in a minimized state when they are shown This fixes https://github.com/ValveSoftware/steam-for-linux/issues/4313 "Exiting game a in Steam Big Picture Mode gets semi-windowed BPM"
Sam Lantinga abcfe804 2019-05-14T14:20:54 [SDL] iOS fix bug with audio interrupted by a phone call not restoring.
Sam Lantinga 59da5b72 2019-05-14T07:55:42 [SDL] ios Touch Fix.
Ryan C. Gordon ba0fc92d 2019-05-11T12:41:21 Patched to compile.
Charlie Birks 6eb05211 2019-05-09T12:09:45 Emscripten: Use EMSCRIPTEN_EVENT_TARGET_*
Charlie Birks 4e5b5cba 2019-05-09T12:09:40 Emscripten: Switch from canvas[XY] to target[XY] Allows mouse/touch events to work on non-default canvases
Charlie Birks 60c48ed7 2019-05-09T12:09:34 Emscripten: Store canvas id in WindowData Also replace all hardcoded uses of "#canvas" or NULL
Sam Lantinga f0a4fea8 2019-04-25T14:17:07 Fixed bug 4608 - Android: not getting SDL_WINDOWEVENT_FOCUS_GAINED on start of our app Dan Ginsburg I've seen this on several devices including Moto Z running Android 7 and a Snapdragon 845 running Android 9. What happens is as follows: SDLActivity.onWindowFocusChanged(true) happens pretty early on, but it's before we've done SDL_CreateWindow and so Android_Window is 0x0 thus this message does not get sent: JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeFocusChanged)( JNIEnv *env, jclass cls, jboolean hasFocus) { SDL_LockMutex(Android_ActivityMutex); if (Android_Window) { __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "nativeFocusChanged()"); SDL_SendWindowEvent(Android_Window, (hasFocus ? SDL_WINDOWEVENT_FOCUS_GAINED : SDL_WINDOWEVENT_FOCUS_LOST), 0, 0); } SDL_UnlockMutex(Android_ActivityMutex); } When the window does get created, in Android_CreateWindow it does this: window->flags &= ~SDL_WINDOW_RESIZABLE; /* window is NEVER resizeable */ window->flags &= ~SDL_WINDOW_HIDDEN; window->flags |= SDL_WINDOW_SHOWN; /* only one window on Android */ window->flags |= SDL_WINDOW_INPUT_FOCUS; /* always has input focus */ /* One window, it always has focus */ SDL_SetMouseFocus(window); SDL_SetKeyboardFocus(window); The SDL_SetKeyboardFocus does send an SDL_WINDOWEVENT_FOCUS_GAINED message, but it gets eaten in SDL_SendWindowEvent because we've forced SDL_WINDOW_INPUT_FOCUS beforehand: case SDL_WINDOWEVENT_FOCUS_GAINED: if (window->flags & SDL_WINDOW_INPUT_FOCUS) { return 0; } window->flags |= SDL_WINDOW_INPUT_FOCUS; SDL_OnWindowFocusGained(window); break; I can fix the problem if I comment out this line from Android_CreateWindow: window->flags |= SDL_WINDOW_INPUT_FOCUS; /* always has input focus */ I would propose that as a fix unless there is a reason not to.
Sam Lantinga f79190f4 2019-04-23T07:59:31 Use _Exit() when available
Sylvain Becker 2c92c8e8 2019-04-23T14:24:58 Android: add static variable initialization in non blocking event loop
Sam Lantinga cb18117c 2019-04-22T16:34:42 Added a helper function to tell whether or not a window can be minimized
Sam Lantinga f1b57f37 2019-04-22T16:25:49 Only leave fullscreen mode if we're actually going to minimize
Sam Lantinga 9950271b 2019-04-22T16:19:52 Fixed bug 4580 - Android 8: immersive fullscreen notification causes flickering between fullscreen and non-fullscreen and app is unresponsive Sylvain 2019-04-18 21:22:59 UTC Changes: - SDL_WINDOWEVENT_FOCUS_GAINED and SDL_WINDOWEVENT_FOCUS_LOST are sent when the java method onWindowFocusChanged() is called. - If we have support for MultiWindow (eg API >= 24), SDL event loop is blocked/un-blocked (or simply egl-backed-up or not), when java onStart()/onStop() are called. - If not, this behaves like now, SDL event loop is blocked/un-blocked when onPause()/onResume() are called. So if we have two app on screen and switch from one to the other, only FOCUS events are sent (and onPause()/onResume() are called but empty. onStart()/onStop() are not called). The SDL app, un-focused, would still continue to run and display frames (currently the App would be displayed, but paused). Like a video player app or a chronometer that would still be refreshed, even if the window hasn't the focus. It should work also on ChromeBooks (not tested), with two apps opened at the same time. I am not sure this fix Dan's issue. Because focus lost event triggers Minimize function (which BTW is not provided on android). https://hg.libsdl.org/SDL/file/bb41b3635c34/src/video/SDL_video.c#l2653 https://hg.libsdl.org/SDL/file/bb41b3635c34/src/video/SDL_video.c#l2634 So, in addition, it would need to add by default SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS to 0. So that the lost focus event doesn't try to minimize the window. And this should fix also the issue.
Alex Szpakowski 90b08881 2019-04-17T20:41:05 iOS: Remove code trying to support compilation on the iOS 7 SDK, the deployment target has been set to iOS 8 for years and there's other unconditionally compiled code that depends on newer SDKs so that code is useless.
Alex Szpakowski 9d7b2615 2019-04-17T20:14:40 macOS: Fix compilation when using the 10.9 SDK or older.
Sylvain Becker bd344c22 2019-04-12T23:15:26 Android: when event loop is not blocking in pause, backup EGL context (Bug 4578) Backup the EGL context when SDL_APP_DIDENTERBACKGROUND has been removed from the event queue.
Alex Szpakowski 00c824a8 2019-04-10T22:30:58 Fix disabling OpenGL vsync on macOS 10.14.4+ (bug #4575).
Sylvain Becker aae49015 2019-04-10T10:59:53 Fixed bug 4581 - generate synthetic mouse events at window boundaries when real touch events are actually outside the window.
Sylvain Becker cfefe543 2019-04-08T21:27:24 Fixed bug 4581 - mouse events with SDL_TOUCH_MOUSEID make window lost focus Virtual mouse events should never leave the window or change focus for single window applications.
Sylvain Becker d68e501d 2019-04-08T13:43:48 Fixed bug 4582 - Maximize/Resize not working on Windows 10 When viewport is set, projectionAndView changes, but ID3D11DeviceContext_UpdateSubresource was not called.
Sylvain Becker eb7affee 2019-04-06T21:52:51 SDL_HINT_MOUSE_TOUCH_EVENTS: move tracking appart in case of 'window' is null
Sylvain Becker a1a9fd50 2019-04-06T21:43:16 Bug 4581: move tracking appart so it doesn't require the window to have focus
Sam Lantinga a46af76b 2019-04-05T08:15:01 Fixed bug 4579 - SDL_android.c s_active not being atomic Isaias Brunet This bug cause a false assert due to multiple threads modifying the same variable without any atomic operation.
Sam Lantinga 9eac91dd 2019-04-05T08:10:12 Set SDL_HINT_MOUSE_TOUCH_EVENTS for iPhone and iPad as well
Sam Lantinga b6f33a68 2019-04-05T07:51:11 https://bugzilla.libsdl.org/show_bug.cgi?id=4577 SDL_GetWindowDisplayMode was returning an incorrect result on iPhone Plus devices (tested on iOS 12.1/12.2). The problem was that the value returned by UIScreenMode was assumed to be the physical pixels on the display, rather than the scaled retina pixels. The fix is to use the scale returned by UIScreen.scale rather than the nativeScale.
Sylvain Becker 05333a6e 2019-04-05T09:16:30 Android: add hint SDL_HINT_ANDROID_BLOCK_ON_PAUSE to set whether the event loop will block itself when the app is paused.
Sylvain Becker b470cd9b 2019-04-05T08:36:31 Android: default SDL_HINT_MOUSE_TOUCH_EVENTS to 1 as previous behaviour
Sylvain Becker bfdd0b22 2019-04-04T17:01:02 Android: remove SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH java layer runs as if separate mouse and touch was 1, Use SDL_HINT_MOUSE_TOUCH_EVENTS and SDL_HINT_TOUCH_MOUSE_EVENTS for generating synthetic touch/mouse events
Sylvain Becker e4157618 2019-04-04T16:51:50 Add hint SDL_HINT_MOUSE_TOUCH_EVENTS for mouse events to generate touch events controlling whether mouse events should generate synthetic touch events By default SDL will *not* generate touch events for mouse events
Sylvain Becker ab03892d 2019-04-04T15:19:00 Bug 4576: track both FingerId and TrackId
Sylvain Becker e39c0a1f 2019-04-03T10:14:42 Bug 4576: fix wrong scaling
Sylvain Becker 236b8606 2019-04-02T18:07:27 Bug 4576: one more warning
Sylvain Becker b45abbb2 2019-04-02T17:57:27 Bug 4576: fix warning and compile
Sylvain Becker 9b3c2258 2019-04-02T17:23:55 Bug 4576: remove touch/mouse duplication for Android
Sylvain Becker 9d28156f 2019-04-02T17:18:47 Bug 4576: remove touch/mouse duplication for IOS
Sylvain Becker 42de5f97 2019-04-02T17:13:22 Bug 4576: remove touch/mouse duplication for WinRT
Sylvain Becker b086edc9 2019-04-02T17:10:29 Bug 4576: remove touch/mouse duplication for Emscripten
Sylvain Becker b8e5c561 2019-04-02T17:07:54 Bug 4576: remove touch/mouse duplication for Wayland
Sylvain Becker 6bc2d9de 2019-04-02T17:03:58 Bug 4576: remove touch/mouse duplication for linux/EVDEV
Sylvain Becker 1a4c3b57 2019-04-02T16:58:11 Bug 4576: remove touch/mouse duplication for Windows
Sylvain Becker a3f2c446 2019-04-02T16:46:17 Bug 4576: handle mapping of TouchEvents to MouseEvents at higher level
Sam Lantinga 9a8d5215 2019-03-27T08:17:05 Handle potentially calling SDL_JoystickUpdate() and SDL_JoystickQuit() at the same time.
Ryan C. Gordon 2fbfe8b9 2019-03-25T12:59:30 coreaudio: Set audio callback thread priority. Fixes Bugzilla #4155.
Ryan C. Gordon 6a3356ab 2019-03-25T12:24:38 Backed out changeset cec31de4e126 This was meant to migrate CoreAudio onto the same SDL_RunAudio() path that most other audio drivers are on, but it introduced a bug because it doesn't deal with dropped audio buffers...and fixing that properly just introduces latency. I might revisit this later, perhaps by reworking SDL_RunAudio to allow for this sort of API better, or redesigning the whole subsystem or something, I don't know. I'm not super-thrilled that this has to exist outside of the usual codepaths, though. Fixes Bugzilla #4481.
Ryan C. Gordon 8ab698af 2019-03-21T10:39:49 opengles2: Fix static analysis warning. Not clear if this could ever dereference NULL in real life, but better safe than sorry!
Sam Lantinga 01c924fa 2019-03-19T17:20:54 Hopefully fixed the mingw32 build
Sam Lantinga deb7d08c 2019-03-19T17:05:22 Fixed Visual Studio build
Sam Lantinga ac23d78f 2019-03-19T16:53:55 Didn't need to add SDL_windows.h include, that was already included
Sam Lantinga b2e76d86 2019-03-19T16:52:09 Fixed Windows RT build
Sam Lantinga de82759c 2019-03-19T07:53:33 Added support for building SDL as a dynamic library on iOS
Ethan Lee f07c992b 2019-03-17T12:36:40 hidapi: Add GCN L/R buttons, just in case someone wants them...
Sebastian Krzyszkowiak 6311c7cf 2019-03-16T19:08:59 emscripten: force resize event when pixel ratio changes Without this, applications can't react to changed canvas size on window zoom.
Sam Lantinga b8bd0aa0 2019-03-16T19:07:34 Fixed bug 4450 - SDL_mouse.c fails to compile with CMake generated Visual Studio files if SDL_VIDEO_VULKAN 0/undefined Max Waine SDL_mouse.c, if compiled for Windows, requires GetDoubleClickTime to compile (available from winuser.h). Without Vulkan present this fails to compile as the include chain for winuser.h is the following. SDL_mouse.c -> SDL_sysvideo.h -> SDL_vulkan_internal.h -> SDL_windows.h -> windows.h -> winuser.h. Problem is that SDL_vulkan_internal.h doesn't include SDL_windows.h if Vulkan isn't present, so under MinGW/GCC it will give a -Wimplicit-function-declaration warning for GetDoubleClickTime, and under MSVC fails to compile completely. The solution to this would be to simplify the include chain: including SDL_windows.h under the same condition as GetDoubleClickTime (#ifdef __WIN32__) in SDL_mouse.c (or another file that isn't quite so indirectly included).
Sam Lantinga faf97978 2019-03-16T19:03:13 Fixed bug 4511 - SDL_gamecontrollerdb Mapping for Sony Playstation USB controller Renaud Lepage Simply submitting a new mapping.
Sam Lantinga 35255342 2019-03-16T18:48:21 Fixed bug 4525 - Fix crash in ALSA_HotplugThread caused by bad return value check Anthony Pesch Fix snd_device_name_hint return value check According to the ALSA documentation, snd_device_name_hint returns 0 on success, otherwise a negative error code. The code previously only considered -1 to be an error, which let other error codes through resulting in a segfault when hints (which was NULL) was dereferenced
Sam Lantinga 8bc59f87 2019-03-16T18:34:33 Fixed CVE-2019-7635 and bug 4498 - Heap-Buffer Overflow in Blit1to4 pertaining to SDL_blit_1.c Petr Pisar The root cause is that the POC BMP file declares 3 colors used and 4 bpp palette, but pixel at line 28 and column 1 (counted from 0) has color number 3. Then when the image loaded into a surface is passed to SDL_DisplayFormat(), in order to convert it to a video format, a used bliting function looks up a color number 3 in a 3-element long color bliting map. (The map obviously has the same number entries as the surface format has colors.) Proper fix should refuse broken BMP images that have a pixel with a color index higher than declared number of "used" colors. Possibly more advanced fix could try to relocate the out-of-range color index into a vacant index (if such exists).
Jimb Esser 0f148eb6 2019-03-16T18:12:26 Fix polling left trigger reporting right trigger's values.
Jimb Esser 58ca76be 2019-03-16T18:11:09 Fix DirectInput error codes being lost
Ryan C. Gordon 12c5cda6 2019-03-16T00:08:19 Fix compiler warnings.
Ryan C. Gordon f95ca7bb 2019-03-15T16:13:19 events: Disable all the signal-handling code on platforms without support. So on Windows, for example, this mostly becomes a few empty functions.
Ryan C. Gordon 8a5a05c1 2019-03-15T15:51:05 events: Let arbitrary signals to simulate iOS/Android backgrounding events. This lets you build a custom embedded device that roughly offers the "this process is going to the background NOW" semantics of SDL on a mobile device.
Ryan C. Gordon 911bf624 2019-03-15T14:08:30 events: Make debug logging of the event queue a hint instead of an #ifdef. This makes it easy to toggle it on when debugging a new platform (or just getting more visibility into an app) without having to rebuild SDL.
Sylvain Becker cbe80d47 2019-03-13T14:54:51 KMSDRM: valid file descriptors could positive or 0. -1 is invalid. (Bug 4530)
Sylvain Becker 063c0c2a 2019-03-13T09:39:30 Android: check SDL is initialized before sending the event Avoid error message: SDLActivity thread ends (error=Video subsystem has not been initialized)
Ethan Lee c5286156 2019-03-12T20:27:54 hidapi: Add support for Wii U/Switch USB GameCube controller adapter. Note that a single USB device is responsible for all 4 joysticks, so a large rewrite of the DeviceDriver functions was necessary to allow a single device to produce multiple joysticks.
Sam Lantinga 82758efc 2019-03-12T14:45:04 [iOS DAC] Fix touch events getting from SDL2 to source2.
Sam Lantinga d05eec72 2019-03-12T14:44:25 Fixed initial display orientation at Android app start
Sam Lantinga 1a8e3a02 2019-03-12T14:44:12 HIDAPI: fix bug that caused non-HID class parts of composite devices to have windows HID functions called on them.
Sylvain Becker cddb285c 2019-03-12T20:04:08 Fixed bug 4513 - Wayland, fix crash when remove event is sent (from Sebastian Krzyszkowiak)
Sylvain Becker 052b4f29 2019-03-12T14:20:37 SDL_EVDEV_kbd_init: uninitialized data for ioctl (Bug 4530) Only two chars are used but the full prototype is: int tioclinux(struct tty_struct *tty, unsigned long arg) ==5010== Syscall param ioctl(TIOCLINUX) points to uninitialised byte(s) ==5010== at 0x53E73C7: ioctl (syscall-template.S:78) ==5010== by 0x4A887DA: SDL_EVDEV_Init (SDL_evdev.c:163) ==5010== by 0x4A7D157: KMSDRM_VideoInit (SDL_kmsdrmvideo.c:509) ==5010== by 0x497D959: SDL_VideoInit_REAL (SDL_video.c:529) ==5010== by 0x487ACBC: SDL_InitSubSystem_REAL (SDL.c:171) ==5010== by 0x487B052: SDL_Init_REAL (SDL.c:256) ==5010== by 0x488F7D6: SDL_Init (SDL_dynapi_procs.h:85)
Sylvain Becker b28e956b 2019-03-12T07:59:53 Fixed bug 4542 - Image flipped vertically when rendering on texture Have to recompute viewport because projection/glOrtho is different wether rendering is on target texture or not
Sylvain Becker 28f54ee4 2019-03-11T15:31:46 SDL_MouseQuit(): clear mouse->cur_cursor (Bug 4530)
Sylvain Becker 7b275942 2019-03-11T15:27:42 KMSDRM: missing return value in VideoInit() (Bug 4530)
Sylvain Becker 3b49ee52 2019-03-11T15:22:40 KMSDRM: change calls free() to SDL_free() (Bug 4529)
Sylvain Becker 2fd4aee1 2019-02-23T09:36:56 Un-activate some routine on mips because they are slowers (Bug 4503)
Sylvain Becker 47fb781b 2019-02-22T09:30:45 BlitNtoN BlitNtoNKey: remove non-aligned word read/store (bpp 3<->4) (Bug 4503) Mips and (old) ARM doesn't allow word read/write when adress isn't 4bytes aligned. So just remove that.
Ryan C. Gordon 6fbe9e23 2019-02-19T23:46:54 raspberry: expose second display. This lets apps see and choose between both an HDMI and DSI-connected display, such as a television and the Pi Foundation's official touchscreen. It only exposes the second display if the hardware reports that it is connected.
Sylvain Becker 90a075d7 2019-02-18T22:48:14 Fix windows build
Sylvain Becker e9a7b697 2019-02-18T22:06:53 Fix bug 4053: Blit issues on Big Endian CPU
Sam Lantinga ea4c4cfc 2019-02-18T07:50:33 Fixed bug 4500 - Heap-Buffer Overflow in Map1toN pertaining to SDL_pixels.c Petr Pisar The reproducer has these data in BITMAPINFOHEADER: biSize = 40 biBitCount = 8 biClrUsed = 131075 SDL_LoadBMP_RW() function passes biBitCount as a color depth to SDL_CreateRGBSurface(), thus 256-color pallete is allocated. But then biClrUsed colors are read from a file and stored into the palette. SDL_LoadBMP_RW should report an error if biClrUsed is greater than 2^biBitCount.
Sylvain Becker afd1b3da 2019-02-17T16:20:23 Fix invalid memory access and optimise Blit_3or4_to_3or4__* Fix invalid write at last pixel of the surface: when surface has no padding (pitch == w * bpp) and bpp is 3 with Blit, no colorkey, and NO_ALPHA same or inverse rgb triplet Optimise by using int32 access: BGR24 -> ARGB8888 : faster x1.897875 (362405 -> 190953) RGB24 -> ABGR8888 : faster x1.660416 (363304 -> 218803) ABGR8888 -> RGB24 : faster x1.686319 (334962 -> 198635) ARGB8888 -> BGR24 : faster x1.691868 (324524 -> 191814) BGR24 -> RGB888 : faster x1.678459 (326811 -> 194709) BGR888 -> RGB24 : faster x1.731772 (327724 -> 189242) RGB24 -> BGR888 : faster x1.690989 (328916 -> 194511) RGB888 -> BGR24 : faster x1.698333 (326175 -> 192056)
Silent b6a45f1a 2019-02-14T20:46:58 Fixed DualShock 3 mapping
Sylvain Becker 1aa2ad2f 2019-02-09T17:40:32 Better naming for the blit permutation variables
Sylvain Becker f6a2ae60 2019-02-09T17:20:53 Faster blit colorkey or not, applied to bpp: 3->4 and 4->3 ===== BlitNtoNKey ======== ABGR8888 -> BGR24 : faster x3 (2168709 -> 562738) ABGR8888 -> RGB24 : faster x3 (2165055 -> 567458) ARGB8888 -> BGR24 : faster x3 (2169109 -> 564338) ARGB8888 -> RGB24 : faster x3 (2165266 -> 567081) BGR24 -> ABGR8888 : faster x3 (2997675 -> 891636) BGR24 -> ARGB8888 : faster x3 (2985449 -> 892028) BGR24 -> BGR888 : faster x3 (2961611 -> 891913) BGR24 -> BGRA8888 : faster x3 (3116305 -> 891534) BGR24 -> BGRX8888 : faster x3 (3179654 -> 896978) BGR24 -> RGB888 : faster x3 (2968191 -> 895112) BGR24 -> RGBA8888 : faster x3 (2998428 -> 893147) BGR24 -> RGBX8888 : faster x3 (2976529 -> 914853) BGR888 -> BGR24 : faster x3 (2161906 -> 563921) BGR888 -> RGB24 : faster x3 (2168228 -> 566634) BGRA8888 -> BGR24 : faster x4 (2270501 -> 561873) BGRA8888 -> RGB24 : faster x3 (2163179 -> 567330) BGRX8888 -> BGR24 : faster x3 (2162911 -> 562322) BGRX8888 -> RGB24 : faster x3 (2169617 -> 570927) RGB24 -> ABGR8888 : faster x3 (2977061 -> 925975) RGB24 -> ARGB8888 : faster x3 (2978148 -> 923680) RGB24 -> BGR888 : faster x3 (3001413 -> 935074) RGB24 -> BGRA8888 : faster x3 (2959003 -> 924096) RGB24 -> BGRX8888 : faster x3 (2965240 -> 927100) RGB24 -> RGB888 : faster x3 (2983921 -> 926063) RGB24 -> RGBA8888 : faster x3 (2963908 -> 925457) RGB24 -> RGBX8888 : faster x3 (2967957 -> 931700) RGB888 -> BGR24 : faster x3 (2173299 -> 563226) RGB888 -> RGB24 : faster x3 (2218374 -> 566164) RGBA8888 -> BGR24 : faster x3 (2166355 -> 561381) RGBA8888 -> RGB24 : faster x3 (2170322 -> 566729) RGBX8888 -> BGR24 : faster x3 (2168524 -> 564072) RGBX8888 -> RGB24 : faster x3 (2163680 -> 566956) ===== BlitNtoN ======== BGR24 -> BGRA8888 : faster x3 (2458958 -> 797557) BGR24 -> BGRX8888 : faster x3 (2486085 -> 797745) BGR24 -> RGBA8888 : faster x3 (2422116 -> 797637) BGR24 -> RGBX8888 : faster x3 (2454426 -> 799085) BGRA8888 -> BGR24 : faster x4 (2468206 -> 524486) BGRA8888 -> RGB24 : faster x4 (2463581 -> 525561) BGRX8888 -> BGR24 : faster x4 (2583355 -> 524468) BGRX8888 -> RGB24 : faster x4 (2477242 -> 524284) RGB24 -> BGRA8888 : faster x2 (2453414 -> 818415) RGB24 -> BGRX8888 : faster x3 (2414915 -> 800863) RGB24 -> RGBA8888 : faster x3 (2461114 -> 798148) RGB24 -> RGBX8888 : faster x3 (2400922 -> 799203) RGBA8888 -> BGR24 : faster x4 (2494472 -> 526428) RGBA8888 -> RGB24 : faster x4 (2462260 -> 526791) RGBX8888 -> BGR24 : faster x4 (2541115 -> 524390) RGBX8888 -> RGB24 : faster x4 (2469059 -> 525416)
Sylvain Becker 604b44f2 2019-02-08T17:15:30 Fix wrong access and simplify
Sylvain Becker 5ed30f84 2019-02-07T22:45:50 Some simplification of previous commit
Sylvain Becker 5fd22892 2019-02-07T22:03:30 Faster blit with CopyAlpha, no ColorKey Applied to following formats: ABGR8888 -> BGRA8888 : faster x3 (2727179 -> 704761) ABGR8888 -> RGBA8888 : faster x3 (2707808 -> 705309) ARGB8888 -> BGRA8888 : faster x3 (2745371 -> 712437) ARGB8888 -> RGBA8888 : faster x3 (2746230 -> 705236) BGRA8888 -> ABGR8888 : faster x3 (2745026 -> 707045) BGRA8888 -> ARGB8888 : faster x3 (2752760 -> 727373) BGRA8888 -> RGBA8888 : faster x3 (2769544 -> 704607) RGBA8888 -> ABGR8888 : faster x3 (2725058 -> 706669) RGBA8888 -> ARGB8888 : faster x3 (2704866 -> 707132) RGBA8888 -> BGRA8888 : faster x3 (2710351 -> 704615)
Sylvain Becker 704e62bb 2019-02-07T21:49:24 Code factorization of the pixel format permutation
Sylvain Becker 0a007a9b 2019-02-07T18:52:49 Fix wrong comment
Sylvain Becker e5192384 2019-02-07T18:51:14 Faster blit with no ColorKey Applied to following formats: ABGR8888 -> BGRX8888 : faster x5 (3177493 -> 630439) ABGR8888 -> RGBX8888 : faster x5 (3178104 -> 628925) ARGB8888 -> BGRX8888 : faster x4 (3141089 -> 629448) ARGB8888 -> RGBX8888 : faster x5 (3216413 -> 630465) BGR888 -> BGRA8888 : faster x4 (3145403 -> 637701) BGR888 -> BGRX8888 : faster x4 (3142106 -> 630144) BGR888 -> RGBA8888 : faster x4 (3202685 -> 649384) BGR888 -> RGBX8888 : faster x4 (3170617 -> 658670) BGRA8888 -> BGR888 : faster x4 (3203308 -> 657697) BGRA8888 -> RGB888 : faster x5 (3201475 -> 631747) BGRA8888 -> RGBX8888 : faster x5 (3274544 -> 630409) BGRX8888 -> ABGR8888 : faster x4 (3149753 -> 638682) BGRX8888 -> ARGB8888 : faster x5 (3164101 -> 631273) BGRX8888 -> BGR888 : faster x4 (3144454 -> 630712) BGRX8888 -> RGB888 : faster x4 (3160490 -> 638047) BGRX8888 -> RGBA8888 : faster x5 (3308988 -> 631232) BGRX8888 -> RGBX8888 : faster x5 (3216775 -> 638065) RGB888 -> BGRA8888 : faster x4 (3143135 -> 655146) RGB888 -> BGRX8888 : faster x4 (3141790 -> 653771) RGB888 -> RGBA8888 : faster x5 (3214402 -> 637001) RGB888 -> RGBX8888 : faster x4 (3143082 -> 630009) RGBA8888 -> BGR888 : faster x3 (3157048 -> 920375) RGBA8888 -> BGRX8888 : faster x5 (3196692 -> 632996) RGBA8888 -> RGB888 : faster x4 (3141570 -> 652151) RGBX8888 -> ABGR8888 : faster x5 (3175401 -> 631218) RGBX8888 -> ARGB8888 : faster x4 (3144690 -> 639440) RGBX8888 -> BGR888 : faster x4 (3144250 -> 630171) RGBX8888 -> BGRA8888 : faster x5 (3220321 -> 630731) RGBX8888 -> BGRX8888 : faster x4 (3178453 -> 637445) RGBX8888 -> RGB888 : faster x5 (3203623 -> 632596)
Sylvain Becker 7372295e 2019-02-07T17:52:28 Faster blit when using No Alpha or Set Alpha, + ColorKey Applied to following formats: ABGR8888 -> BGRX8888 : faster x4 (2794295 -> 610587) ABGR8888 -> RGB888 : faster x4 (2835693 -> 615561) ABGR8888 -> RGBX8888 : faster x4 (2880475 -> 610479) ARGB8888 -> BGR888 : faster x4 (2802718 -> 610702) ARGB8888 -> BGRX8888 : faster x4 (2792481 -> 606311) ARGB8888 -> RGBX8888 : faster x4 (2821621 -> 624745) BGR888 -> ARGB8888 : faster x4 (2791705 -> 637889) BGR888 -> BGRA8888 : faster x4 (2793195 -> 652299) BGR888 -> BGRX8888 : faster x4 (2800713 -> 609326) BGR888 -> RGB888 : faster x4 (2812260 -> 610471) BGR888 -> RGBA8888 : faster x4 (2792327 -> 629288) BGR888 -> RGBX8888 : faster x4 (2799224 -> 607073) BGRA8888 -> BGR888 : faster x4 (2800520 -> 606897) BGRA8888 -> RGB888 : faster x4 (2825274 -> 616156) BGRA8888 -> RGBX8888 : faster x4 (2812530 -> 610340) BGRX8888 -> ABGR8888 : faster x4 (2793940 -> 628596) BGRX8888 -> ARGB8888 : faster x4 (2822686 -> 638899) BGRX8888 -> BGR888 : faster x4 (2818141 -> 613659) BGRX8888 -> RGB888 : faster x4 (2929017 -> 611794) BGRX8888 -> RGBA8888 : faster x4 (2799709 -> 629750) BGRX8888 -> RGBX8888 : faster x4 (2911010 -> 605640) RGB888 -> ABGR8888 : faster x4 (2800671 -> 631542) RGB888 -> BGR888 : faster x4 (2802644 -> 604461) RGB888 -> BGRA8888 : faster x4 (2801919 -> 628729) RGB888 -> BGRX8888 : faster x4 (2938244 -> 604135) RGB888 -> RGBA8888 : faster x4 (2912447 -> 642185) RGB888 -> RGBX8888 : faster x4 (2831676 -> 634293) RGBA8888 -> BGR888 : faster x4 (2928896 -> 614960) RGBA8888 -> BGRX8888 : faster x4 (2821422 -> 608146) RGBA8888 -> RGB888 : faster x4 (2825927 -> 617184) RGBX8888 -> ABGR8888 : faster x4 (2803852 -> 654129) RGBX8888 -> ARGB8888 : faster x4 (2923615 -> 642644) RGBX8888 -> BGR888 : faster x4 (2806523 -> 610447) RGBX8888 -> BGRA8888 : faster x4 (2813388 -> 630305) RGBX8888 -> BGRX8888 : faster x4 (2800052 -> 607881) RGBX8888 -> RGB888 : faster x4 (2807722 -> 610263)
Sylvain Becker bb9a9080 2019-02-07T16:13:25 Fix pointer warnings