Skip to content

Conversation

@Niminem
Copy link

@Niminem Niminem commented Nov 17, 2025

This PR updates the SDL3 GPU backend to use raw MSL shaders on macOS and MetalLib shaders on iOS. Some macOS systems supported by SDL_GPU cannot load the provided MetalLib because their GPU does not support the required Metal language version (3.1). Using MSL source resolves the issue.

Note that while SDL3 GPU supports macOS 10.14+, Metal library version 3.1 is only available on macOS 14 Sonoma or later. This causes MetalLib pipeline creation to fail on older but still SDL_GPU-supported macOS systems.

iOS continues to use MetalLib because all devices supported by SDL3 GPU (A9 and newer) fully support it, and Apple does not allow runtime shader compilation on iOS.

Brief Technical Notes

  • Added TARGET_OS_OSX / TARGET_OS_IPHONE branching.
  • macOS: SDL_GPU_SHADERFORMAT_MSL using the new msl_vertex / msl_fragment arrays.
  • iOS: SDL_GPU_SHADERFORMAT_METALLIB unchanged, using existing MetalLib arrays.
  • Added a brief installation note in backends/sdlgpu3/build_instructions.txt.
  • Added MSL shaderformat support to the SDL3 GPU example in /examples/.
  • No changes for non-Apple platforms.

Testing

  • macOS: pipeline creation succeeds with MSL shaders.
  • iOS: MetalLib shaders work as before.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants