SDL: Reset the dynamic API for SDL 3.0

From e4e7a8baff634739134792dad49553bc6a078a3c Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 28 Dec 2022 13:38:41 -0800
Subject: [PATCH] Reset the dynamic API for SDL 3.0

---
 src/dynapi/SDL_dynapi.sym         | 1098 ++++++++++++++---------------
 src/dynapi/SDL_dynapi_overrides.h |  726 +++++++++----------
 src/dynapi/SDL_dynapi_procs.h     |  780 ++++++++++----------
 3 files changed, 1285 insertions(+), 1319 deletions(-)

diff --git a/src/dynapi/SDL_dynapi.sym b/src/dynapi/SDL_dynapi.sym
index c2772123a6a2..3c062579f43c 100644
--- a/src/dynapi/SDL_dynapi.sym
+++ b/src/dynapi/SDL_dynapi.sym
@@ -1,37 +1,68 @@
 SDL3_0.0.0 {
   global:
-    JNI_OnLoad;
-    SDL_OpenURL;
-    SDL_LoadObject;
-    SDL_LoadFunction;
-    SDL_UnloadObject;
-    SDL_RWFromFile;
-    SDL_RWFromMem;
-    SDL_RWFromConstMem;
-    SDL_AllocRW;
-    SDL_FreeRW;
-    SDL_RWsize;
-    SDL_RWseek;
-    SDL_RWtell;
-    SDL_RWread;
-    SDL_RWwrite;
-    SDL_RWclose;
-    SDL_LoadFile_RW;
-    SDL_LoadFile;
-    SDL_ReadU8;
-    SDL_ReadLE16;
-    SDL_ReadBE16;
-    SDL_ReadLE32;
-    SDL_ReadBE32;
-    SDL_ReadLE64;
-    SDL_ReadBE64;
-    SDL_WriteU8;
-    SDL_WriteLE16;
-    SDL_WriteBE16;
-    SDL_WriteLE32;
-    SDL_WriteBE32;
-    SDL_WriteLE64;
-    SDL_WriteBE64;
+    SDL_Log;
+    SDL_LogCritical;
+    SDL_LogDebug;
+    SDL_LogError;
+    SDL_LogInfo;
+    SDL_LogMessage;
+    SDL_LogVerbose;
+    SDL_LogWarn;
+    SDL_SetError;
+    SDL_asprintf;
+    SDL_snprintf;
+    SDL_sscanf;
+    SDL_CreateThread;
+    SDL_CreateThreadWithStackSize;
+    SDL_RegisterApp;
+    SDL_RenderGetD3D12Device;
+    SDL_SetWindowsMessageHook;
+    SDL_UnregisterApp;
+    SDL_DXGIGetOutputInfo;
+    SDL_Direct3D9GetAdapterIndex;
+    SDL_RenderGetD3D11Device;
+    SDL_RenderGetD3D9Device;
+    SDL_GDKGetTaskQueue;
+    SDL_GDKSuspendComplete;
+    SDL_WinRTGetDeviceFamily;
+    SDL_WinRTGetFSPathUNICODE;
+    SDL_WinRTGetFSPathUTF8;
+    SDL_LinuxSetThreadPriority;
+    SDL_LinuxSetThreadPriorityAndPolicy;
+    SDL_OnApplicationDidChangeStatusBarOrientation;
+    SDL_iPhoneSetAnimationCallback;
+    SDL_iPhoneSetEventPump;
+    SDL_AndroidBackButton;
+    SDL_AndroidGetActivity;
+    SDL_AndroidGetExternalStoragePath;
+    SDL_AndroidGetExternalStorageState;
+    SDL_AndroidGetInternalStoragePath;
+    SDL_AndroidGetJNIEnv;
+    SDL_AndroidRequestPermission;
+    SDL_AndroidSendMessage;
+    SDL_AndroidShowToast;
+    SDL_GetAndroidSDKVersion;
+    SDL_IsAndroidTV;
+    SDL_IsChromebook;
+    SDL_IsDeXMode;
+    SDL_ReportAssertion;
+    SDL_SetAssertionHandler;
+    SDL_GetDefaultAssertionHandler;
+    SDL_GetAssertionHandler;
+    SDL_GetAssertionReport;
+    SDL_ResetAssertionReport;
+    SDL_AtomicTryLock;
+    SDL_AtomicLock;
+    SDL_AtomicUnlock;
+    SDL_MemoryBarrierReleaseFunction;
+    SDL_MemoryBarrierAcquireFunction;
+    SDL_AtomicCAS;
+    SDL_AtomicSet;
+    SDL_AtomicGet;
+    SDL_AtomicAdd;
+    SDL_AtomicCASPtr;
+    SDL_AtomicSetPtr;
+    SDL_AtomicGetPtr;
     SDL_GetNumAudioDrivers;
     SDL_GetAudioDriver;
     SDL_GetCurrentAudioDriver;
@@ -67,89 +98,39 @@ SDL3_0.0.0 {
     SDL_UnlockAudioDevice;
     SDL_CloseAudio;
     SDL_CloseAudioDevice;
-    SDL_SetWindowsMessageHook;
-    SDL_Direct3D9GetAdapterIndex;
-    SDL_RenderGetD3D9Device;
-    SDL_RenderGetD3D11Device;
-    SDL_RenderGetD3D12Device;
-    SDL_DXGIGetOutputInfo;
-    SDL_LinuxSetThreadPriority;
-    SDL_LinuxSetThreadPriorityAndPolicy;
-    SDL_iPhoneSetAnimationCallback;
-    SDL_iPhoneSetEventPump;
-    SDL_AndroidGetJNIEnv;
-    SDL_AndroidGetActivity;
-    SDL_GetAndroidSDKVersion;
-    SDL_IsAndroidTV;
-    SDL_IsChromebook;
-    SDL_IsDeXMode;
-    SDL_AndroidBackButton;
-    SDL_AndroidGetInternalStoragePath;
-    SDL_AndroidGetExternalStorageState;
-    SDL_AndroidGetExternalStoragePath;
-    SDL_AndroidRequestPermission;
-    SDL_AndroidShowToast;
-    SDL_AndroidSendMessage;
-    SDL_WinRTGetFSPathUNICODE;
-    SDL_WinRTGetFSPathUTF8;
-    SDL_WinRTGetDeviceFamily;
-    SDL_IsTablet;
-    SDL_OnApplicationWillTerminate;
-    SDL_OnApplicationDidReceiveMemoryWarning;
-    SDL_OnApplicationWillResignActive;
-    SDL_OnApplicationDidEnterBackground;
-    SDL_OnApplicationWillEnterForeground;
-    SDL_OnApplicationDidBecomeActive;
-    SDL_OnApplicationDidChangeStatusBarOrientation;
-    SDL_GDKGetTaskQueue;
-    SDL_AtomicTryLock;
-    SDL_AtomicLock;
-    SDL_AtomicUnlock;
-    SDL_MemoryBarrierReleaseFunction;
-    SDL_MemoryBarrierAcquireFunction;
-    SDL_AtomicCAS;
-    SDL_AtomicSet;
-    SDL_AtomicGet;
-    SDL_AtomicAdd;
-    SDL_AtomicCASPtr;
-    SDL_AtomicSetPtr;
-    SDL_AtomicGetPtr;
-    SDL_GetKeyboardFocus;
-    SDL_GetKeyboardState;
-    SDL_ResetKeyboard;
-    SDL_GetModState;
-    SDL_SetModState;
-    SDL_GetKeyFromScancode;
-    SDL_GetScancodeFromKey;
-    SDL_GetScancodeName;
-    SDL_GetScancodeFromName;
-    SDL_GetKeyName;
-    SDL_GetKeyFromName;
-    SDL_StartTextInput;
-    SDL_IsTextInputActive;
-    SDL_StopTextInput;
-    SDL_ClearComposition;
-    SDL_IsTextInputShown;
-    SDL_SetTextInputRect;
-    SDL_HasScreenKeyboardSupport;
-    SDL_IsScreenKeyboardShown;
-    SDL_LogSetAllPriority;
-    SDL_LogSetPriority;
-    SDL_LogGetPriority;
-    SDL_LogResetPriorities;
-    SDL_Log;
-    SDL_LogVerbose;
-    SDL_LogDebug;
-    SDL_LogInfo;
-    SDL_LogWarn;
-    SDL_LogError;
-    SDL_LogCritical;
-    SDL_LogMessage;
-    SDL_LogMessageV;
-    SDL_LogGetOutputFunction;
-    SDL_LogSetOutputFunction;
-    SDL_GUIDToString;
-    SDL_GUIDFromString;
+    SDL_ComposeCustomBlendMode;
+    SDL_SetClipboardText;
+    SDL_GetClipboardText;
+    SDL_HasClipboardText;
+    SDL_SetPrimarySelectionText;
+    SDL_GetPrimarySelectionText;
+    SDL_HasPrimarySelectionText;
+    SDL_GetCPUCount;
+    SDL_GetCPUCacheLineSize;
+    SDL_HasRDTSC;
+    SDL_HasAltiVec;
+    SDL_HasMMX;
+    SDL_HasSSE;
+    SDL_HasSSE2;
+    SDL_HasSSE3;
+    SDL_HasSSE41;
+    SDL_HasSSE42;
+    SDL_HasAVX;
+    SDL_HasAVX2;
+    SDL_HasAVX512F;
+    SDL_HasARMSIMD;
+    SDL_HasNEON;
+    SDL_HasLSX;
+    SDL_HasLASX;
+    SDL_GetSystemRAM;
+    SDL_SIMDGetAlignment;
+    SDL_SIMDAlloc;
+    SDL_SIMDRealloc;
+    SDL_SIMDFree;
+    SDL_GetError;
+    SDL_GetErrorMsg;
+    SDL_ClearError;
+    SDL_Error;
     SDL_PumpEvents;
     SDL_PeepEvents;
     SDL_HasEvent;
@@ -166,34 +147,419 @@ SDL3_0.0.0 {
     SDL_DelEventWatch;
     SDL_FilterEvents;
     SDL_EventState;
+    SDL_GetEventState;
     SDL_RegisterEvents;
-    SDL_GetTicks;
-    SDL_GetTicks64;
-    SDL_GetPerformanceCounter;
-    SDL_GetPerformanceFrequency;
-    SDL_Delay;
-    SDL_AddTimer;
-    SDL_RemoveTimer;
-    SDL_Vulkan_LoadLibrary;
-    SDL_Vulkan_GetVkGetInstanceProcAddr;
-    SDL_Vulkan_UnloadLibrary;
-    SDL_Vulkan_GetInstanceExtensions;
-    SDL_Vulkan_CreateSurface;
-    SDL_Vulkan_GetDrawableSize;
-    SDL_GetPreferredLocales;
-    SDL_GetPixelFormatName;
-    SDL_GetMasksForPixelFormatEnum;
-    SDL_GetPixelFormatEnumForMasks;
-    SDL_CreatePixelFormat;
-    SDL_DestroyPixelFormat;
-    SDL_CreatePalette;
-    SDL_SetPixelFormatPalette;
-    SDL_SetPaletteColors;
-    SDL_DestroyPalette;
-    SDL_MapRGB;
-    SDL_MapRGBA;
-    SDL_GetRGB;
-    SDL_GetRGBA;
+    SDL_GetBasePath;
+    SDL_GetPrefPath;
+    SDL_AddGamepadMapping;
+    SDL_AddGamepadMappingsFromRW;
+    SDL_GetNumGamepadMappings;
+    SDL_GetGamepadMappingForIndex;
+    SDL_GetGamepadMappingForGUID;
+    SDL_GetGamepadMapping;
+    SDL_HasGamepads;
+    SDL_GetGamepads;
+    SDL_IsGamepad;
+    SDL_GetGamepadInstanceName;
+    SDL_GetGamepadInstancePath;
+    SDL_GetGamepadInstancePlayerIndex;
+    SDL_GetGamepadInstanceGUID;
+    SDL_GetGamepadInstanceVendor;
+    SDL_GetGamepadInstanceProduct;
+    SDL_GetGamepadInstanceProductVersion;
+    SDL_GetGamepadInstanceType;
+    SDL_GetGamepadInstanceMapping;
+    SDL_OpenGamepad;
+    SDL_GetGamepadFromInstanceID;
+    SDL_GetGamepadFromPlayerIndex;
+    SDL_GetGamepadName;
+    SDL_GetGamepadPath;
+    SDL_GetGamepadType;
+    SDL_GetGamepadPlayerIndex;
+    SDL_SetGamepadPlayerIndex;
+    SDL_GetGamepadVendor;
+    SDL_GetGamepadProduct;
+    SDL_GetGamepadProductVersion;
+    SDL_GetGamepadFirmwareVersion;
+    SDL_GetGamepadSerial;
+    SDL_IsGamepadConnected;
+    SDL_GetGamepadJoystick;
+    SDL_GetGamepadEventState;
+    SDL_UpdateGamepads;
+    SDL_GetGamepadAxisFromString;
+    SDL_GetGamepadStringForAxis;
+    SDL_GetGamepadBindForAxis;
+    SDL_GamepadHasAxis;
+    SDL_GetGamepadAxis;
+    SDL_GetGamepadButtonFromString;
+    SDL_GetGamepadStringForButton;
+    SDL_GetGamepadBindForButton;
+    SDL_GamepadHasButton;
+    SDL_GetGamepadButton;
+    SDL_GetGamepadNumTouchpads;
+    SDL_GetGamepadNumTouchpadFingers;
+    SDL_GetGamepadTouchpadFinger;
+    SDL_GamepadHasSensor;
+    SDL_SetGamepadSensorEnabled;
+    SDL_IsGamepadSensorEnabled;
+    SDL_GetGamepadSensorDataRate;
+    SDL_GetGamepadSensorData;
+    SDL_RumbleGamepad;
+    SDL_RumbleGamepadTriggers;
+    SDL_GamepadHasLED;
+    SDL_GamepadHasRumble;
+    SDL_GamepadHasRumbleTriggers;
+    SDL_SetGamepadLED;
+    SDL_SendGamepadEffect;
+    SDL_CloseGamepad;
+    SDL_GetGamepadAppleSFSymbolsNameForButton;
+    SDL_GetGamepadAppleSFSymbolsNameForAxis;
+    SDL_GUIDToString;
+    SDL_GUIDFromString;
+    SDL_NumHaptics;
+    SDL_HapticName;
+    SDL_HapticOpen;
+    SDL_HapticOpened;
+    SDL_HapticIndex;
+    SDL_MouseIsHaptic;
+    SDL_HapticOpenFromMouse;
+    SDL_JoystickIsHaptic;
+    SDL_HapticOpenFromJoystick;
+    SDL_HapticClose;
+    SDL_HapticNumEffects;
+    SDL_HapticNumEffectsPlaying;
+    SDL_HapticQuery;
+    SDL_HapticNumAxes;
+    SDL_HapticEffectSupported;
+    SDL_HapticNewEffect;
+    SDL_HapticUpdateEffect;
+    SDL_HapticRunEffect;
+    SDL_HapticStopEffect;
+    SDL_HapticDestroyEffect;
+    SDL_HapticGetEffectStatus;
+    SDL_HapticSetGain;
+    SDL_HapticSetAutocenter;
+    SDL_HapticPause;
+    SDL_HapticUnpause;
+    SDL_HapticStopAll;
+    SDL_HapticRumbleSupported;
+    SDL_HapticRumbleInit;
+    SDL_HapticRumblePlay;
+    SDL_HapticRumbleStop;
+    SDL_hid_init;
+    SDL_hid_exit;
+    SDL_hid_device_change_count;
+    SDL_hid_enumerate;
+    SDL_hid_free_enumeration;
+    SDL_hid_open;
+    SDL_hid_open_path;
+    SDL_hid_write;
+    SDL_hid_read_timeout;
+    SDL_hid_read;
+    SDL_hid_set_nonblocking;
+    SDL_hid_send_feature_report;
+    SDL_hid_get_feature_report;
+    SDL_hid_close;
+    SDL_hid_get_manufacturer_string;
+    SDL_hid_get_product_string;
+    SDL_hid_get_serial_number_string;
+    SDL_hid_get_indexed_string;
+    SDL_hid_ble_scan;
+    SDL_SetHintWithPriority;
+    SDL_SetHint;
+    SDL_ResetHint;
+    SDL_ResetHints;
+    SDL_GetHint;
+    SDL_GetHintBoolean;
+    SDL_AddHintCallback;
+    SDL_DelHintCallback;
+    SDL_ClearHints;
+    SDL_Init;
+    SDL_InitSubSystem;
+    SDL_QuitSubSystem;
+    SDL_WasInit;
+    SDL_Quit;
+    SDL_LockJoysticks;
+    SDL_UnlockJoysticks;
+    SDL_HasJoysticks;
+    SDL_GetJoysticks;
+    SDL_GetJoystickInstanceName;
+    SDL_GetJoystickInstancePath;
+    SDL_GetJoystickInstancePlayerIndex;
+    SDL_GetJoystickInstanceGUID;
+    SDL_GetJoystickInstanceVendor;
+    SDL_GetJoystickInstanceProduct;
+    SDL_GetJoystickInstanceProductVersion;
+    SDL_GetJoystickInstanceType;
+    SDL_OpenJoystick;
+    SDL_GetJoystickFromInstanceID;
+    SDL_GetJoystickFromPlayerIndex;
+    SDL_AttachVirtualJoystick;
+    SDL_AttachVirtualJoystickEx;
+    SDL_DetachVirtualJoystick;
+    SDL_IsJoystickVirtual;
+    SDL_SetJoystickVirtualAxis;
+    SDL_SetJoystickVirtualButton;
+    SDL_SetJoystickVirtualHat;
+    SDL_GetJoystickName;
+    SDL_GetJoystickPath;
+    SDL_GetJoystickPlayerIndex;
+    SDL_SetJoystickPlayerIndex;
+    SDL_GetJoystickGUID;
+    SDL_GetJoystickVendor;
+    SDL_GetJoystickProduct;
+    SDL_GetJoystickProductVersion;
+    SDL_GetJoystickFirmwareVersion;
+    SDL_GetJoystickSerial;
+    SDL_GetJoystickType;
+    SDL_GetJoystickGUIDString;
+    SDL_GetJoystickGUIDFromString;
+    SDL_GetJoystickGUIDInfo;
+    SDL_IsJoystickConnected;
+    SDL_GetJoystickInstanceID;
+    SDL_GetNumJoystickAxes;
+    SDL_GetNumJoystickHats;
+    SDL_GetNumJoystickButtons;
+    SDL_UpdateJoysticks;
+    SDL_GetJoystickEventState;
+    SDL_GetJoystickAxis;
+    SDL_GetJoystickAxisInitialState;
+    SDL_GetJoystickHat;
+    SDL_GetJoystickButton;
+    SDL_RumbleJoystick;
+    SDL_RumbleJoystickTriggers;
+    SDL_JoystickHasLED;
+    SDL_JoystickHasRumble;
+    SDL_JoystickHasRumbleTriggers;
+    SDL_SetJoystickLED;
+    SDL_SendJoystickEffect;
+    SDL_CloseJoystick;
+    SDL_GetJoystickPowerLevel;
+    SDL_GetKeyboardFocus;
+    SDL_GetKeyboardState;
+    SDL_ResetKeyboard;
+    SDL_GetModState;
+    SDL_SetModState;
+    SDL_GetKeyFromScancode;
+    SDL_GetScancodeFromKey;
+    SDL_GetScancodeName;
+    SDL_GetScancodeFromName;
+    SDL_GetKeyName;
+    SDL_GetKeyFromName;
+    SDL_StartTextInput;
+    SDL_IsTextInputActive;
+    SDL_StopTextInput;
+    SDL_ClearComposition;
+    SDL_IsTextInputShown;
+    SDL_SetTextInputRect;
+    SDL_HasScreenKeyboardSupport;
+    SDL_IsScreenKeyboardShown;
+    SDL_LoadObject;
+    SDL_LoadFunction;
+    SDL_UnloadObject;
+    SDL_GetPreferredLocales;
+    SDL_LogSetAllPriority;
+    SDL_LogSetPriority;
+    SDL_LogGetPriority;
+    SDL_LogResetPriorities;
+    SDL_LogMessageV;
+    SDL_LogGetOutputFunction;
+    SDL_LogSetOutputFunction;
+    SDL_SetMainReady;
+    SDL_RunApp;
+    SDL_ShowMessageBox;
+    SDL_ShowSimpleMessageBox;
+    SDL_Metal_CreateView;
+    SDL_Metal_DestroyView;
+    SDL_Metal_GetLayer;
+    SDL_Metal_GetDrawableSize;
+    SDL_OpenURL;
+    SDL_GetMouseFocus;
+    SDL_GetMouseState;
+    SDL_GetGlobalMouseState;
+    SDL_GetRelativeMouseState;
+    SDL_WarpMouseInWindow;
+    SDL_WarpMouseGlobal;
+    SDL_SetRelativeMouseMode;
+    SDL_CaptureMouse;
+    SDL_GetRelativeMouseMode;
+    SDL_CreateCursor;
+    SDL_CreateColorCursor;
+    SDL_CreateSystemCursor;
+    SDL_SetCursor;
+    SDL_GetCursor;
+    SDL_GetDefaultCursor;
+    SDL_FreeCursor;
+    SDL_ShowCursor;
+    SDL_CreateMutex;
+    SDL_LockMutex;
+    SDL_TryLockMutex;
+    SDL_UnlockMutex;
+    SDL_DestroyMutex;
+    SDL_CreateSemaphore;
+    SDL_DestroySemaphore;
+    SDL_SemWait;
+    SDL_SemTryWait;
+    SDL_SemWaitTimeout;
+    SDL_SemPost;
+    SDL_SemValue;
+    SDL_CreateCond;
+    SDL_DestroyCond;
+    SDL_CondSignal;
+    SDL_CondBroadcast;
+    SDL_CondWait;
+    SDL_CondWaitTimeout;
+    SDL_GetPixelFormatName;
+    SDL_GetMasksForPixelFormatEnum;
+    SDL_GetPixelFormatEnumForMasks;
+    SDL_CreatePixelFormat;
+    SDL_DestroyPixelFormat;
+    SDL_CreatePalette;
+    SDL_SetPixelFormatPalette;
+    SDL_SetPaletteColors;
+    SDL_DestroyPalette;
+    SDL_MapRGB;
+    SDL_MapRGBA;
+    SDL_GetRGB;
+    SDL_GetRGBA;
+    SDL_GetPlatform;
+    SDL_GetPowerInfo;
+    SDL_HasRectIntersection;
+    SDL_GetRectIntersection;
+    SDL_GetRectUnion;
+    SDL_GetRectEnclosingPoints;
+    SDL_GetRectAndLineIntersection;
+    SDL_HasRectIntersectionF;
+    SDL_GetRectIntersectionF;
+    SDL_GetRectUnionF;
+    SDL_GetRectEnclosingPointsF;
+    SDL_GetRectAndLineIntersectionF;
+    SDL_GetNumRenderDrivers;
+    SDL_GetRenderDriver;
+    SDL_CreateWindowAndRenderer;
+    SDL_CreateRenderer;
+    SDL_CreateSoftwareRenderer;
+    SDL_GetRenderer;
+    SDL_GetRenderWindow;
+    SDL_GetRendererInfo;
+    SDL_GetRendererOutputSize;
+    SDL_CreateTexture;
+    SDL_CreateTextureFromSurface;
+    SDL_QueryTexture;
+    SDL_SetTextureColorMod;
+    SDL_GetTextureColorMod;
+    SDL_SetTextureAlphaMod;
+    SDL_GetTextureAlphaMod;
+    SDL_SetTextureBlendMode;
+    SDL_GetTextureBlendMode;
+    SDL_SetTextureScaleMode;
+    SDL_GetTextureScaleMode;
+    SDL_SetTextureUserData;
+    SDL_GetTextureUserData;
+    SDL_UpdateTexture;
+    SDL_UpdateYUVTexture;
+    SDL_UpdateNVTexture;
+    SDL_LockTexture;
+    SDL_LockTextureToSurface;
+    SDL_UnlockTexture;
+    SDL_IsRenderTargetSupported;
+    SDL_SetRenderTarget;
+    SDL_GetRenderTarget;
+    SDL_SetRenderLogicalSize;
+    SDL_GetRenderLogicalSize;
+    SDL_SetRenderIntegerScale;
+    SDL_GetRenderIntegerScale;
+    SDL_SetRenderViewport;
+    SDL_GetRenderViewport;
+    SDL_SetRenderClipRect;
+    SDL_GetRenderClipRect;
+    SDL_IsRenderClipEnabled;
+    SDL_SetRenderScale;
+    SDL_GetRenderScale;
+    SDL_RenderWindowToLogical;
+    SDL_RenderLogicalToWindow;
+    SDL_SetRenderDrawColor;
+    SDL_GetRenderDrawColor;
+    SDL_SetRenderDrawBlendMode;
+    SDL_GetRenderDrawBlendMode;
+    SDL_RenderClear;
+    SDL_RenderPoint;
+    SDL_RenderPoints;
+    SDL_RenderLine;
+    SDL_RenderLines;
+    SDL_RenderRect;
+    SDL_RenderRects;
+    SDL_RenderFillRect;
+    SDL_RenderFillRects;
+    SDL_RenderTexture;
+    SDL_RenderTextureRotated;
+    SDL_RenderPointF;
+    SDL_RenderPointsF;
+    SDL_RenderLineF;
+    SDL_RenderLinesF;
+    SDL_RenderRectF;
+    SDL_RenderRectsF;
+    SDL_RenderFillRectF;
+    SDL_RenderFillRectsF;
+    SDL_RenderTextureF;
+    SDL_RenderTextureRotatedF;
+    SDL_RenderGeometry;
+    SDL_RenderGeometryRaw;
+    SDL_RenderReadPixels;
+    SDL_RenderPresent;
+    SDL_DestroyTexture;
+    SDL_DestroyRenderer;
+    SDL_RenderFlush;
+    SDL_GL_BindTexture;
+    SDL_GL_UnbindTexture;
+    SDL_GetRenderMetalLayer;
+    SDL_GetRenderMetalCommandEncoder;
+    SDL_SetRenderVSync;
+    SDL_RWFromFile;
+    SDL_RWFromMem;
+    SDL_RWFromConstMem;
+    SDL_AllocRW;
+    SDL_FreeRW;
+    SDL_RWsize;
+    SDL_RWseek;
+    SDL_RWtell;
+    SDL_RWread;
+    SDL_RWwrite;
+    SDL_RWclose;
+    SDL_LoadFile_RW;
+    SDL_LoadFile;
+    SDL_ReadU8;
+    SDL_ReadLE16;
+    SDL_ReadBE16;
+    SDL_ReadLE32;
+    SDL_ReadBE32;
+    SDL_ReadLE64;
+    SDL_ReadBE64;
+    SDL_WriteU8;
+    SDL_WriteLE16;
+    SDL_WriteBE16;
+    SDL_WriteLE32;
+    SDL_WriteBE32;
+    SDL_WriteLE64;
+    SDL_WriteBE64;
+    SDL_HasSensors;
+    SDL_GetSensors;
+    SDL_GetSensorInstanceName;
+    SDL_GetSensorInstanceType;
+    SDL_GetSensorInstanceNonPortableType;
+    SDL_OpenSensor;
+    SDL_GetSensorFromInstanceID;
+    SDL_GetSensorName;
+    SDL_GetSensorType;
+    SDL_GetSensorNonPortableType;
+    SDL_GetSensorInstanceID;
+    SDL_GetSensorData;
+    SDL_CloseSensor;
+    SDL_UpdateSensors;
+    SDL_CreateShapedWindow;
+    SDL_IsShapedWindow;
+    SDL_SetWindowShape;
+    SDL_GetShapedWindowMode;
     SDL_malloc;
     SDL_calloc;
     SDL_realloc;
@@ -269,11 +635,8 @@ SDL3_0.0.0 {
     SDL_strncmp;
     SDL_strcasecmp;
     SDL_strncasecmp;
-    SDL_sscanf;
     SDL_vsscanf;
-    SDL_snprintf;
     SDL_vsnprintf;
-    SDL_asprintf;
     SDL_vasprintf;
     SDL_acos;
     SDL_acosf;
@@ -321,43 +684,6 @@ SDL3_0.0.0 {
     SDL_iconv_close;
     SDL_iconv;
     SDL_iconv_string;
-    SDL_GetMouseFocus;
-    SDL_GetMouseState;
-    SDL_GetGlobalMouseState;
-    SDL_GetRelativeMouseState;
-    SDL_WarpMouseInWindow;
-    SDL_WarpMouseGlobal;
-    SDL_SetRelativeMouseMode;
-    SDL_CaptureMouse;
-    SDL_GetRelativeMouseMode;
-    SDL_CreateCursor;
-    SDL_CreateColorCursor;
-    SDL_CreateSystemCursor;
-    SDL_SetCursor;
-    SDL_GetCursor;
-    SDL_GetDefaultCursor;
-    SDL_FreeCursor;
-    SDL_ShowCursor;
-    SDL_SetClipboardText;
-    SDL_GetClipboardText;
-    SDL_HasClipboardText;
-    SDL_SetPrimarySelectionText;
-    SDL_GetPrimarySelectionText;
-    SDL_HasPrimarySelectionText;
-    SDL_CreateThread;
-    SDL_CreateThreadWithStackSize;
-    SDL_CreateThread;
-    SDL_CreateThreadWithStackSize;
-    SDL_GetThreadName;
-    SDL_ThreadID;
-    SDL_GetThreadID;
-    SDL_SetThreadPriority;
-    SDL_WaitThread;
-    SDL_DetachThread;
-    SDL_TLSCreate;
-    SDL_TLSGet;
-    SDL_TLSSet;
-    SDL_TLSCleanup;
     SDL_CreateSurface;
     SDL_CreateSurfaceFrom;
     SDL_DestroySurface;
@@ -395,133 +721,40 @@ SDL3_0.0.0 {
     SDL_SetYUVConversionMode;
     SDL_GetYUVConversionMode;
     SDL_GetYUVConversionModeForResolution;
-    SDL_HasRectIntersection;
-    SDL_GetRectIntersection;
-    SDL_GetRectUnion;
-    SDL_GetRectEnclosingPoints;
-    SDL_GetRectAndLineIntersection;
-    SDL_HasRectIntersectionF;
-    SDL_GetRectIntersectionF;
-    SDL_GetRectUnionF;
-    SDL_GetRectEnclosingPointsF;
-    SDL_GetRectAndLineIntersectionF;
-    SDL_CreateShapedWindow;
-    SDL_IsShapedWindow;
-    SDL_SetWindowShape;
-    SDL_GetShapedWindowMode;
-    SDL_hid_init;
-    SDL_hid_exit;
-    SDL_hid_device_change_count;
-    SDL_hid_enumerate;
-    SDL_hid_free_enumeration;
-    SDL_hid_open;
-    SDL_hid_open_path;
-    SDL_hid_write;
-    SDL_hid_read_timeout;
-    SDL_hid_read;
-    SDL_hid_set_nonblocking;
-    SDL_hid_send_feature_report;
-    SDL_hid_get_feature_report;
-    SDL_hid_close;
-    SDL_hid_get_manufacturer_string;
-    SDL_hid_get_product_string;
-    SDL_hid_get_serial_number_string;
-    SDL_hid_get_indexed_string;
-    SDL_hid_ble_scan;
+    SDL_IsTablet;
+    SDL_OnApplicationWillTerminate;
+    SDL_OnApplicationDidReceiveMemoryWarning;
+    SDL_OnApplicationWillResignActive;
+    SDL_OnApplicationDidEnterBackground;
+    SDL_OnApplicationWillEnterForeground;
+    SDL_OnApplicationDidBecomeActive;
     SDL_GetWindowWMInfo;
-    SDL_GetNumRenderDrivers;
-    SDL_CreateWindowAndRenderer;
-    SDL_CreateRenderer;
-    SDL_CreateSoftwareRenderer;
-    SDL_GetRenderer;
-    SDL_GetRenderWindow;
-    SDL_GetRendererInfo;
-    SDL_GetRendererOutputSize;
-    SDL_CreateTexture;
-    SDL_CreateTextureFromSurface;
-    SDL_QueryTexture;
-    SDL_SetTextureColorMod;
-    SDL_GetTextureColorMod;
-    SDL_SetTextureAlphaMod;
-    SDL_GetTextureAlphaMod;
-    SDL_SetTextureBlendMode;
-    SDL_GetTextureBlendMode;
-    SDL_SetTextureScaleMode;
-    SDL_GetTextureScaleMode;
-    SDL_SetTextureUserData;
-    SDL_GetTextureUserData;
-    SDL_UpdateTexture;
-    SDL_UpdateYUVTexture;
-    SDL_UpdateNVTexture;
-    SDL_LockTexture;
-    SDL_LockTextureToSurface;
-    SDL_UnlockTexture;
-    SDL_IsRenderTargetSupported;
-    SDL_SetRenderTarget;
-    SDL_GetRenderTarget;
-    SDL_SetRenderLogicalSize;
-    SDL_GetRenderLogicalSize;
-    SDL_SetRenderIntegerScale;
-    SDL_GetRenderIntegerScale;
-    SDL_SetRenderViewport;
-    SDL_GetRenderViewport;
-    SDL_SetRenderClipRect;
-    SDL_GetRenderClipRect;
-    SDL_IsRenderClipEnabled;
-    SDL_SetRenderScale;
-    SDL_GetRenderScale;
-    SDL_RenderWindowToLogical;
-    SDL_RenderLogicalToWindow;
-    SDL_SetRenderDrawColor;
-    SDL_GetRenderDrawColor;
-    SDL_SetRenderDrawBlendMode;
-    SDL_GetRenderDrawBlendMode;
-    SDL_RenderClear;
-    SDL_RenderPoint;
-    SDL_RenderPoints;
-    SDL_RenderLine;
-    SDL_RenderLines;
-    SDL_RenderRect;
-    SDL_RenderRects;
-    SDL_RenderFillRect;
-    SDL_RenderFillRects;
-    SDL_RenderTexture;
-    SDL_RenderTextureRotated;
-    SDL_RenderPointF;
-    SDL_RenderPointsF;
-    SDL_RenderLineF;
-    SDL_RenderLinesF;
-    SDL_RenderRectF;
-    SDL_RenderRectsF;
-    SDL_RenderFillRectF;
-    SDL_RenderFillRectsF;
-    SDL_RenderTextureF;
-    SDL_RenderTextureRotatedF;
-    SDL_RenderGeometry;
-    SDL_RenderGeometryRaw;
-    SDL_RenderReadPixels;
-    SDL_RenderPresent;
-    SDL_DestroyTexture;
-    SDL_DestroyRenderer;
-    SDL_RenderFlush;
-    SDL_GL_BindTexture;
-    SDL_GL_UnbindTexture;
-    SDL_GetRenderMetalLayer;
-    SDL_GetRenderMetalCommandEncoder;
-    SDL_SetRenderVSync;
-    SDL_Init;
-    SDL_InitSubSystem;
-    SDL_QuitSubSystem;
-    SDL_WasInit;
-    SDL_Quit;
-    SDL_ShowMessageBox;
-    SDL_ShowSimpleMessageBox;
-    SDL_SetMainReady;
-    SDL_RegisterApp;
-    SDL_UnregisterApp;
-    SDL_GDKSuspendComplete;
-    SDL_GetBasePath;
-    SDL_GetPrefPath;
+    SDL_GetThreadName;
+    SDL_ThreadID;
+    SDL_GetThreadID;
+    SDL_SetThreadPriority;
+    SDL_WaitThread;
+    SDL_DetachThread;
+    SDL_TLSCreate;
+    SDL_TLSGet;
+    SDL_TLSSet;
+    SDL_TLSCleanup;
+    SDL_GetTicks;
+    SDL_GetTicksNS;
+    SDL_GetPerformanceCounter;
+    SDL_GetPerformanceFrequency;
+    SDL_Delay;
+    SDL_DelayNS;
+    SDL_AddTimer;
+    SDL_RemoveTimer;
+    SDL_GetNumTouchDevices;
+    SDL_GetTouchDevice;
+    SDL_GetTouchName;
+    SDL_GetTouchDeviceType;
+    SDL_GetNumTouchFingers;
+    SDL_GetTouchFinger;
+    SDL_GetVersion;
+    SDL_GetRevision;
     SDL_GetNumVideoDrivers;
     SDL_GetVideoDriver;
     SDL_GetCurrentVideoDriver;
@@ -616,249 +849,12 @@ SDL3_0.0.0 {
     SDL_GL_GetSwapInterval;
     SDL_GL_SwapWindow;
     SDL_GL_DeleteContext;
-    SDL_GetNumTouchDevices;
-    SDL_GetTouchDevice;
-    SDL_GetTouchName;
-    SDL_GetTouchDeviceType;
-    SDL_GetNumTouchFingers;
-    SDL_GetTouchFinger;
-    SDL_GetCPUCount;
-    SDL_GetCPUCacheLineSize;
-    SDL_HasRDTSC;
-    SDL_HasAltiVec;
-    SDL_HasMMX;
-    SDL_HasSSE;
-    SDL_HasSSE2;
-    SDL_HasSSE3;
-    SDL_HasSSE41;
-    SDL_HasSSE42;
-    SDL_HasAVX;
-    SDL_HasAVX2;
-    SDL_HasAVX512F;
-    SDL_HasARMSIMD;
-    SDL_HasNEON;
-    SDL_HasLSX;
-    SDL_HasLASX;
-    SDL_GetSystemRAM;
-    SDL_SIMDGetAlignment;
-    SDL_SIMDAlloc;
-    SDL_SIMDRealloc;
-    SDL_SIMDFree;
-    SDL_SetError;
-    SDL_GetError;
-    SDL_GetErrorMsg;
-    SDL_ClearError;
-    SDL_Error;
-    SDL_OpenSensor;
-    SDL_GetSensorFromInstanceID;
-    SDL_GetSensorName;
-    SDL_GetSensorType;
-    SDL_GetSensorNonPortableType;
-    SDL_GetSensorInstanceID;
-    SDL_GetSensorData;
-    SDL_CloseSensor;
-    SDL_UpdateSensors;
-    SDL_SetHintWithPriority;
-    SDL_SetHint;
-    SDL_ResetHint;
-    SDL_ResetHints;
-    SDL_GetHint;
-    SDL_GetHintBoolean;
-    SDL_AddHintCallback;
-    SDL_DelHintCallback;
-    SDL_ClearHints;
-    SDL_GetPlatform;
-    SDL_CreateMutex;
-    SDL_LockMutex;
-    SDL_TryLockMutex;
-    SDL_UnlockMutex;
-    SDL_DestroyMutex;
-    SDL_CreateSemaphore;
-    SDL_DestroySemaphore;
-    SDL_SemWait;
-    SDL_SemTryWait;
-    SDL_SemWaitTimeout;
-    SDL_SemPost;
-    SDL_SemValue;
-    SDL_CreateCond;
-    SDL_DestroyCond;
-    SDL_CondSignal;
-    SDL_CondBroadcast;
-    SDL_CondWait;
-    SDL_CondWaitTimeout;
-    SDL_ComposeCustomBlendMode;
-    SDL_LockJoysticks;
-    SDL_UnlockJoysticks;
-    SDL_OpenJoystick;
-    SDL_GetJoystickFromInstanceID;
-    SDL_GetJoystickFromPlayerIndex;
-    SDL_AttachVirtualJoystick;
-    SDL_AttachVirtualJoystickEx;
-    SDL_DetachVirtualJoystick;
-    SDL_IsJoystickVirtual;
-    SDL_SetJoystickVirtualAxis;
-    SDL_SetJoystickVirtualButton;
-    SDL_SetJoystickVirtualHat;
-    SDL_GetJoystickName;
-    SDL_GetJoystickPath;
-    SDL_GetJoystickPlayerIndex;
-    SDL_SetJoystickPlayerIndex;
-    SDL_GetJoystickGUID;
-    SDL_GetJoystickVendor;
-    SDL_GetJoystickProduct;
-    SDL_GetJoystickProductVersion;
-    SDL_GetJoystickFirmwareVersion;
-    SDL_GetJoystickSerial;
-    SDL_GetJoystickType;
-    SDL_GetJoystickGUIDString;
-    SDL_GetJoystickGUIDFromString;
-    SDL_GetJoystickGUIDInfo;
-    SDL_IsJoystickConnected;
-    SDL_GetJoystickInstanceID;
-    SDL_GetNumJoystickAxes;
-    SDL_GetNumJoystickHats;
-    SDL_GetNumJoystickButtons;
-    SDL_UpdateJoysticks;
-    SDL_GetJoystickEventState;
-    SDL_GetJoystickAxis;
-    SDL_GetJoystickAxisInitialState;
-    SDL_GetJoystickHat;
-    SDL_GetJoystickButton;
-    SDL_RumbleJoystick;
-    SDL_RumbleJoystickTriggers;
-    SDL_JoystickHasLED;
-    SDL_JoystickHasRumble;
-    SDL_JoystickHasRumbleTriggers;
-    SDL_SetJoystickLED;
-    SDL_SendJoystickEffect;
-    SDL_CloseJoystick;
-    SDL_GetJoystickPowerLevel;
-    SDL_Metal_CreateView;
-    SDL_Metal_DestroyView;
-    SDL_Metal_GetLayer;
-    SDL_Metal_GetDrawableSize;
-    SDL_AddGamepadMappingsFromRW;
-    SDL_AddGamepadMapping;
-    SDL_GetNumGamepadMappings;
-    SDL_GetGamepadMappingForIndex;
-    SDL_GetGamepadMappingForGUID;
-    SDL_GetGamepadMapping;
-    SDL_IsGamepad;
-    SDL_OpenGamepad;
-    SDL_GetGamepadFromInstanceID;
-    SDL_GetGamepadFromPlayerIndex;
-    SDL_GetGamepadName;
-    SDL_GetGamepadPath;
-    SDL_GetGamepadType;
-    SDL_GetGamepadPlayerIndex;
-    SDL_SetGamepadPlayerIndex;
-    SDL_GetGamepadVendor;
-    SDL_GetGamepadProduct;
-    SDL_GetGamepadProductVersion;
-    SDL_GetGamepadFirmwareVersion;
-    SDL_GetGamepadSerial;
-    SDL_IsGamepadConnected;
-    SDL_GetGamepadJoystick;
-    SDL_GetGamepadEventState;
-    SDL_UpdateGamepads;
-    SDL_GetGamepadAxisFromString;
-    SDL_GetGamepadStringForAxis;
-    SDL_GetGamepadBindForAxis;
-    SDL_GamepadHasAxis;
-    SDL_GetGamepadAxis;
-    SDL_GetGamepadButtonFromString;
-    SDL_GetGamepadStringForButton;
-    SDL_GetGamepadBindForButton;
-    SDL_GamepadHasButton;
-    SDL_GetGamepadButton;
-    SDL_GetGamepadNumTouchpads;
-    SDL_GetGamepadNumTouchpadFingers;
-    SDL_GetGamepadTouchpadFinger;
-    SDL_GamepadHasSensor;
-    SDL_SetGamepadSensorEnabled;
-    SDL_IsGamepadSensorEnabled;
-    SDL_GetGamepadSensorDataRate;
-    SDL_GetGamepadSensorData;
-    SDL_RumbleGamepad;
-    SDL_RumbleGamepadTriggers;
-    SDL_GamepadHasLED;
-    SDL_GamepadHasRumble;
-    SDL_GamepadHasRumbleTriggers;
-    SDL_SetGamepadLED;
-    SDL_SendGamepadEffect;
-    SDL_CloseGamepad;
-    SDL_GetGamepadAppleSFSymbolsNameForButton;
-    SDL_GetGamepadAppleSFSymbolsNameForAxis;
-    SDL_ReportAssertion;
-    SDL_SetAssertionHandler;
-    SDL_GetDefaultAssertionHandler;
-    SDL_GetAssertionHandler;
-    SDL_GetAssertionReport;
-    SDL_ResetAssertionReport;
-    SDL_NumHaptics;
-    SDL_HapticName;
-    SDL_HapticOpen;
-    SDL_HapticOpened;
-    SDL_HapticIndex;
-    SDL_MouseIsHaptic;
-    SDL_HapticOpenFromMouse;
-    SDL_JoystickIsHaptic;
-    SDL_HapticOpenFromJoystick;
-    SDL_HapticClose;
-    SDL_HapticNumEffects;
-    SDL_HapticNumEffectsPlaying;
-    SDL_HapticQuery;
-    SDL_HapticNumAxes;
-    SDL_HapticEffectSupported;
-    SDL_HapticNewEffect;
-    SDL_HapticUpdateEffect;
-    SDL_HapticRunEffect;
-    SDL_HapticStopEffect;
-    SDL_HapticDestroyEffect;
-    SDL_HapticGetEffectStatus;
-    SDL_HapticSetGain;
-    SDL_HapticSetAutocenter;
-    SDL_HapticPause;
-    SDL_HapticUnpause;
-    SDL_HapticStopAll;
-    SDL_HapticRumbleSupported;
-    SDL_HapticRumbleInit;
-    SDL_HapticRumblePlay;
-    SDL_HapticRumbleStop;
-    SDL_GetVersion;
-    SDL_GetRevision;
-    SDL_GetPowerInfo;
-    SDL_GetTicksNS;
-    SDL_DelayNS;
-    SDL_GetEventState;
-    SDL_GetRenderDriver;
-    SDL_RunApp;
-    SDL_GetSensors;
-    SDL_GetSensorInstanceName;
-    SDL_GetSensorInstanceType;
-    SDL_GetSensorInstanceNonPortableType;
-    SDL_GetJoysticks;
-    SDL_GetJoystickInstanceName;
-    SDL_GetJoystickInstancePath;
-    SDL_GetJoystickInstancePlayerIndex;
-    SDL_GetJoystickInstanceGUID;
-    SDL_GetJoystickInstanceVendor;
-    SDL_GetJoystickInstanceProduct;
-    SDL_GetJoystickInstanceProductVersion;
-    SDL_GetJoystickInstanceType;
-    SDL_GetGamepadInstanceName;
-    SDL_GetGamepadInstancePath;
-    SDL_GetGamepadInstanceType;
-    SDL_GetGamepadInstanceMapping;
-    SDL_HasJoysticks;
-    SDL_HasSensors;
-    SDL_HasGamepads;
-    SDL_GetGamepads;
-    SDL_GetGamepadInstancePlayerIndex;
-    SDL_GetGamepadInstanceGUID;
-    SDL_GetGamepadInstanceVendor;
-    SDL_GetGamepadInstanceProduct;
-    SDL_GetGamepadInstanceProductVersion;
+    SDL_Vulkan_LoadLibrary;
+    SDL_Vulkan_GetVkGetInstanceProcAddr;
+    SDL_Vulkan_UnloadLibrary;
+    SDL_Vulkan_GetInstanceExtensions;
+    SDL_Vulkan_CreateSurface;
+    SDL_Vulkan_GetDrawableSize;
     # extra symbols go here (don't modify this line)
   local: *;
 };
diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h
index 578f5ddf86d6..1bea7ed99291 100644
--- a/src/dynapi/SDL_dynapi_overrides.h
+++ b/src/dynapi/SDL_dynapi_overrides.h
@@ -26,41 +26,62 @@
 #error You should not be here.
 #endif
 
-#define SDL_SetError SDL_SetError_REAL
 #def

(Patch may be truncated, please check the link at the top of this post.)