Commit Graph
100 Commits
Author SHA1 Message Date
Ethan Lee 0cc2b026e7 gpu: Check for MSFT_layered_driver, skip layered drivers during enumeration 2025-11-10 18:16:54 -05:00
Ethan Lee 2135ecdfcc gpu: Vulkan on private platforms cannot make use of oldSwapchain, destroy the full swapchain on resize
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-16 15:18:07 -04:00
Ethan Lee 4ee79e6493 filesystem: GetCurrentDirectory now falls back to GetBasePath when unsupported 2025-09-18 14:49:03 -04:00
Ethan Lee c5749f0ae7 video: Xbox buildfix for DeclareDPIAwareSystem
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
2025-09-09 16:35:18 -04:00
Ethan Lee 5591d4b1a8 gpu: Note hardware supported by Tier 1 Resource Binding 2025-09-08 11:19:20 -07:00
Ethan Lee cbe4970946 gpu: Add D3D12_ALLOW_FEWER_RESOURCE_SLOTS_BOOLEAN property 2025-09-08 11:19:20 -07:00
Ethan Lee 689049f8ec gpu: VK_KHR_get_physical_device_properties2 can be optional 2025-09-02 09:53:01 -07:00
Ethan Lee a798da2ec7 hidapi: Add support for NSO GameCube controller via libusb.
Thanks to Nohzockt for the initial libusb init and hidapi polling work!
2025-08-28 09:10:47 -07:00
Ethan Lee efea62ed61 hidapi: Add a stub driver for Switch 2.
Thanks to kiddkaffeine for the Xcode updates!
2025-08-28 09:10:47 -07:00
Ethan Lee 0fcaf47658 gpu: D3D12 only requires feature level 11_0 with Resource Binding Tier 2.
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
We previously thought this wasn't possible because constant buffer offsets and
partial updates were unavailable, but we were reading the wrong table - this is
only the case for D3D11...

https://learn.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-devices-downlevel-intro

... while 12 doesn't list this feature at all:

https://learn.microsoft.com/en-us/windows/win32/direct3d12/hardware-feature-levels

We double checked and Jesse Natalie confirmed that this feature is required for
D3D12 even for 11_0 drivers. (Thanks Jesse!)

Additionally, D3D12 requires that UAVs are accessible from all shader stages,
meaning Tier 2 is enough to support the number of UAVs we need. Tier 1 could be
a property to lower the requirements, but that can be done later.
2025-08-22 15:46:05 -04:00
Ethan Lee d86fb8a83a gdk: Ignore focus loss events caused by text input showing the OSK 2025-06-04 09:40:33 -04:00
Ethan Lee db972604a8 gpu: Xbox buildfix 2025-05-27 12:41:27 -04:00
Ethan Lee 510126ee63 gpu: Check shader format support in PrepareDriver 2025-05-19 08:20:33 -07:00
Ethan Lee ad55597715 ci: Update Steam Linux Runtime tasks.
- Use "3.0" instead of "Sniper"
- Use "steamrt3" instead of "slrsniper"
- Use latest instead of beta for x86_64
2025-05-08 10:24:35 -07:00
Ethan Lee 36c3a7a5e2 ci: Add slrsniper-arm64 task 2025-05-08 10:24:35 -07:00
Ethan Lee 5283f73748 storage: Declare a private bootstrap for NDA user storage 2025-03-18 22:12:21 -04:00
Ethan Lee db817a37f4 gpu: Fix forward declaration and inclusion of PrivateGPUDriver 2025-02-24 15:46:39 -05:00
Ethan Lee 326ce9bb8d gpu: D3D12 buildfix for Xbox 2025-01-16 12:19:59 -05:00
Ethan Lee c95b842b30 video: Xbox does not use CreateIconFromSurface 2025-01-16 12:19:46 -05:00
Ethan Lee 3df0767e34 gpu: Initialize Metal stencil format even if stencil test is disabled 2025-01-12 13:05:27 -08:00
Ethan Lee 90aff306c1 gpu: Show a debug error when pipelines are not given the right shader stages 2025-01-09 20:17:21 -05:00
Ethan Lee 6cdde10edb gpu: Metal depth write should behave like Vulkan/D3D12 2025-01-09 15:28:26 -05:00
Ethan Lee 7acf78ba92 storage: Trim the title storage root from enumerated paths 2025-01-09 13:50:52 -05:00
Ethan Lee 65e0fed5b3 gpu: Document why VertexID/InstanceID builtins are unreliable 2024-12-31 17:56:02 -05:00
Ethan Lee 3cd3c9317e storage: Add error messages when ReadIO/WriteIO lengths mismatch 2024-12-31 12:34:12 -05:00
Ethan Lee cd1bd0ac2e storage: Remove an outdated FIXME.
Woops ended up doing GPU stuff instead, maybe after 3.2!
2024-12-31 10:46:42 -05:00
Ethan Lee 7e8576fd19 gpu: Xbox fixes for swapchain presentation 2024-12-20 14:56:33 -05:00
Ethan Lee f7580374a1 include: Always declare SDL_GDKSuspendComplete.
This is always defined in the symbol table and the function safely does nothing
on non-GDK targets, so treat it like any other SDL_system function.
2024-12-20 13:14:55 -05:00
Ethan Lee a0864799f2 GDK: Fix compile_shaders_xbox.bat build events 2024-12-20 00:57:25 -05:00
Ethan Lee 5d9ccb6296 gpu: Add explicit casts to D3D12 staging descriptor changes 2024-12-20 00:56:48 -05:00
Ethan Lee e992522cb2 Xbox buildfixes for WarpCursor jitter fix, dark mode 2024-12-20 00:55:54 -05:00
Ethan Lee 9628549c7c Xbox buildfixes 2024-12-13 11:34:39 -05:00
Ethan Lee 5c5235fb51 ci: Add Steam Linux Runtime (Sniper) task 2024-10-28 17:07:31 -04:00
Ethan Lee a0de6c4abf Add properties to SDL_IOStreams returned by IOFromMem 2024-10-02 22:09:09 -07:00
Ethan Lee 0852307b58 gpu: Check Vulkan device features for IsDeviceSuitable 2024-09-27 19:58:30 -04:00
Ethan Lee 4a3faf20ac gpu: Replace high-level logs with SetError 2024-09-23 10:57:10 -04:00
Ethan Lee 16ff7503b7 gpu: Update GPU support queries to better match naming conventions 2024-09-13 23:08:44 -04:00
Ethan Lee 0160e9eac6 gpu: Add SDL_QueryGPUSupport 2024-09-13 13:42:07 -04:00
Ethan Lee 96e147b2b9 gpu: Rework driver name queries, add GetGPUShaderFormats 2024-09-13 12:29:40 -04:00
Ethan Lee 371cfaf8fe gpu: Implement support for SDL_GPU_DISABLED 2024-09-13 10:32:12 -04:00
Ethan Lee c36982d45c vulkan: Avoid redundant commands for dynamic states 2024-09-12 16:51:32 -04:00
Ethan Lee 9ea0a837ae vulkan: Use a spinlock instead of a mutex for descriptor pools 2024-09-12 15:23:37 -04:00
Ethan Lee 9ab140fad8 offscreen: Fix bogus surface pointer assignment 2024-08-28 21:31:24 -04:00
Ethan Lee 15bfef57cd d3d12: Generate Xbox C macros, adjust SDL_Render files accordingly 2024-08-06 16:05:10 -04:00
Ethan Lee 4bea89e945 Xbox buildfixes 2024-08-04 15:54:22 -04:00
Ethan Lee efefc4a1f3 d3d12: Move platform-specific includes/defines to SDL_d3d12.h 2024-07-31 23:34:31 -07:00
Ethan Lee 55e9a8ca45 d3d12: Import DirectX-Headers, use local d3d12.h in SDL_render.
This avoids lots of build issues with the various D3D12 headers out there (MinGW, old Windows SDKs, etc) and also opens the door for WSL2 libd3d12.so support.

Note that the build system has not been changed; technically _all_ platforms now have d3d12.h but we should only enable the backend when it's actually expected to work.
2024-07-31 18:41:17 -07:00
Ethan Lee 180b4d7e74 x11: Fix a bogus return in Vulkan_GetPresentationSupport 2024-07-11 21:50:37 -04:00
Ethan Lee 8d24bb8dfc video: Added parameter checks to SDL_Vulkan_GetPresentationSupport 2024-07-11 15:00:59 -04:00
Ethan Lee 5d506a53a6 testvulkan: Add call to SDL_Vulkan_GetPresentationSupport 2024-07-11 15:00:59 -04:00
Ethan Lee 1993ef664e Add SDL_Vulkan_GetPresentationSupport 2024-07-11 15:00:59 -04:00
Ethan Lee 7327fd734c macOS: Do not use the system iconv by default.
macOS 14 changes the iconv implementation which causes things to break, so we may as well match macOS with all the other platforms now.
2024-05-02 17:42:36 -07:00
Ethan Lee 26b71d14e9 storage: Static analysis fix 2024-04-25 19:40:07 -04:00
Ethan Lee 744227e6ab Add SDL_storage 2024-03-16 07:19:50 -07:00
Ethan Lee 6f8a6a31ca gdk: GetBasePath should be a UTF8 version of Win32 GetBasePath 2023-08-25 10:47:16 -04:00
Ethan Lee c0cd8c8142 gdk: Add SDL_GDKGetDefaultUser, SDL_GetPrefPath implementation 2023-08-25 10:40:16 -04:00
Ethan Lee 181d5d285a hidapi: Enable libusb support by default.
Now that we have a whitelisting system for libusb devices, it should be safe to support it whenever it's available.
2023-08-13 14:16:11 -07:00
Ethan Lee f0f15e365d hidapi: Use a whitelist for libusb when other backends are available 2023-08-13 14:16:11 -07:00
Ethan LeeandFrank Praznik 3ac48053bc wayland: Minor whitespace cleanup
Co-authored-by: Frank Praznik <frank.praznik@gmail.com>
2023-04-05 08:58:12 -04:00
Ethan Lee f9f7db4e08 video: Prefer Wayland over X11 (take 2!) 2022-11-29 16:35:36 -05:00
Ethan Lee ecc4b8773c wasapi: Removed WinRT PrivateAudioData members 2022-11-22 17:12:56 -05:00
Ethan Lee 57458588ee wasapi: Merge wasapi_win32.c into wasapi.c 2022-11-22 16:46:12 -05:00
Ethan Lee f3cc99fb93 x11: Minor style fixes for recent OSK changes 2022-11-15 13:56:44 -05:00
Ethan Lee c4b9f62164 x11: Add support for the Steam Deck on-screen keyboard 2022-11-13 11:02:27 -08:00
Ethan LeeandDavid Edmundson 571ff1a3a9 wayland: Prepare cursor implementation for reconnect support
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
2022-10-30 00:19:09 -04:00
Ethan LeeandDavid Edmundson 9c8b1fd8b6 wayland: Cleanup work to aid reconnect support
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
2022-10-29 22:41:42 -04:00
Ethan Lee be2cb00066 wayland: Check for the input handle before checking the keyboard handle 2022-10-11 11:16:52 -04:00
Ethan Lee 0d6c4ff622 testaudioinfo: Initialize deviceName unconditionally 2022-09-29 11:36:07 -04:00
Ethan Lee 1ea1a90edb testaudioinfo: Also test SDL_GetAudioDeviceSpec 2022-09-29 10:41:40 -04:00
Ethan Lee a28f426acb render: Only update size/scale/viewport when moving to a new display, rather than all window movement.
We really only care about DPI changes here, so this both reduces work and also avoids weird cases where viewport state can be corrupted by trivial window events. This doesn't _completely_ get rid of the issue but this is somewhat intentional, since apps will definitely want to do a full reset when changing displays anyhow (otherwise DPI/adapter changes will screw things up, and that's out of our control as long as both window size and drawable size are exposed at the same time.

Note that OpenGL still captures window events because of weird platform-specific issues like macOS and viewport stretching!

Fixes #5949
2022-08-12 16:13:24 -04:00
Ethan Lee a33b5449ff WhatsNew.txt: Added audio channel support changes 2022-07-20 19:11:42 -04:00
Ethan Lee f3008e4aab audio: 3- and 5-channel formats are now supported 2022-07-20 19:08:31 -04:00
Ethan Lee 90b86b132a audio: Handle non-power-of-two spec.samples when unsupported
Fixes #3685
2022-07-17 10:36:15 -04:00
Ethan Lee cdf9010a19 Added new audio features to WhatsNew.txt 2022-07-16 12:39:30 -04:00
Ethan Lee a09d62e4d8 directsound: Remove redundant SubFormat copy 2022-07-15 23:45:56 -04:00
Ethan Lee c5e408ae98 directsound: For channel counts > 2, generate a dwChannelMask for CreateSoundBuffer 2022-07-15 13:59:46 -04:00
Ethan Lee fff34f6304 windows: SDL_IMMDevice needed more deinit code from the Win32 path.
Fixes #5919
2022-07-15 09:49:29 -04:00
Ethan Lee ecfbdce64b pipewire: Require version 0.3.24 or newer at runtime 2022-07-11 13:34:35 -04:00
Ethan LeeandFrank Praznik 2f0816adb7 Add SDL_GetDefaultAudioInfo.
This API is supported on pipewire, pulseaudio, wasapi, and directsound.

