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 |
Source: turanszkij/WickedEngine