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
...
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"
...
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
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: 731631f300/libc/upstream-openbsd/lib/libc/stdio/flags.c (86)
* Apple / FreeBSD: 63976b830a/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()
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
Cameron Cawley
12cee1cf46
Use the correct pixel formats for OpenGL on big endian
2025-10-06 08:58:45 -07:00
SDL Wiki Bot
f90c179c5d
Sync SDL3 wiki -> header
...
[ci skip]
2025-10-06 14:32:26 +00:00
Sam Lantinga
941b0a8ea4
Added support for external GPU textures to the GPU renderer
2025-10-06 07:31:00 -07:00
definability
4d9295ef1e
Fixed building with SDL_LEAN_AND_MEAN
...
Fixes https://github.com/libsdl-org/SDL/issues/14151
2025-10-05 17:36:11 -07:00
Adrian
6d47d8dff1
Always convert window to Vulkan window on SDL_Vulkan_CreateSurface ( #14143 )
2025-10-05 09:59:24 -07:00
Ozkan Sezer
3723913969
SDL_zenitymessagebox.c: Add exit code checking.
...
Fixes https://github.com/libsdl-org/SDL/issues/14140
Closes https://github.com/libsdl-org/SDL/pull/14146
Co-authored-by: eafton <blox2000@protonmail.com >
2025-10-05 12:28:39 +03:00
Ozkan Sezer
6c3cc3587d
zenity dialog: make sure that --modal --attach switches are supported.
...
Reference issue: https://github.com/libsdl-org/SDL/issues/14140
2025-10-05 12:21:14 +03:00
eafton
87f9a0e106
X11TK: Add more checks to the Xrandr code path to avoid errors
2025-10-05 03:10:25 +03:00
HTuanPhong
2638537f92
Fix vulkan gpu resize lag on windows
2025-10-04 15:22:28 -07:00
Sam Lantinga
134b47730b
Added support for linear and pixel art scaling for palettized textures
2025-10-04 15:12:08 -07:00
Anonymous Maarten
e1fde46a6a
Include SDL_internal.h before checking HAVE_FRIBIDI_H
...
This happened to work because of precompiled headers
2025-10-04 21:25:45 +02:00
Anonymous Maarten
f69981cbfb
Use space indendation in SDL_fribidi sources
2025-10-04 21:25:45 +02:00
Anonymous Maarten
0f9d032885
ci+docs: add fribidi dependency
2025-10-04 21:25:45 +02:00
Sam Lantinga
d832ac5d6f
SDL_RenderDebugText() is no longer blurry when scaled
2025-10-04 12:04:07 -07:00
Michael Fitzmayer
dc1cc98e2b
N-Gage: Add SDL_TimeToDateTime() implementation ( #14141 )
...
Add simple but working SDL_TimeToDateTime() implementation.
Fixes https://github.com/libsdl-org/SDL/issues/14047
2025-10-04 20:00:27 +03:00
Frank Praznik
bcf3afb6f3
wayland: Suppress initial keymap changed events during initialization
2025-10-04 10:54:32 -04:00
Frank Praznik
8fda4231cf
wayland: Optimize the legacy key level fallback function
...
When iterating over the keymap entries, a valid xkb state object has already been allocated, so use that instead of allocating/destroying a new state object for every lookup, which avoids a calloc/free operation inside libxkbcommon. Any state set by the level lookup function will be overwritten with valid state after keymap iteration has completed.
2025-10-04 10:54:32 -04:00
Frank Praznik
2c02e6f8bb
wayland: Restore valid state information when building keymaps
...
The spec doesn't guarantee that a modifier event won't arrive before a keymap event, or that it will always be sent after a keymap change if the modifiers and layout index haven't changed, so restore any valid state after allocation when building a new keymap.
2025-10-04 10:54:32 -04:00
Simon McVittie
1c1f7082ab
Only emit dlopen note for SDL_FRIBIDI_DYNAMIC if not a hard dependency
...
Fixes: 65b36721 "unix: Mark SDL_FRIBIDI_DYNAMIC as a weak dependency"
Thanks: Anonymous Maarten
2025-10-04 17:21:49 +03:00
Simon McVittie
65b367216e
unix: Mark SDL_FRIBIDI_DYNAMIC as a weak dependency
...
Signed-off-by: Simon McVittie <smcv@collabora.com >
2025-10-04 14:15:19 +03:00
Simon McVittie
f7f33cbd36
x11: Clean up trailing whitespace in SDL_x11toolkit.[ch]
...
Signed-off-by: Simon McVittie <smcv@collabora.com >
2025-10-04 14:10:00 +03:00
Simon McVittie
2a96bddebf
unix: Clean up trailing whitespace in SDL_fribidi.c
...
Signed-off-by: Simon McVittie <smcv@collabora.com >
2025-10-04 14:10:00 +03:00
Sam Lantinga
f3815ede24
Rebuilt GPU renderer shaders
2025-10-03 19:35:45 -07:00