METAL is now broken with iOS 15.3.1 and build 3664

See below for more details.

(Original text edited by a moderator.)

1 Like

Metal is now broken with iOS 15.3.1, perhaps earlier iOS, too. I’ve been releasing Metal only builds for months, and somehow, I never saw that it didn’t work with iOS version 9.x until today. I wish I knew this.

I don’t know if the issue is the version of iOS or a build of Solar2D. I’m currently using 3664 - I get a black screen from the start of the app, but it stays in memory and reports to the console as if my game is functioning perfectly.

Essentially, this means that Metal support should be disabled, IMHO. Because developers like me may also miss these all-important reports that Metal doesn’t work in certain circumstances.

Does anyone know if Apple is going to require Metal-only support at some point, or have they given up on that?

1 Like

Yes, it’s still not working - sound works fine and the game continues on as if everything is working fine WITH A BLACK SCREEN. :frowning:

Hi!

I took the liberty of moving your replies from the other thread to here. It’s a lot better to keep these replies here as they are important and can now be found under a correct, very descriptive title. The post that these replies were originally added to was about a developer asking if Solar2D can build for all iOS versions.

1 Like

@vlads how can I force the Build dialog box NOT to default to Metal, since it results in a black screen?

I would recommend to target iOS and higher for metal builds for now. iOS 8 was released in 2014, it’s very old and hard to support metal on in the form we have it now.
iphone = {

    plist = {

    MinimumOSVersion = “10.0”,

    },

},

This isn’t going to help NOW, because it’s broken for iOS 15.3.1.

It depends on what plugins and what you are doing. Some of my games are broken and others work perfectly fine. I can reproduce the error before 15.3.1 and is the main reason why I stopped using Metal (that and the fact that I didn’t see any benefits in my games).

For example, I just tried Palabras metal build on 15.3.1 and it works as expected. At one point it was the applovin plugin that I am not using currently, but not sure what particular plugin is causing the problem for you.

@agramonte I’m using the following plugins:

    ["plugin.facebook.v4a"]
    ["plugin.notifications.v2"]
    ["plugin.gamecenter"]
    ["plugin.appleSignIn"]
    ["plugin.google.iap.billing"]
    ["CoronaProvider.native.popup.social"]
    ["CoronaProvider.native.popup.activity"]
    ["plugin.firebaseAuth"]
    ["plugin.googleSignIn"]
    ['plugin.att']
    ["plugin.ironSource"]
    ["plugin.facebookIron"]
    ["plugin.admobIron"]

Try removing all the plugins first and then if it works it is one of the plugins. If it is one of the plugins, I would start with the monetization plugins. I don’t have access to half the plugins on your list or I would try to reproduce it.

I agree with @troylyndon, it would be great if the default were not Metal, since, as @agramonte pointed out, there seems to be no advantage to using it, and, if you have an installed user base of people on iOS 9, there is a substantial downside if you accidentally ship a build that is made with Metal.

As it stands, I have a preflight checklist that includes making sure the target SDK is not set to Metal. (That, and I check every final build on an old iPad running iOS9 before I ship.)

Ok figured it is out. The error is this:

ERROR: A shader failed to compile. To see errors, add the following to the top of your main.lua:
	display.setDefault( 'isShaderCompilerVerbose', true )

And it is caused by this plugin:

["plugin.admobIron"] = {
         publisherId = "tech.scotth",
         supportedPlatforms =
         {
             android = { url="https://solar2dmarketplace.com/getShared?subFolder=ironsource&sharedName=admob&type=Android" },
             iphone = { url="http://solar2dmarketplace.com/getShared?subFolder=ironsource&sharedName=admob&type=iOS" },
         },

Just remove that plugin and the error goes away for the Metal build.

Tested on the following devices:
iPhone XR 15.3.1 (fails with ironadmob)
iPhone 7 14.5.1 (fails with ironadmob)

1 Like

@Scott_Harrison are you able to fix this?

I also just tried with the facebookIron and had the same issue. The issue goes away if I remove both facebookIron and admobIron. Please note that I don’t have access to plugin.ironsource so you might have to remove that one also if you want to build for Metal.

This time I only tested on:
iPhone 7 14.5.1

1 Like

Here is the thread when @Markus_Ranner first discovered the issue. I was not able to fix it for appodeal mostly because I can’t see the real error and I would have to go through the source code to figure it out and I don’t build with Metal because of this issue. As a note adding that value to the top of the main.lua file changes nothing.

1 Like

Looking into it

Should be fixed now, please rebuild

still a black screen - here is my more complete list of plugins.

    ["plugin.facebook.v4a"] = { publisherId = "com.coronalabs", },
    
    ["plugin.notifications.v2"] = { publisherId = "com.coronalabs" },

    ["plugin.gamecenter"]={publisherId="tech.scotth"},  

    ["plugin.appleSignIn"]={publisherId="tech.scotth"},
        
    ["plugin.google.iap.billing"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android"] = true } },

    ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs" },
    
    ["CoronaProvider.native.popup.activity"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true } },

    ["plugin.googleSignIn"] = { publisherId = "tech.scotth",marketplaceId = "oljr9d" },

    ["plugin.firebaseAuth"] =	{ publisherId="tech.scotth",marketplaceId = "oljr9d" },
    
    ['plugin.att'] = { publisherId = 'com.solar2d',supportedPlatforms = { ["iphone"] = true, ["android"] = false } },
    
    ["plugin.ironSource"] = {publisherId = "tech.scotth",marketplaceId = "oljr9d"},
    
    ["plugin.facebookIron"] = {
        publisherId = "tech.scotth",
        supportedPlatforms =
        {
            android = { url="https://solar2dmarketplace.com/getShared?subFolder=ironsource&sharedName=facebook&type=Android" },
            iphone = { url="https://solar2dmarketplace.com/getShared?subFolder=ironsource&sharedName=facebook&type=iOS" },
        }
    },
    
    ["plugin.admobIron"] = {
        publisherId = "tech.scotth",
        supportedPlatforms =
        {
            android = { url="https://solar2dmarketplace.com/getShared?subFolder=ironsource&sharedName=admob&type=Android" },
            iphone = { url="http://solar2dmarketplace.com/getShared?subFolder=ironsource&sharedName=admob&type=iOS" },
        },
    },

btw, I’m also trying to track down why my Google Sign-in stopped working But having said this, I don’t want to distract from the primary purpose of this Topic, which is that Metal is now broken.

I am going to DM you my sample project but I cannot get a crash with your build.settings using metal on my iPhone running 15.3.1