16250 Commits

Author SHA1 Message Date
Anonymous Maarten
d1eab18de2 cmake: build ci and and release with static runtime library
(The Visual Studio projects do this as well)
2024-07-10 19:47:27 +02:00
Sam Lantinga
21aba2b19c Don't try to use D3D11 or D3D12 if the window isn't backed with an HWND
Fixes https://github.com/libsdl-org/SDL/issues/10196
2024-07-10 09:42:36 -07:00
Anonymous Maarten
001c1b29df cmake: remove SDL_STATIC_VCRT option
projects are expected to use CMAKE_MSVC_RUNTIME_LIBRARY to select the
runtime library.

With current CMake versions, this can be done with:

 -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_MSVC_RUNTIME_LIBRARY=xxx

with xxx one of:
 "MultiThreaded"         -> -MT (static non-debug)
 "MultiThreadedDLL"      -> -MD (shared non-debug)
 "MultiThreadeDebug"     -> -MTd (static debug)
 "MultiThreadedDebugDLL" -> -MDd (shared debug)

See CMake documentation for more information:
https://cmake.org/cmake/help/latest/policy/CMP0091.html
https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html
2024-07-10 18:34:34 +02:00
David Gow
1857f57686 Remove incorrect asserts from SDL_InitPixelFormatDetails()
The SDL_Surface rework in #10201 adds some extra checks that the pixel
format enum matches the SDL_PixelFormatDetails struct, which is largely
filled in with values from SDL_GetMasksForPixelFormat().

However, there are a few cases where these do not match:
- Indexed 1-, 2-, and 4-bit formats encode a bytes_per_pixel of 0, but
  SDL_GetMasksForPixelFormat() gives a value of 1.
- Packed formats, like SDL_PIXELFORMAT_XRGB8888 encode a bits_per_pixel
  of the number of used bits (24), but SDL_GetMasksForPixelFormat()
  includes the padding byte, giving a total of 32.

We could change the encoding of these in the enum, or change what we store
in the details struct to match, but I suspect we'd either break something
that relies on it, or lose some (_maybe_ useful) information. In the meantime,
this gets the tests working again.

Signed-off-by: David Gow <david@ingeniumdigital.com>
2024-07-10 09:26:46 -07:00
Frank Praznik
3b60ee666e
wayland: Note that setting the damage region in the frame callback is explicitly to work around a driver bug 2024-07-10 10:46:39 -04:00
SDL Wiki Bot
fdc04708f1 Sync SDL3 wiki -> header 2024-07-10 07:48:48 +00:00
Sam Lantinga
2ba76dbe80 Simplified SDL_Surface
SDL_Surface has been simplified and internal details are no longer in the public structure.

The `format` member of SDL_Surface is now an enumerated pixel format value. You can get the full details of the pixel format by calling `SDL_GetPixelFormatDetails(surface->format)`. You can get the palette associated with the surface by calling SDL_GetSurfacePalette(). You can get the clip rectangle by calling SDL_GetSurfaceClipRect().

SDL_PixelFormat has been renamed SDL_PixelFormatDetails and just describes the pixel format, it does not include a palette for indexed pixel types.

SDL_PixelFormatEnum has been renamed SDL_PixelFormat and is used instead of Uint32 for API functions that refer to pixel format by enumerated value.

