From ceafbacc73b114c87d2416f123259da60726796c Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 1 Mar 2025 21:43:01 -0800
Subject: [PATCH] Updated stub SDL library to version 3.2.6
---
Xcode/iOS/SDL3.framework/Headers/SDL.h | 2 +-
Xcode/iOS/SDL3.framework/Headers/SDL_assert.h | 2 +
Xcode/iOS/SDL3.framework/Headers/SDL_atomic.h | 2 +-
Xcode/iOS/SDL3.framework/Headers/SDL_audio.h | 15 +-
Xcode/iOS/SDL3.framework/Headers/SDL_camera.h | 4 +-
Xcode/iOS/SDL3.framework/Headers/SDL_dialog.h | 4 +-
Xcode/iOS/SDL3.framework/Headers/SDL_events.h | 4 +-
.../iOS/SDL3.framework/Headers/SDL_gamepad.h | 2 +-
Xcode/iOS/SDL3.framework/Headers/SDL_gpu.h | 149 ++++++++++++++----
Xcode/iOS/SDL3.framework/Headers/SDL_guid.h | 4 +
Xcode/iOS/SDL3.framework/Headers/SDL_hints.h | 28 +++-
Xcode/iOS/SDL3.framework/Headers/SDL_log.h | 13 +-
Xcode/iOS/SDL3.framework/Headers/SDL_main.h | 9 +-
Xcode/iOS/SDL3.framework/Headers/SDL_mouse.h | 6 +-
Xcode/iOS/SDL3.framework/Headers/SDL_pixels.h | 3 +
.../Headers/SDL_platform_defines.h | 2 -
.../iOS/SDL3.framework/Headers/SDL_process.h | 12 +-
Xcode/iOS/SDL3.framework/Headers/SDL_rect.h | 2 +-
Xcode/iOS/SDL3.framework/Headers/SDL_render.h | 87 ++++++++--
Xcode/iOS/SDL3.framework/Headers/SDL_stdinc.h | 35 ++--
.../iOS/SDL3.framework/Headers/SDL_storage.h | 7 +-
.../iOS/SDL3.framework/Headers/SDL_surface.h | 34 +++-
Xcode/iOS/SDL3.framework/Headers/SDL_thread.h | 2 +-
Xcode/iOS/SDL3.framework/Headers/SDL_tray.h | 26 +--
.../iOS/SDL3.framework/Headers/SDL_version.h | 2 +-
Xcode/iOS/SDL3.framework/Headers/SDL_vulkan.h | 2 +-
Xcode/iOS/SDL3.framework/SDL3.tbd | 3 +-
.../SDL3.framework/Versions/A/Headers/SDL.h | 2 +-
.../Versions/A/Headers/SDL_assert.h | 2 +
.../Versions/A/Headers/SDL_atomic.h | 2 +-
.../Versions/A/Headers/SDL_audio.h | 15 +-
.../Versions/A/Headers/SDL_camera.h | 4 +-
.../Versions/A/Headers/SDL_dialog.h | 4 +-
.../Versions/A/Headers/SDL_events.h | 4 +-
.../Versions/A/Headers/SDL_gamepad.h | 2 +-
.../Versions/A/Headers/SDL_gpu.h | 149 ++++++++++++++----
.../Versions/A/Headers/SDL_guid.h | 4 +
.../Versions/A/Headers/SDL_hints.h | 28 +++-
.../Versions/A/Headers/SDL_log.h | 13 +-
.../Versions/A/Headers/SDL_main.h | 9 +-
.../Versions/A/Headers/SDL_mouse.h | 6 +-
.../Versions/A/Headers/SDL_pixels.h | 3 +
.../Versions/A/Headers/SDL_platform_defines.h | 2 -
.../Versions/A/Headers/SDL_process.h | 12 +-
.../Versions/A/Headers/SDL_rect.h | 2 +-
.../Versions/A/Headers/SDL_render.h | 87 ++++++++--
.../Versions/A/Headers/SDL_stdinc.h | 35 ++--
.../Versions/A/Headers/SDL_storage.h | 7 +-
.../Versions/A/Headers/SDL_surface.h | 34 +++-
.../Versions/A/Headers/SDL_thread.h | 2 +-
.../Versions/A/Headers/SDL_tray.h | 26 +--
.../Versions/A/Headers/SDL_version.h | 2 +-
.../Versions/A/Headers/SDL_vulkan.h | 2 +-
.../macOS/SDL3.framework/Versions/A/SDL3.tbd | 3 +-
54 files changed, 688 insertions(+), 234 deletions(-)
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL.h b/Xcode/iOS/SDL3.framework/Headers/SDL.h
index 861c404f..f8586ad4 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL.h
@@ -20,7 +20,7 @@
*/
/**
- * Main include header for the SDL library, version 3.2.0
+ * Main include header for the SDL library, version 3.2.6
*
* It is almost always best to include just this one header instead of
* picking out individual headers included here. There are exceptions to
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_assert.h b/Xcode/iOS/SDL3.framework/Headers/SDL_assert.h
index 09b3b478..6c90acc0 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_assert.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_assert.h
@@ -149,6 +149,8 @@ extern "C" {
#define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" )
#elif defined(_WIN32) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__arm64__) || defined(__aarch64__)) )
#define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #0xF000\n\t" )
+#elif defined(__GNUC__) || defined(__clang__)
+ #define SDL_TriggerBreakpoint() __builtin_trap() /* older gcc may not support SDL_HAS_BUILTIN(__builtin_trap) above */
#elif defined(__386__) && defined(__WATCOMC__)
#define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_atomic.h b/Xcode/iOS/SDL3.framework/Headers/SDL_atomic.h
index 03e3fb13..78b5e0fa 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_atomic.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_atomic.h
@@ -498,7 +498,7 @@ extern SDL_DECLSPEC int SDLCALL SDL_AddAtomicInt(SDL_AtomicInt *a, int v);
*
* ***Note: If you don't know what this macro is for, you shouldn't use it!***
*
- * \param a a pointer to an SDL_AtomicInt to increment.
+ * \param a a pointer to an SDL_AtomicInt to decrement.
* \returns true if the variable reached zero after decrementing, false
* otherwise.
*
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_audio.h b/Xcode/iOS/SDL3.framework/Headers/SDL_audio.h
index 95693821..541c5dfb 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_audio.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_audio.h
@@ -781,7 +781,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_IsAudioDevicePlayback(SDL_AudioDeviceID dev
* Physical devices can not be paused or unpaused, only logical devices
* created through SDL_OpenAudioDevice() can be.
*
- * \param dev a device opened by SDL_OpenAudioDevice().
+ * \param devid a device opened by SDL_OpenAudioDevice().
* \returns true on success or false on failure; call SDL_GetError() for more
* information.
*
@@ -792,7 +792,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_IsAudioDevicePlayback(SDL_AudioDeviceID dev
* \sa SDL_ResumeAudioDevice
* \sa SDL_AudioDevicePaused
*/
-extern SDL_DECLSPEC bool SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev);
+extern SDL_DECLSPEC bool SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID devid);
/**
* Use this function to unpause audio playback on a specified device.
@@ -809,7 +809,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev);
* Physical devices can not be paused or unpaused, only logical devices
* created through SDL_OpenAudioDevice() can be.
*
- * \param dev a device opened by SDL_OpenAudioDevice().
+ * \param devid a device opened by SDL_OpenAudioDevice().
* \returns true on success or false on failure; call SDL_GetError() for more
* information.
*
@@ -820,7 +820,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev);
* \sa SDL_AudioDevicePaused
* \sa SDL_PauseAudioDevice
*/
-extern SDL_DECLSPEC bool SDLCALL SDL_ResumeAudioDevice(SDL_AudioDeviceID dev);
+extern SDL_DECLSPEC bool SDLCALL SDL_ResumeAudioDevice(SDL_AudioDeviceID devid);
/**
* Use this function to query if an audio device is paused.
@@ -832,7 +832,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ResumeAudioDevice(SDL_AudioDeviceID dev);
* created through SDL_OpenAudioDevice() can be. Physical and invalid device
* IDs will report themselves as unpaused here.
*
- * \param dev a device opened by SDL_OpenAudioDevice().
+ * \param devid a device opened by SDL_OpenAudioDevice().
* \returns true if device is valid and paused, false otherwise.
*
* \threadsafety It is safe to call this function from any thread.
@@ -842,7 +842,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ResumeAudioDevice(SDL_AudioDeviceID dev);
* \sa SDL_PauseAudioDevice
* \sa SDL_ResumeAudioDevice
*/
-extern SDL_DECLSPEC bool SDLCALL SDL_AudioDevicePaused(SDL_AudioDeviceID dev);
+extern SDL_DECLSPEC bool SDLCALL SDL_AudioDevicePaused(SDL_AudioDeviceID devid);
/**
* Get the gain of an audio device.
@@ -1583,6 +1583,9 @@ extern SDL_DECLSPEC bool SDLCALL SDL_PauseAudioStreamDevice(SDL_AudioStream *str
* previously been paused. Once unpaused, any bound audio streams will begin
* to progress again, and audio can be generated.
*
+ * Remember, SDL_OpenAudioDeviceStream opens device in a paused state, so this
+ * function call is required for audio playback to begin on such device.
+ *
* \param stream the audio stream associated with the audio device to resume.
* \returns true on success or false on failure; call SDL_GetError() for more
* information.
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_camera.h b/Xcode/iOS/SDL3.framework/Headers/SDL_camera.h
index c4d05962..5f3911fd 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_camera.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_camera.h
@@ -239,7 +239,7 @@ extern SDL_DECLSPEC SDL_CameraID * SDLCALL SDL_GetCameras(int *count);
* there _is_ a camera until the user has given you permission to check
* through a scary warning popup.
*
- * \param devid the camera device instance ID to query.
+ * \param instance_id the camera device instance ID.
* \param count a pointer filled in with the number of elements in the list,
* may be NULL.
* \returns a NULL terminated array of pointers to SDL_CameraSpec or NULL on
@@ -254,7 +254,7 @@ extern SDL_DECLSPEC SDL_CameraID * SDLCALL SDL_GetCameras(int *count);
* \sa SDL_GetCameras
* \sa SDL_OpenCamera
*/
-extern SDL_DECLSPEC SDL_CameraSpec ** SDLCALL SDL_GetCameraSupportedFormats(SDL_CameraID devid, int *count);
+extern SDL_DECLSPEC SDL_CameraSpec ** SDLCALL SDL_GetCameraSupportedFormats(SDL_CameraID instance_id, int *count);
/**
* Get the human-readable device name for a camera.
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_dialog.h b/Xcode/iOS/SDL3.framework/Headers/SDL_dialog.h
index 460038ff..ddb9e24d 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_dialog.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_dialog.h
@@ -84,8 +84,8 @@ typedef struct SDL_DialogFileFilter
* - A pointer to NULL, the user either didn't choose any file or canceled the
* dialog.
* - A pointer to non-`NULL`, the user chose one or more files. The argument
- * is a null-terminated list of pointers to C strings, each containing a
- * path.
+ * is a null-terminated array of pointers to UTF-8 encoded strings, each
+ * containing a path.
*
* The filelist argument should not be freed; it will automatically be freed
* when the callback returns.
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_events.h b/Xcode/iOS/SDL3.framework/Headers/SDL_events.h
index 1323e9f0..56a2194b 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_events.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_events.h
@@ -132,7 +132,7 @@ typedef enum SDL_EventType
/* Window events */
/* 0x200 was SDL_WINDOWEVENT, reserve the number for sdl2-compat */
- /* 0x201 was SDL_EVENT_SYSWM, reserve the number for sdl2-compat */
+ /* 0x201 was SDL_SYSWMEVENT, reserve the number for sdl2-compat */
SDL_EVENT_WINDOW_SHOWN = 0x202, /**< Window has been shown */
SDL_EVENT_WINDOW_HIDDEN, /**< Window has been hidden */
SDL_EVENT_WINDOW_EXPOSED, /**< Window has been exposed and should be redrawn, and can be redrawn directly from event watchers for this event */
@@ -1108,7 +1108,7 @@ typedef enum SDL_EventAction
* \param numevents if action is SDL_ADDEVENT, the number of events to add
* back to the event queue; if action is SDL_PEEKEVENT or
* SDL_GETEVENT, the maximum number of events to retrieve.
- * \param action action to take; see [[#action|Remarks]] for details.
+ * \param action action to take; see [Remarks](#remarks) for details.
* \param minType minimum value of the event type to be considered;
* SDL_EVENT_FIRST is a safe choice.
* \param maxType maximum value of the event type to be considered;
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_gamepad.h b/Xcode/iOS/SDL3.framework/Headers/SDL_gamepad.h
index 264f763b..99f8b659 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_gamepad.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_gamepad.h
@@ -29,7 +29,7 @@
* "joysticks" now are actually console-style gamepads. So SDL provides the
* gamepad API on top of the lower-level joystick functionality.
*
- * The difference betweena joystick and a gamepad is that a gamepad tells you
+ * The difference between a joystick and a gamepad is that a gamepad tells you
* _where_ a button or axis is on the device. You don't speak to gamepads in
* terms of arbitrary numbers like "button 3" or "axis 2" but in standard
* locations: the d-pad, the shoulder buttons, triggers, A/B/X/Y (or
diff --git a/Xcode/iOS/SDL3.framework/Headers/SDL_gpu.h b/Xcode/iOS/SDL3.framework/Headers/SDL_gpu.h
index fa870a57..818ca7e7 100644
--- a/Xcode/iOS/SDL3.framework/Headers/SDL_gpu.h
+++ b/Xcode/iOS/SDL3.framework/Headers/SDL_gpu.h
@@ -35,13 +35,14 @@
* can render offscreen entirely, perhaps for image processing, and not use a
* window at all.
*
- * Next the app prepares static data (things that are created once and used
+ * Next, the app prepares static data (things that are created once and used
* over and over). For example:
*
* - Shaders (programs that run on the GPU): use SDL_CreateGPUShader().
- * - Vertex buffers (arrays of geometry data) and other data rendering will
- * need: use SDL_UploadToGPUBuffer().
- * - Textures (images): use SDL_UploadToGPUTexture().
+ * - Vertex buffers (arrays of geometry data) and other rendering data: use
+ * SDL_CreateGPUBuffer() and SDL_UploadToGPUBuffer().
+ * - Textures (images): use SDL_CreateGPUTexture() and
+ * SDL_UploadToGPUTexture().
* - Samplers (how textures should be read from): use SDL_CreateGPUSampler().
* - Render pipelines (precalculated rendering state): use
* SDL_CreateGPUGraphicsPipeline()
@@ -130,7 +131,8 @@
* It is optimal for apps to pre-compile the shader formats they might use,
* but for ease of use SDL provides a separate project,
* [SDL_shadercross](https://github.com/libsdl-org/SDL_shadercross)
- * , for performing runtime shader cross-compilation.
+ * , for performing runtime shader cross-compilation. It also has a CLI
+ * interface for offline precompilation as well.
*
* This is an extremely quick overview that leaves out several important
* details. Already, though, one can see that GPU programming can be quite
@@ -888,6 +890,10 @@ typedef enum SDL_GPUCubeMapFace
* Unlike textures, READ | WRITE can be used for simultaneous read-write
* usage. The same data synchronization concerns as textures apply.
*
+ * If you use a STORAGE flag, the data in the buffer must respect std140
+ * layout conventions. In practical terms this means you must ensure that vec3
+ * and vec4 fields are 16-byte aligned.
+ *
* \since This datatype is available since SDL 3.2.0.
*
* \sa SDL_CreateGPUBuffer
@@ -1361,6 +1367,7 @@ typedef struct SDL_GPUTextureLocation
*
* \sa SDL_UploadToGPUTexture
* \sa SDL_DownloadFromGPUTexture
+ * \sa SDL_CreateGPUTexture
*/
typedef struct SDL_GPUTextureRegion
{
@@ -1489,9 +1496,16 @@ typedef struct SDL_GPUIndirectDispatchCommand
/**
* A structure specifying the parameters of a sampler.
*
+ * Note that mip_lod_bias is a no-op for the Metal driver. For Metal, LOD bias
+ * must be applied via shader instead.
+ *
* \since This function is available since SDL 3.2.0.
*
* \sa SDL_CreateGPUSampler
+ * \sa SDL_GPUFilter
+ * \sa SDL_GPUSamplerMipmapMode
+ * \sa SDL_GPUSamplerAddressMode
+ * \sa SDL_GPUCompareOp
*/
typedef struct SDL_GPUSamplerCreateInfo
{
@@ -1530,14 +1544,14 @@ typedef struct SDL_GPUSamplerCreateInfo
* \since This struct is available since SDL 3.2.0.
*
* \sa SDL_GPUVertexAttribute
- * \sa SDL_GPUVertexInputState
+ * \sa SDL_GPUVertexInputRate
*/
typedef struct SDL_GPUVertexBufferDescription
{
Uint32 slot; /**< The binding slot of the vertex buffer. */
Uint32 pitch; /**< The byte pitch between consecutive elements of the vertex buffer. */
SDL_GPUVertexInputRate input_rate; /**< Whether attribute addressing is a function of the vertex index or instance index. */
- Uint32 instance_step_rate; /**< The number of instances to draw using the same per-instance data before advancing in the instance buffer by one element. Ignored unless input_rate is SDL_GPU_VERTEXINPUTRATE_INSTANCE */
+ Uint32 instance_step_rate; /**< Reserved for future use. Must be set to 0. */
} SDL_GPUVertexBufferDescription;
/**
@@ -1550,6 +1564,7 @@ typedef struct SDL_GPUVertexBufferDescription
*
* \sa SDL_GPUVertexBufferDescription
* \sa SDL_GPUVertexInputState
+ * \sa SDL_GPUVertexElementFormat
*/
typedef struct SDL_GPUVertexAttribute
{
@@ -1706,10 +1721,13 @@ typedef struct SDL_GPUTransferBufferCreateInfo
* A structure specifying the parameters of the graphics pipeline rasterizer
* state.
*
- * NOTE: Some backend APIs (D3D11/12) will enable depth clamping even if
- * enable_depth_clip is true. If you rely on this clamp+clip behavior,
- * consider enabling depth clip and then manually clamping depth in your
- * fragment shaders on Metal and Vulkan.
+ * Note that SDL_GPU_FILLMODE_LINE is not supported on many Android devices.
+ * For those devices, the fill mode will automatically fall back to FILL.
+ *
+ * Also note that the D3D12 driver will enable depth clamping even if
+ * enable_depth_clip is true. If you need this clamp+clip behavior, consider
+ * enabling depth clip and then manually clamping depth in your fragment
+ * shaders on Metal and Vulkan.
*
* \since This struct is available since SDL 3.2.0.
*
@@ -1740,8 +1758,8 @@ typedef struct SDL_GPURasterizerState
typedef struct SDL_GPUMultisampleState
{
SDL_GPUSampleCount sample_count; /**< The number of samples to be used in rasterization. */
- Uint32 sample_mask; /**< Determines which samples get updated in the render targets. Treated as 0xFFFFFFFF if enable_mask is false. */
- bool enable_mask; /**< Enables sample masking. */
+ Uint32 sample_mask; /**< Reserved for future use. Must be set to 0. */
+ bool enable_mask; /**< Reserved for future use. Must be set to false. */
Uint8 padding1;
Uint8 padding2;
Uint8 padding3;
@@ -1791,6 +1809,8 @@ typedef struct SDL_GPUColorTargetDescription
* \since This struct is available since SDL 3.2.0.
*
* \sa SDL_GPUGraphicsPipelineCreateInfo
+ * \sa SDL_GPUColorTargetDescription
+ * \sa SDL_GPUTextureFormat
*/
typedef struct SDL_GPUGraphicsPipelineTargetInfo
{
@@ -1809,6 +1829,7 @@ typedef struct SDL_GPUGraphicsPipelineTargetInfo
* \since This struct is available since SDL 3.2.0.
*
* \sa SDL_CreateGPUGraphicsPipeline
+ * \sa SDL_GPUShader
* \sa SDL_GPUVertexInputState
* \sa SDL_GPUPrimitiveType
* \sa SDL_GPURasterizerState
@@ -1836,6 +1857,7 @@ typedef struct SDL_GPUGraphicsPipelineCreateInfo
* \since This struct is available since SDL 3.2.0.
*
* \sa SDL_CreateGPUComputePipeline
+ * \sa SDL_GPUShaderFormat
*/
typedef struct SDL_GPUComputePipelineCreateInfo
{
@@ -2104,7 +2126,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_GPUSupportsProperties(
* \sa SDL_DestroyGPUDevice
* \sa SDL_GPUSupportsShaderFormats
*/
-extern SDL_DECLSPEC SDL_GPUDevice *SDLCALL SDL_CreateGPUDevice(
+extern SDL_DECLSPEC SDL_GPUDevice * SDLCALL SDL_CreateGPUDevice(
SDL_GPUShaderFormat format_flags,
bool debug_mode,
const char *name);
@@ -2152,7 +2174,7 @@ extern SDL_DECLSPEC SDL_GPUDevice *SDLCALL SDL_CreateGPUDevice(
* \sa SDL_DestroyGPUDevice
* \sa SDL_GPUSupportsProperties
*/
-extern SDL_DECLSPEC SDL_GPUDevice *SDLCALL SDL_CreateGPUDeviceWithProperties(
+extern SDL_DECLSPEC SDL_GPUDevice * SDLCALL SDL_CreateGPUDeviceWithProperties(
SDL_PropertiesID props);
#define SDL_PROP_GPU_DEVICE_CREATE_DEBUGMODE_BOOLEAN "SDL.gpu.device.create.debugmode"
@@ -2275,7 +2297,7 @@ extern SDL_DECLSPEC SDL_GPUShaderFormat SDLCALL SDL_GetGPUShaderFormats(SDL_GPUD
* \sa SDL_BindGPUComputePipeline
* \sa SDL_ReleaseGPUComputePipeline
*/
-extern SDL_DECLSPEC SDL_GPUComputePipeline *SDLCALL SDL_CreateGPUComputePipeline(
+extern SDL_DECLSPEC SDL_GPUComputePipeline * SDLCALL SDL_CreateGPUComputePipeline(
SDL_GPUDevice *device,
const SDL_GPUComputePipelineCreateInfo *createinfo);
@@ -2302,7 +2324,7 @@ extern SDL_DECLSPEC SDL_GPUComputePipeline *SDLCALL SDL_CreateGPUComputePipeline
* \sa SDL_BindGPUGraphicsPipeline
* \sa SDL_ReleaseGPUGraphicsPipeline
*/
-extern SDL_DECLSPEC SDL_GPUGraphicsPipeline *SDLCALL SDL_CreateGPUGraphicsPipeline(
+extern SDL_DECLSPEC SDL_GPUGraphicsPipeline * SDLCALL SDL_CreateGPUGraphicsPipeline(
SDL_GPUDevice *device,
const SDL_GPUGraphicsPipelineCreateInfo *createinfo);
@@ -2329,7 +2351,7 @@ extern SDL_DECLSPEC SDL_GPUGraphicsPipeline *SDLCALL SDL_CreateGPUGraphicsPipeli
* \sa SDL_BindGPUFragmentSamplers
* \sa SDL_ReleaseGPUSampler
*/
-extern SDL_DECLSPEC SDL_GPUSampler *SDLCALL SDL_CreateGPUSampler(
+extern SDL_DECLSPEC SDL_GPUSampler * SDLCALL SDL_CreateGPUSampler(
SDL_GPUDevice *device,
const SDL_GPUSamplerCreateInfo *createinfo);
@@ -2408,7 +2430,7 @@ extern SDL_DECLSPEC SDL_GPUSampler *SDLCALL SDL_CreateGPUSampler(
* \sa SDL_CreateGPUGraphicsPipeline
* \sa SDL_ReleaseGPUShader
*/
-extern SDL_DECLSPEC SDL_GPUShader *SDLCALL SDL_CreateGPUShader(
+extern SDL_DECLSPEC SDL_GPUShader * SDLCALL SDL_CreateGPUShader(
SDL_GPUDevice *device,
const SDL_GPUShaderCreateInfo *createinfo);
@@ -2469,7 +2491,7 @@ extern SDL_DECLSPEC SDL_GPUShader *SDLCALL SDL_CreateGPUShader(
* \sa SDL_ReleaseGPUTexture
* \sa SDL_GPUTextureSupportsFormat
*/
-extern SDL_DECLSPEC SDL_GPUTexture *SDLCALL SDL_CreateGPUTexture(
+extern SDL_DECLSPEC SDL_GPUTexture * SDLCALL SDL_CreateGPUTexture(
SDL_GPUDevice *device,
const SDL_GPUTextureCreateInfo *createinfo);
@@ -2490,6 +2512,10 @@ extern SDL_DECLSPEC SDL_GPUTexture *SDLCALL SDL_CreateGPUTexture(
* Note that certain combinations of usage flags are invalid. For example, a
* buffer cannot have both the VERTEX and INDEX flags.
*
+ * If you use a STORAGE flag, the data in the buffer must respect std140
+ * layout conventions. In practical terms this means you must ensure that vec3
+ * and vec4 fields are 16-byte aligned.
+ *
* For better understanding of underlying concepts and memory management with
* SDL GPU API, you may refer
* [this blog post](https://moonside.games/posts/sdl-gpu-concepts-cycling/)
@@ -2521,7 +2547,7 @@ extern SDL_DECLSPEC SDL_GPUTexture *SDLCALL SDL_CreateGPUTexture(
* \sa SDL_DispatchGPUComputeIndirect
* \sa SDL_ReleaseGPUBuffer
*/
-extern SDL_DECLSPEC SDL_GPUBuffer *SDLCALL SDL_CreateGPUBuffer(
+extern SDL_DECLSPEC SDL_GPUBuffer * SDLCALL SDL_CreateGPUBuffer(
SDL_GPUDevice *device,
const SDL_GPUBufferCreateInfo *createinfo);
@@ -2554,7 +2580,7 @@ extern SDL_DECLSPEC SDL_GPUBuffer *SDLCALL SDL_CreateGPUBuffer(
* \sa SDL_DownloadFromGPUTexture
* \sa SDL_ReleaseGPUTransferBuffer
*/
-extern SDL_DECLSPEC SDL_GPUTransferBuffer *SDLCALL SDL_CreateGPUTransferBuffer(
+extern SDL_DECLSPEC SDL_GPUTransferBuffer * SDLCALL SDL_CreateGPUTransferBuffer(
SDL_GPUDevice *device,
const SDL_GPUTransferBufferCreateInfo *createinfo);
@@ -2782,7 +2808,7 @@ extern SDL_DECLSPEC void SDLCALL SDL_ReleaseGPUGraphicsPipeline(
* \sa SDL_SubmitGPUCommandBuffer
* \sa SDL_SubmitGPUCommandBufferAndAcquireFence
*/
-extern SDL_DECLSPEC SDL_GPUCommandBuffer *SDLCALL SDL_AcquireGPUCommandBuffer(
+extern SDL_DECLSPEC SDL_GPUCommandBuffer * SDLCALL SDL_AcquireGPUCommandBuffer(
SDL_GPUDevice *device);
/* Uniform Data */
@@ -2792,6 +2818,10 @@ extern SDL_DECLSPEC SDL_GPUCommandBuffer *SDLCALL SDL_AcquireGPUCommandBuffer(
*
* Subsequent draw calls will use this uniform data.
*
+ * The data being pushed must respect std140 layout conventions. In practical
+ * terms this means you must ensure that vec3 and vec4 fields are 16-byte
+ * aligned.
+ *
* \param command_buffer a command buffer.
* \param slot_index the vertex uniform slot to push data to.
* \param data client data to write.
@@ -2810,6 +2840,10 @@ extern SDL_DECLSPEC void SDLCALL SDL_PushGPUVertexUniformData(
*
* Subsequent draw calls will use this uniform data.
*
+ * The data being pushed must respect std140 layout conventions. In practical
+ * terms this means you must ensure that vec3 and vec4 fields are 16-byte
+ * aligned.
+ *
* \param command_buffer a command buffer.
* \param slot_index the fragment uniform slot to push data to.
* \param data client data to write.
@@ -2828,6 +2862,10 @@ extern SDL_DECLSPEC void SDLCALL SDL_PushGPUFragmentUniformData(
*
* Subsequent draw calls will use this uniform data.
*
+ * The data being pushed must respect std140 layout conventions. In practical
+ * terms this means you must ensure that vec3 and vec4 fields are 16-byte
+ * aligned.
+ *
* \param command_buffer a command buffer.
* \param slot_index the uniform slot to push data to.
* \param data client data to write.
@@ -2868,7 +2906,7 @@ extern SDL_DECLSPEC void SDLCALL SDL_PushGPUComputeUniformData(
*
* \sa SDL_EndGPURenderPass
*/
-extern SDL_DECLSPEC SDL_GPURenderPass *SDLCALL SDL_BeginGPURenderPass(
+extern SDL_DECLSPEC SDL_GPURenderPass * SDLCALL SDL_BeginGPURenderPass(
SDL_GPUCommandBuffer *command_buffer,
const SDL_GPUColorTargetInfo *color_target_infos,
Uint32 num_color_targets,
@@ -2978,6 +3016,9 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUIndexBuffer(
*
* The textures must have been created with SDL_GPU_TEXTUREUSAGE_SAMPLER.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param render_pass a render pass handle.
* \param first_slot the vertex sampler slot to begin binding from.
* \param texture_sampler_bindings an array of texture-sampler binding
@@ -2986,6 +3027,8 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUIndexBuffer(
* array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexSamplers(
SDL_GPURenderPass *render_pass,
@@ -2999,12 +3042,17 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexSamplers(
* These textures must have been created with
* SDL_GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param render_pass a render pass handle.
* \param first_slot the vertex storage texture slot to begin binding from.
* \param storage_textures an array of storage textures.
* \param num_bindings the number of storage texture to bind from the array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexStorageTextures(
SDL_GPURenderPass *render_pass,
@@ -3018,12 +3066,17 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexStorageTextures(
* These buffers must have been created with
* SDL_GPU_BUFFERUSAGE_GRAPHICS_STORAGE_READ.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param render_pass a render pass handle.
* \param first_slot the vertex storage buffer slot to begin binding from.
* \param storage_buffers an array of buffers.
* \param num_bindings the number of buffers to bind from the array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexStorageBuffers(
SDL_GPURenderPass *render_pass,
@@ -3036,6 +3089,9 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexStorageBuffers(
*
* The textures must have been created with SDL_GPU_TEXTUREUSAGE_SAMPLER.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param render_pass a render pass handle.
* \param first_slot the fragment sampler slot to begin binding from.
* \param texture_sampler_bindings an array of texture-sampler binding
@@ -3044,6 +3100,8 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUVertexStorageBuffers(
* array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUFragmentSamplers(
SDL_GPURenderPass *render_pass,
@@ -3057,12 +3115,17 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUFragmentSamplers(
* These textures must have been created with
* SDL_GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param render_pass a render pass handle.
* \param first_slot the fragment storage texture slot to begin binding from.
* \param storage_textures an array of storage textures.
* \param num_bindings the number of storage textures to bind from the array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUFragmentStorageTextures(
SDL_GPURenderPass *render_pass,
@@ -3076,12 +3139,17 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUFragmentStorageTextures(
* These buffers must have been created with
* SDL_GPU_BUFFERUSAGE_GRAPHICS_STORAGE_READ.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param render_pass a render pass handle.
* \param first_slot the fragment storage buffer slot to begin binding from.
* \param storage_buffers an array of storage buffers.
* \param num_bindings the number of storage buffers to bind from the array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUFragmentStorageBuffers(
SDL_GPURenderPass *render_pass,
@@ -3245,7 +3313,7 @@ extern SDL_DECLSPEC void SDLCALL SDL_EndGPURenderPass(
*
* \sa SDL_EndGPUComputePass
*/
-extern SDL_DECLSPEC SDL_GPUComputePass *SDLCALL SDL_BeginGPUComputePass(
+extern SDL_DECLSPEC SDL_GPUComputePass * SDLCALL SDL_BeginGPUComputePass(
SDL_GPUCommandBuffer *command_buffer,
const SDL_GPUStorageTextureReadWriteBinding *storage_texture_bindings,
Uint32 num_storage_texture_bindings,
@@ -3269,6 +3337,9 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUComputePipeline(
*
* The textures must have been created with SDL_GPU_TEXTUREUSAGE_SAMPLER.
*
+ * Be sure your shader is set up according to the requirements documented in
+ * SDL_CreateGPUShader().
+ *
* \param compute_pass a compute pass handle.
* \param first_slot the compute sampler slot to begin binding from.
* \param texture_sampler_bindings an array of texture-sampler binding
@@ -3277,6 +3348,8 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUComputePipeline(
* array.
*
* \since This function is available since SDL 3.2.0.
+ *
+ * \sa SDL_CreateGPUShader
*/
extern SDL_DECLSPEC void SDLCALL SDL_BindGPUComputeSamplers(
SDL_GPUComputePass *compute_pass,
@@ -3290,12 +3363,17 @@ extern SDL_DECLSPEC void SDLCALL SDL_BindGPUComputeSamplers(
* These textures must have been c
(Patch may be truncated, please check the link at the top of this post.)