Search Issue Tracker
[Metal] API provides 32-bit depth texture when a 16-bit texture is expected
How to reproduce:
1. Open attached project
2. Build to iOS
3. Open in Xcode
4. In Xcode, go to Product -> Scheme -> Edit Scheme...
5. In the Options tab change the GPU Frame Capture setting to Metal
6. Build to device
- Note that it crashes before getting to the Splash Screen with this error:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-56.7/ToolsLayers/Debug/MTLDebugRenderCommandEncoder.mm:1602: failed assertion `MTLPixelFormat of texture [TempBuffer 2 1920x1080 (MTLPixelFormatDepth32Float)] bound at index 1 is incompatible with texture parameter [MTLDataTypeHalf _CameraDepthTexture]. MTLPixelFormatDepth32Float is compatible with texture data types type(s) (
- Reproduced in Version 5.2.4f1 (98095704e6fe), Version 5.3.4p2 (fdf8d87c549e), Version 5.4.0b14 (0d4790749194) on an iPhone 6+ (iOS 9.3.1)
- Not reproducible on an iPhone 5 (iOS 7.1)
As a workaround: please disable the Metal validation setting in the Xcode schema options
Proper solution: search for CameraDepthTexture in your shaders and verify that it uses sampler2D_float, not just sampler2D. Note that ignoring this issue may crash the GPU driver on certain hardware.
Unity will have a warning for this in the future.
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
- [Android] TouchScreenKeyboard.active triggers an error when set to false in the Player
- [Android] Auto-correct suggestions show up over the "hidden zone" when typing text with TouchScreenKeyboard
- [Android] Clicks on the "hidden zone" remain blocked when TouchScreenKeyboard is active
- [URP][DX12] Black Game View window when URP Dynamic Resolution is enabled
- VideoPlayer.Time is not updated when seeking is completed
Nov 02, 2016 16:05
It's _CameraDepthTexture - it says it in the error message.
If you go to Edit Scheme... / Options and set Metal API Validation to Disabled, you'll be ok.
Oct 12, 2016 21:26
Any way to figure out which texture is at fault? Maybe a workaround is to resize the texture or add/remove alpha layer?
Oct 12, 2016 19:28
Just verified this is still an issue in 5.4.1p4. As a side note, it only throws the exception for me when launching the app through Xcode, if I launch it directly on device, then the app continues to run.
Sep 28, 2016 21:04
Similar issue here on 5.3.4p4 with iOS10 / XCode 8. It is working fine on the same Unity version in iOS9 / XCode 7.
Sep 26, 2016 12:00
We do have same issues, had to manually switch to OpenGLES2. Now we can alt least work with the app,
Sep 14, 2016 22:48
Instead of adjusting settings in Xcode, in Unity I set the Graphics API in iOS Player Settings to "Metal", unchecking "Auto Graphics API".
I can reproduce the crash with Unity 5.4.0f3 & 5.4.1f1, building with Xcode 8 on device running iOS 10.0.1 (iPad Mini 2 and iPhone 6s), but not iOS 9.3.5 (iPad Air 2). I have not tried side loading a build from Xcode 7