SDL_MapRGB(), SDL_MapRGBA(), SDL_GetRGB(), and SDL_GetRGBA() take an optional palette parameter for indexed color lookups.
2024-07-10 00:48:18 -07:00
Brick
40ed098ce8 Improve the bucket distribution of SDL_HashTable
SDL_HashID does no hashing, which isn't good if the lower bits of the key aren't evenly distributed.
2024-07-09 20:50:26 +01:00
Brick
d604555142 Replace BlitRGBtoRGBSurfaceAlphaMMX 2024-07-08 20:59:42 +01:00
Brick
d37f8fa2b3 Optimize BlitRGBtoRGBSurfaceAlpha 2024-07-08 20:59:42 +01:00
Brick
fde2378ccd Refactor alpha blitters, move the SSE41/AVX2 versions into SDL_blit_A.c 2024-07-08 20:59:42 +01:00
Brick
43a5da358d Set ALLOWABLE_ERROR_BLENDED to 0 2024-07-08 20:59:42 +01:00
Anonymous Maarten
1cddc7b66e sdlprocdump: exceptions are not handled 2024-07-08 21:30:49 +02:00
Anonymous Maarten
c4cbbca185 sdlprocdump: ignore C++ exceptions 2024-07-08 20:48:33 +02:00
Sam Lantinga
d6c8485f28 Make sure we're actually running on Windows before using D3D renderers 2024-07-08 11:36:11 -07:00
Sam Lantinga
4d5f139f0f Add the blit automation tests 2024-07-08 10:58:48 -07:00
Brick
c457dbb629 Fix BlitNtoNPixelAlpha for formats with no dst alpha 2024-07-08 10:53:46 -07:00
Brick
3c59d3f69c Remove old references to blitter files 2024-07-08 10:53:46 -07:00
Brick
95b683ac3e Tidy up/optimize BlitNtoNPixelAlpha_SSE4_1 2024-07-08 10:53:46 -07:00
Brick
070e48f66e Tidy up/optimize BlitNtoNPixelAlpha_AVX2 2024-07-08 10:53:46 -07:00
Brick
5d875aa94e Fix rounding in MULT_DIV_255 2024-07-08 10:53:46 -07:00
Isaac Aronson
b7b513b70b Fix bytes_per_pixel rename 2024-07-08 10:53:46 -07:00
Isaac Aronson
44d397282d Re-enable intrinsic blitters 2024-07-08 10:53:46 -07:00
Isaac Aronson
b34faf732d Implement fast 255 mult-div in SDL_blit_auto 2024-07-08 10:53:46 -07:00
Isaac Aronson
23d4e9ec13 Support VisualC-WinRT UWP build 2024-07-08 10:53:46 -07:00
Isaac Aronson
8d099d8976 Fix formatting 2024-07-08 10:53:46 -07:00
Isaac Aronson
8e3afd56f5 Restore BlitARGB 555 and 565 blending algorithms 2024-07-08 10:53:46 -07:00
Isaac Aronson
5cec91e27a Implement accurate, performant 32-bit scalar blitter for ARGB dst case 2024-07-08 10:53:46 -07:00
Isaac Aronson
e5bbe32641 Implement alpha blend as macro and replace inaccurate blitters 2024-07-08 10:53:46 -07:00
Isaac Aronson
0f351cd6af Remove ARM32 assembly/pixman blitters 2024-07-08 10:53:46 -07:00
Isaac Aronson
3ecb927587 Remove last non-SDL types from test 2024-07-08 10:53:46 -07:00
Isaac Aronson
adca9d408e Fixup tests to use correct types 2024-07-08 10:53:46 -07:00
Isaac Aronson
f5ee88c2cf Implement mathematically correct scalar blitters 2024-07-08 10:53:46 -07:00
Isaac Aronson
f0238ef615 Fix build issues 2024-07-08 10:53:46 -07:00
Isaac Aronson
594ca1a897 Add testautomation suite for alpha blending 2024-07-08 10:53:46 -07:00
Isaac Aronson
9590a47629 Implement visually accurate SIMD blitters 2024-07-08 10:53:46 -07:00
Isaac Aronson
f6f12d0451 Revert "Remove buffer in SSE4.1, use unpacklo and packus intrinsics"
This reverts commit 149cd55840e7fdfd5ecde5c545aede5822abd14e.
2024-07-08 10:53:46 -07:00
Isaac Aronson
a027ad9788 Remove buffer in SSE4.1, use unpacklo and packus intrinsics 2024-07-08 10:53:46 -07:00
Isaac Aronson
2432b6686e Add back in buffer free removed during testing 2024-07-08 10:53:46 -07:00
Isaac Aronson
380bcff018 Allow arbitrary dstfmt in 1 pixel case; naming and const cleanup 2024-07-08 10:53:46 -07:00
Isaac Aronson
87958f44d0 Support arbitrary destination formats; remove buffer from AVX2 2024-07-08 10:53:46 -07:00
Isaac Aronson
c80c540be3 Support older GCC and clang that lack some intrinsics 2024-07-08 10:53:46 -07:00
Isaac Aronson
e8cba442c5 Clean up API surface to use attribute macros and rename convertPixels 2024-07-08 10:53:46 -07:00
Isaac Aronson
bac318fc27 Check for SSE4.1 first as more common 2024-07-08 10:53:46 -07:00
Isaac Aronson
12d18c7497 Add back glob for src/video/*.c to CMakeLists.txt 2024-07-08 10:53:46 -07:00
Isaac Aronson
735cf5a6f9 Relocate intrinsic modules to src/video/ 2024-07-08 10:53:46 -07:00
Isaac Aronson
f68a7edcf8 Properly shortcut only when AVX2 or SSE4.1 available 2024-07-08 10:53:46 -07:00
Isaac Aronson
3e0581c625 Merge upstream and sdl3-blitters 2024-07-08 10:53:46 -07:00
Frank Praznik
159d7087c6
wayland: Only set the window geometry when viewports are unsupported
Setting the window geometry on the xdg-toplevel path is a hack used to prevent protocol violations if a buffer with an old size is committed. Since viewports decouple the window geometry from the buffer size, this is not needed if viewports are supported.

Fixes an invalid window geometry warning and incorrect window overview size for fullscreen windows in GNOME.
2024-07-08 11:40:54 -04:00
Sam Lantinga
4fa5196820 Revert "Switch pixel format loss fields to number of bits"
This reverts commit 3c90b1c1f62c6757e85037934ef24caeebf58e2d.

It turns out this is problematic for sdl2-compat. We're investigating a more complete separation between SDL2 and SDL3 surfaces, but in the meantime, I'll fix the breakage.
2024-07-07 19:41:05 -07:00