Apple platform feature support status

Author: turanszkijCreated Jan 5, 2026Updated Aug 18, 2026
Labelsmac-os

Status of incomplete features for Apple platform:

Feature Status Notes
Block compressed texture copy Not supported like in DX12 or Vulkan as textureUINT -> textureBC copy, only buffer -> textureBC copy is supported. Workaround implemented with an extra texture->buffer->texture copy.
Sparse resources Metal 4 supports placement sparse mappings, but crashes without info when using it in terrain generation. For now the terrain rendering uses a workaround with extra tile copying between UINT -> BC textures on Metal API
MSAA resolve granularity Right now it works but it has missing features, cannot resolve multiple specific slices. Resolving cubemap seems to work (maybe luck) although specification in API can only target one slice.
Clear UAV texture UINT Not supported but workaround can be implemented with compute shader
Clear UAV buffer UINT Not supported same way as DX12/Vulkan as clearing uint32_t, only uint8_t. Can be used for zero clear, otherwise workaround can be implemented with compute shader
RGB32Float format not supported for formatted buffers (Buffer<T> in hlsl) Workaround: meshes cannot select RGB32Float vertex format. This will result in memory waste in meshes that don't use alpha channel in position vertex buffers but use full 32-bit floats. This will be true for non-quantized mesh without wind weights (for example terrain chunks). This can also produce other issues that haven't been found yet.
Geometry shader Work in progress, one thing is missing, looks like for compiling vertex shader for geometry emulation it will need to have input layout ready, this could be a blocker because it would need to modify engine architecture.
Tessellation shader Todo
Multi draw indirect Todo
Occlusion culling Done
Occlusion culling with predication Not supported
Mesh shader, Amplification shader Done, minor workaround was used: mesh shader without pixel shader not allowed in Metal, so a dummy PS is always used in mesh shader pipeline
Async compute, async copy Done
Ray tracing works, some effects have some issues, for example path tracing becoming extremely slow
Variable rate shading Todo, per-draw VRS not supported by Metal
HDR display output Todo
Video decoding Todo
Audio Done using miniaudio, but some features are missing (miniaudio integration by @brakhane )
Controller Done using GameController API
Pen/touch pressure Todo
SetCursorFromFile (custom cursor image) Done