Mac - Global Shader Cache is missing

Hi,

I am trying to deploy a Mac Application to the Mac store.

I have followed all the steps to sign the application and all of the libraries included in the build.
All is fine until I submit to Apple, where they come back and say that the application is unable to open due to:

132357-temp..zjxzmkgg.png

Now when I built the application out, I ran the “Cook content for Mac” option then build it out for Mac.

As suggested by other users, I toggled the “Include all content in the Cooking process” toggle, but this issue still persists. Other users also suggested the OpenGL toggles be checked, however when apple ran it that time they rejected it because OpenGL is going to be depreciated and removed in a later build…

Any ideas how to fix this issue?

Thanks

The apple message said:
This review was conducted on an iMac running macOS 10.12

Would that be a wise thing to do? Im not really sure what I can do to get around this as I have tried most of the suggestions on other threads.

Would this still occur if I updated unreal?

Also, I can see in the build that unreal has generated the Metal files so it must be falling back to OpenGL but not being able to find the files.

Do you know what version of macOS did they run it on? UE4 4.14 would by default try to fall back to OpenGL on macOS older than 10.11.4, but then it would notify the user that this is not optimal and OpenGL is deprecated. Or maybe they are trying to run on pre-2012 Mac that doesn’t support Metal?

If your application works OK in OpenGL, the easiest solution would be to simply remove the message box saying that OpenGL is deprecated in FMacOpenGL::ProcessExtensions.

I cannot check this quickly at the moment, but I think that UE4 would try to fall back to OpenGL on 10.12 and 10.12.1 as well due to the bugs in Metal in these versions of macOS, so that might explain it.

I’d say that the best solution depends on how graphics intensive your application is. If it runs well in OpenGL then enabling OpenGL shaders cooking and removing the warning might be the best. Otherwise you might consider changing the Info.plist and making the app require macOS 10.12.2 (or even higher, as 10.12.3 and 10.12.4 contain quite a few important driver fixes). We did remove OpenGL support for Mac in 4.15.

I wonder what Apple would say if your app would require 10.11.4 or higher, but on 10.12 and 10.12.1 it would show a message box saying that running on macOS requires 10.12.2…

Yeah, that sounds right, but as I said, I cannot quickly take a look at 4.14 source code at the moment, so I cannot say for sure.

Yeah, interesting.
I just had a quick look through the OpenGL source for Unreal, there is a call to get a bool from the Game Input ini file (MacOpenGLDeprecated). Am I right in saying that if I add that to the ini file as True then the warning will be suppressed?

Thanks for your input.

This is from OpenGLMac.cpp:

const static FString ConfigSection = TEXT("SuppressableDialogs");
	
bool bShouldSuppressDialog = false;

if (GConfig)
{
	GConfig->GetBool( *ConfigSection, TEXT("MacOpenGLDeprecated"), bShouldSuppressDialog, GGameUserSettingsIni );
}
FText LocalizedMsg = FText::Format(NSLOCTEXT("MessageDialog", "MessageMacOpenGLDeprecated","Support for running Unreal Engine 4 using OpenGL on macOS is deprecated and will be removed in a future release. Unreal Engine 4 may not render correctly and may run at substantially reduced performance."),Args);
		
		if (!bShouldSuppressDialog)
		{
			FPlatformMisc::MessageBoxExt(EAppMsgType::Ok,
									 *LocalizedMsg.ToString(),
									 *NSLOCTEXT("MessageDialog", "TitleMacOpenGLDeprecated", "WARNING: OpenGL on macOS Deprecated").ToString());
		}
		else
		{
			UE_LOG(LogRHI, Warning, TEXT("%s: %s"), *NSLOCTEXT("MessageDialog", "TitleMacOpenGLDeprecated", "WARNING: OpenGL on macOS Deprecated").ToString(), *LocalizedMsg.ToString());
		}

If I understand correctly, I should just be able to add MacOpenGLDeprecated: True to the GameUserSettings.ini and the dialog will not show. Does this look right?

Yes, that should solve the problem.

Hey, so I added the MacOpenGLDeprecated:True to my GameUserSettings.ini but the OpenGL warning still pops up. Any idea why?

Please read the solution to the following AnswerHub post and let me know if it does not resolve your issue: I cannot launch my project on Mac OSX

I resolved this issue by building out to include OpenGL data (which is removed in the latest version IIRC) and adding a config value to disable the opengl Warning message.

 [SuppressableDialogs]
 MacOpenGLDeprecated=True