Co-authored-by: Frank Praznik <frank.praznik@gmail.com>
2022-07-11 13:34:35 -04:00
Ethan Lee 15d0618083 SDL_IMMDevice: Fix a WASAPI-specific leak, clean up Add() 2022-07-11 12:54:34 -04:00
Ethan Lee ae105ae1c7 windows: Move IMMDevice work to common file, implement DirectSound enumeration support 2022-07-11 12:54:34 -04:00
Ethan Lee 964e979d06 hidapi: Allow disabling libusb support at runtime 2022-05-30 13:45:24 -07:00
Ethan Lee e4bb3c8649 wayland: Fix build for configs without libdecor 2022-05-11 18:13:44 -04:00
Ethan Lee 6222bd3143 wayland: Don't create a new libdecor context if one already exists 2022-05-11 16:26:43 -04:00
Ethan Lee 6f88cbe4c9 wayland: Support xdg_decoration requesting client-side decorations.
Don't be fooled by the diff size - this ended up being a big refactor of the
shell surface management, masked only by some helper macros I wrote for the
popup support.

This change makes it so when xdg_decoration is supported, but CSD is requested,
the system bails on xdg support entirely and resets all the windows to use
libdecor instead. This transition isn't pretty, but once it's done it will be
smooth if decorations are an OS toggle since libdecor will take things from
there.

In hindsight, we really should have designed libdecor to be passed a toplevel,
having it manage that for us keeps causing major refactors for _every_ change.
2022-05-11 13:13:59 -07:00
Ethan Lee c37090f9a4 wayland: Add support for TOOLTIP/POPUP_MENU 2022-04-18 12:31:02 -04:00
Ethan Lee 46616af722 WhatsNew.txt: Added SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR 2022-04-12 11:53:40 -04:00
Ethan Lee b1831715a2 UWP: Require Windows 10 16299 or newer.
This is required to build with WGI support. Thanks for @FrozenChameleon for the fix!

Fixes #5504
2022-04-11 12:09:40 -04:00
Ethan Lee ba0ba9ef16 direct3d11: Set the swapchain target immediately after creating it.
Fixes #4782
2022-04-07 23:47:20 -07:00
Ethan Lee cb81630816 render: Update the size/scale/viewport on moves, in addition to resizes.
For OpenGL this means resetting the viewport state shadowing flag too.

Fixes #1504
2022-04-07 23:38:33 -07:00
Ethan Lee d1f7f9e35d wayland: Pin the fake window position at (0, 0).
I kind of thought it'd be nice to have it in the center, but this is an issue
for applications that still assume global mouse and window positions are
accessible. For example, this fixes cursor offset issues in UE5.
2022-04-06 11:18:46 -04:00
Ethan Lee 279aeb59be wayland: Add a bug link for the detach FIXME 2022-04-06 01:32:57 -04:00
Ethan Lee 3ada694e62 wayland: Try to detach at the beginning of ShowWindow, just in case.
It's possible that an external component (probably a GL/VK context) committed, so we need to cover our bases and detach in both HideWindow and ShowWindow.

Fixes a crash in UE5 editor's pop-ups.
2022-04-06 01:18:03 -04:00
Ethan Lee dcfb7fff00 wayland: Evaluate WINDOWPOS_CENTERED_DISPLAY for move events
Partially fixes the mouse cursor in UE5 editor. Imperfect because UE5 uses window position and global mouse state to get position, but of course we don't have global mouse and this is just to get the right display index so this still fails overall. We really need to make global mouse support a feature query...
2022-04-06 00:55:32 -04:00
Ethan Lee d875416ac4 wayland: Minor fix for old compilers 2022-03-28 15:32:30 -04:00
Ethan Lee 713a675401 wayland: Relax the check for mismatching output scales 2022-03-26 22:26:15 -04:00
Ethan Lee 5655be1558 wayland: Avoid overwriting xdg_output position with wl_output position 2022-03-26 19:57:39 -04:00
Ethan Lee 40417b188a wayland: Work around a GNOME xdg_output scaling issue 2022-03-26 19:55:04 -04:00
Ethan Lee 7a1c45bd1c wayland: Optimize keyboard_handle_modifiers.
1. Mod index values are (mostly) constant, so can be done with xkb_state_new
2. Mods can change without the group changing, avoid remap events if possible

Lastly, as a bonus, I added braces to the locale check, because I was nearby.
2022-03-25 12:54:05 -04:00
Ethan Lee 2891f0821b wayland: Use xkb_keymap_mod to set mod state 2022-03-25 02:49:49 -04:00