Search Issue Tracker

Won't Fix

Won't Fix in 5.5.X, 5.6.X

Votes

5

Found in

5.5.1p3

Issue ID

905722

Regression

No

[iOS][Metal] Parsing shaders takes a very long time with 'Compiler connection failed' error on iOS 8

iOS

-

iOS 8 devices fail compiling shaders with 'Compiler connection failed' error.

Steps to reproduce:
1) Open the latest attached project (905722_iOS8.zip).
2) Build for iOS.
3) Run on a device.
4) Press the UI button on the screen.

The button press should load another scene. On iOS devices, it takes around 15 - 20 seconds to load 'Compiler connection failed' error is logged in Xcode's console along with some shader code after the scene has finished loading.
On iOS 10 devices, the scene loads immediately.
This doesn't occur with OpenGL ES.

Reproduced on:
2017.1.0b3, 5.5.1p3

Test devices:
iPhone Plus 6 iOS 8.0
iPad Air iOS 8.1.1
iPhone 5S iOS 8.2.2 - reproduced by the user

Comments (2)

  1. hyunlee

    Aug 24, 2017 06:57

    There is a workaround that makes Metal compatible with ios 9 or newer.

    [UnityAppController+Rendering.mm]
    static int SelectRenderingAPIImpl()
    {
    #if UNITY_CAN_USE_METAL
    - const bool canSupportMetal = _ios80orNewer;
    + // HL: hotfix
    + const bool canSupportMetal = _ios90orNewer;
    #else
    const bool canSupportMetal = false;
    #endif

    ...
    }

    Unity version: 5.6.1p3
    Test devices:
    iPad Mini3 (8.3) - OpenGLES, no problem
    iPhone6 (10.3.3) - Metal, no problem
    iPhoneSE (9.3.2) - Metal, no problem

  2. o2361800

    Aug 08, 2017 15:33

    same problem; reproduced in 5.5.3p1 & 5.5.4p2, affects single device (ipod a1574) running ios 8.4.
    It occures when automatic graphics api setting is on (on this device Metal will be default); when OpenGL is forced, it won't occure.
    Problem exists even on empty scene + only cube with default Standard shader (cube must be inside camera's frustum).

Add comment

Log in to post comment