Commit Graph

20467 Commits

Author SHA1 Message Date
Sam Lantinga 5dc65f829f check_android_jni.py: make sure we're using python3 2025-10-08 21:32:30 -07:00
Sam Lantinga 9a6455a526 Disable GameInput for mouse and keyboard by default
We're going to wait for this to get more testing before enabling it by default.

Fixes https://github.com/libsdl-org/SDL/issues/13846
2025-10-08 21:22:22 -07:00
Roman Fomin c86cfb0156 Disable D3D feature levels below 11.0 for the D3D11 renderer 2025-10-08 21:10:08 -07:00
Sam Lantinga 2a92a3c9c5 Recreate the Vulkan GPU swap chain when resuming on Android
Fixes https://github.com/libsdl-org/SDL/issues/12957
2025-10-08 21:06:17 -07:00
Sam Lantinga 6f4993ddee Ignore invalid width/height in setOrientationBis() 2025-10-08 20:14:51 -07:00
Sam Lantinga 00ffddece8 Ignore VK_SUBOPTIMAL_KHR on the Android platform
This is returned whenever the device has been rotated, and can be safely ignored.

Fixes https://github.com/libsdl-org/SDL/issues/12950
2025-10-08 20:02:31 -07:00
Sam Lantinga a2a60f75c7 Temporarily disabled texture binding validation
There are some advanced use cases that trip over this, so temporarily disabling the validation pending further review.

Reference: https://github.com/libsdl-org/SDL/issues/13871
2025-10-08 19:50:48 -07:00
Sam Lantinga 84b0565096 Fixed potential memory leak 2025-10-08 19:44:03 -07:00
Sam Lantinga 3316dde0c2 Improved error information when renderer creation fails
On Android, if you create a window with SDL_WINDOW_OPENGL, you can't create a Vulkan surface. The error message has been improved to reflect this, and the error is propagated back up to the application.

Also added warn level logging if the renderer couldn't be created.
2025-10-08 19:36:19 -07:00
Sam Lantinga edf5f9ec5c Properly upgrade a window to Vulkan when creating a Vulkan renderer 2025-10-08 19:17:11 -07:00
Ryan C. Gordon 9a7cd95ac3 properties: Added SDL_PROP_NAME_STRING.
Fixes #14155.
2025-10-08 21:50:18 -04:00
Ryan C. Gordon 808a3f573f egl: Better attempt at retrying surface creation w/o EGL_EXT_present_opaque.
Fixes #13094.
2025-10-08 21:42:56 -04:00
Sam Lantinga d4b684311e Added the Wooting 60HE keyboard to the controller blacklist 2025-10-08 16:06:17 -07:00
Sam Lantinga caa33cb018 Removed InvalidateRect() when moving and resizing
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
This was added in 2016, presumably to help address the move/resize issues on Windows, which have been since been addressed by the live-resize functionality.

