Commit Graph
16152 Commits
Author SHA1 Message Date
Ryan C. Gordon 4755055bc3 audio: Separate channel maps out of SDL_AudioSpec. 2024-07-10 15:43:57 -04:00
Anonymous Maarten 1664ac4fcb hidapi: fix 'conversion from 'size_t' to 'int', possible loss of data' of libusb functions 2024-07-10 20:27:39 +02:00
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