Fixes https://github.com/libsdl-org/SDL/issues/14079
2025-10-08 13:32:19 -07:00
Sam Lantinga 7914bdb7ea Only call WIN_RoUninitialize() if WIN_RoInitialize() succeeded
Fixes https://github.com/libsdl-org/SDL/issues/14178
2025-10-08 13:15:48 -07:00
Sam Lantinga 8830b466d0 Improve handling of surfaces with NULL pixels
Fixes https://github.com/libsdl-org/SDL/issues/14059
2025-10-08 12:40:29 -07:00
Ozkan Sezer aab9423796 fix wiki breakage for commit e4f24ff7ae (PR/#14053) 2025-10-08 22:10:50 +03:00
SDL Wiki Bot 1e832c3900 Sync SDL3 wiki -> header
[ci skip]
2025-10-08 17:53:53 +00:00
Dima Volynets e4f24ff7ae MacOS: Added hint to control update of the metal layer's drawable size (#14053) 2025-10-08 10:52:01 -07:00
eafton 98eaa05a9f Fix for #13094 2025-10-08 10:45:04 -07:00
krizej 8bba24757d x11: request available clipboard mime-types on video init 2025-10-08 10:30:04 -07:00
Sylvain 10885f4b7e Fixed bug #13306 - workaround for android issue "java.lang.NullPointerException android.view.View.onResolvePointerIcon" 2025-10-08 08:04:11 -07:00
Sam Lantinga 244ae39b30 Optimized the 16-bit -> 32-bit SSE pixel conversion
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
Test code:
---
int main( int argc, char *argv[] )
{
    SDL_Surface *orig = SDL_LoadPNG("testyuv.png");
    SDL_Surface *surf16 = SDL_ConvertSurface(orig, SDL_PIXELFORMAT_RGB565);
    SDL_Surface *surf32 = SDL_ConvertSurface(surf16, SDL_PIXELFORMAT_ARGB8888);

    Uint64 then = SDL_GetTicks();
    for (int i = 0; i < 100000; ++i) {
        SDL_BlitSurface(surf16, NULL, surf32, NULL);
    }
    Uint64 now = SDL_GetTicks();
    SDL_Log("Blit took %d ms\n", (int)(now - then));
    return 0;
}
---

Results on my system:
BlitNtoN: Blit took 34522 ms
Blit_RGB565_32 (3 LUT): Blit took 9316 ms
Blit_RGB565_32 (1 LUT): Blit took 5268 ms
Blit_RGB565_32_SSE41: Blit took 1619 ms
2025-10-07 16:31:14 -07:00
Sam Lantinga 168de63a7a Switched back to a single LUT for 16-bit -> 32-bit pixel conversion
This beats the previous 3-LUT version and even beats SSE on my system.

Test code:
---
int main( int argc, char *argv[] )
{
    SDL_Surface *orig = SDL_LoadPNG("testyuv.png");
    SDL_Surface *surf16 = SDL_ConvertSurface(orig, SDL_PIXELFORMAT_RGB565);
    SDL_Surface *surf32 = SDL_ConvertSurface(surf16, SDL_PIXELFORMAT_ARGB8888);

    Uint64 then = SDL_GetTicks();
    for (int i = 0; i < 100000; ++i) {
        SDL_BlitSurface(surf16, NULL, surf32, NULL);
    }
    Uint64 now = SDL_GetTicks();
    SDL_Log("Blit took %d ms\n", (int)(now - then));
    return 0;
}
---

Results on my system:
BlitNtoN: Blit took 34522 ms
Blit_RGB565_32 (3 LUT): Blit took 9316 ms
Blit_RGB565_32 (1 LUT): Blit took 5268 ms
Blit_RGB565_32_SSE41: Blit took 6399 ms
2025-10-07 16:31:14 -07:00
Sam Lantinga dbd5dd8c75 Ensure 16-bit -> 32-bit conversion is consistent between blitters
The SSE, LUT, and other blitters should have the same results for 16-bit -> 32-bit conversion
2025-10-07 16:31:14 -07:00
ROllerozxa f43577bbb5 Fix compiling Metal renderer with SDL_LEAN_AND_MEAN 2025-10-07 16:20:59 -07:00
Cameron Cawley 0bbbf3d43b Support resizable windows with most examples 2025-10-07 15:33:10 -04:00
Cameron Cawley 2c79ecfb8a Use texture palettes with testoverlay 2025-10-07 11:12:31 -07:00
Cameron Cawley 0f62b7c3b4 Remove teststreaming 2025-10-07 11:12:31 -07:00
Frank Praznik ce4af658ba events: Periodically poll tray events on *nix platforms
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
Tray events on *nix platforms usually run over DBus, and the events subsequently aren't delivered via the window event queue. As a result, SDL_WaitEvent() won't unblock when tray events arrive, particularly if there is no currently active window.

Wake up periodically to poll when tray items are active to avoid blocking the delivery and processing of tray events.
2025-10-07 12:32:12 -04:00
Ozkan Sezer 97c1df66a8 ci: bump cross-platform-actions. 2025-10-07 14:01:34 +03:00
Sam Lantinga e9c7cfb165 Revert "Use rounded results for expanding values to 8-bits"
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
This reverts commit ba5be7af74.

We actually want to use high bits and replicated low bits, to match SIMD value expansion
2025-10-06 23:14:38 -07:00
Sam Lantinga ba5be7af74 Use rounded results for expanding values to 8-bits 2025-10-06 21:28:42 -07:00
Sam Lantinga 1eb42b0dfd Added SSE accelerated RGB565 to 32-bit pixel conversions 2025-10-06 21:28:42 -07:00
Sam Lantinga e4c5b72fd7 video: Fix asserts calling SetWindowProgress{State,Value} when creating popup windows
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
2025-10-06 17:31:46 -07:00
Sam Lantinga 7877ed1802 Fixed permissions 2025-10-06 17:30:04 -07:00
Sam Lantinga 9f9be1425d Fixed permissions 2025-10-06 17:24:56 -07:00
Sam Lantinga 69791ccad0 Don't treat the Moonlander MK1 Keyboard as a controller
Fixes http://github.com/mgba-emu/mgba/issues/3606
2025-10-06 16:52:03 -07:00
SDL Wiki Bot 26a7346ead Sync SDL3 wiki -> header
[ci skip]
2025-10-06 23:47:11 +00:00
Sam Lantinga bb0d6221c1 Use PNG files for tests and examples
These are much smaller than the previous BMP files

Fixes https://github.com/libsdl-org/SDL/issues/14159
2025-10-06 16:45:53 -07:00
Sam Lantinga 7454302cd0 Fixed 16-bit -> 32-bit blit lookup tables
The lookup tables weren't correct, e.g. 0xFFFF was being translated into 0xFFFFFFEF
2025-10-06 16:45:53 -07:00
Sam Lantinga 73334b6bb4 Added support for loading and saving PNG images using stb_image 2025-10-06 16:45:53 -07:00
SDL Wiki Bot 8d81ee3f5d Sync SDL3 wiki -> header
[ci skip]
2025-10-06 20:25:05 +00:00
nmlgc 8df057fafc iostream: Properly support the "x" mode for SDL_IOFromFile()
The "x" mode for `fopen()` (open file only if it doesn't exist) used to
be a glibc-exclusive extension, but was later standardized in C11, and
is now also implemented as part of every other widely-used libc:

	* musl: https://git.musl-libc.org/cgit/musl/tree/src/stdio/__fmodeflags.c?id=0ccaf0572e9cccda2cced0f7ee659af4c1c6679a
	* Android Bionic / OpenBSD: https://android.googlesource.com/platform/bionic/+/731631f300090436d7f5df80d50b6275c8c60a93/libc/upstream-openbsd/lib/libc/stdio/flags.c#86
	* Apple / FreeBSD: https://github.com/apple-oss-distributions/Libc/blob/63976b830a836a22649b806fe62e8614fe3e5555/stdio/FreeBSD/flags.c#L91-L92

As a result, "x" has already been working on all our automatically
tested platforms that implement `SDL_IOFromFile()` via `fopen()`. So
all we'd be missing for proper support is a Windows implementation
using `CREATE_NEW`, and the documentation that this mode exists and is
intended to work.
2025-10-06 13:23:42 -07:00
Sam Lantinga 87e3250518 Add a note that OpenVR overlays assume unpremultiplied alpha by default 2025-10-06 11:58:21 -07:00
Frank Praznik ce1175724a win32: Don't overwrite a programmatically set window size with old data
While in a modal loop, the size in WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED may only be updated if the window is being resized interactively. Set the SWP_NOSIZE flag if the size hasn't changed from the last move/size event, or a size set programmatically may end up being overwritten by old size data.
2025-10-06 14:44:41 -04:00
Cameron Cawley d40b887775 Support loading BytePusher files from the command line 2025-10-06 11:19:46 -07:00
Cameron Cawley 2f9f939446 Use texture palettes for the BytePusher example 2025-10-06 09:50:06 -07:00
Sam Lantinga b92557c0b7 Made error message consistent between SDL_SetSurfacePalette() and SDL_SetTexturePalette()
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
2025-10-06 09:22:34 -07:00
Cameron Cawley ab06784318 Check the availability of GL_BGRA before use 2025-10-06 08:58:45 -07:00