Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS Mobile Renderer Black Screen #99682

Open
TCROC opened this issue Nov 25, 2024 · 6 comments
Open

iOS Mobile Renderer Black Screen #99682

TCROC opened this issue Nov 25, 2024 · 6 comments

Comments

@TCROC
Copy link
Contributor

TCROC commented Nov 25, 2024

Tested versions

  • Reproduceable In: 4.4.dev.mono.custom_build.f0e971730

System information

Godot v4.4.dev.mono (f0e9717) - macOS 15.0.1 - Multi-window, 1 monitor - Metal (Forward+) - integrated Apple M2 (Apple8) - Apple M2 (8 threads)

Issue description

When exporting to iOS set to use the mobile renderer, it renders with a black screen:

Image

When exporting to iOS set to use the Forward+ renderer, it renders just fine:

Image

Here are the respective logs:

Note

The Forward+ Renderer Log has many errors, but that is the one that actually renders correctly. The Mobile Renderer log only has 1 error, but renders with a black screen.

Mobile Renderer Log

Godot Engine v4.4.dev.mono.custom_build.f0e971730 (2024-11-16 22:16:24 UTC) - https://godotengine.org
Metal 3.1 - Forward Mobile - Using Device #0: Apple - Apple A12 GPU (Apple5)

ERROR: Mouse is not supported by this display server.
at: mouse_get_position (servers/display_server.cpp:508)

Forward+ Renderer Log

forward_plus_log.txt

Steps to reproduce

  1. Use Godot with double precision and mono support.
    • I'm not certain if this is necessary as I haven't tested other builds, but that is what I am currently using.
  2. Open the MRP
  3. Export to iOS
  4. Install to an iPhone
  5. See that a black screen renders
  6. Change project settings mobile rendering method to Forward+
  7. Export to IOS
  8. Install to an iPhone
  9. See that cube renders

Minimal reproduction project (MRP)

mrp.zip

Edit:

Here's the table of tested snapshots:

✅ = vulkan mobile works as expected
❌ = vulkan mobile blank screen

Version Status
4.3.stable
4.4-dev1
4.4-dev2 ?
4.4-dev3 ?
4.4-dev4 ?
4.4-dev5
@Calinou
Copy link
Member

Calinou commented Nov 25, 2024

Can you reproduce this on 4.3.stable?

@TCROC
Copy link
Contributor Author

TCROC commented Nov 25, 2024

I will go check

@TCROC
Copy link
Contributor Author

TCROC commented Nov 25, 2024

I initially tried to test in 4.3 by building from source but was unable to because my Mac OS received an LLVM update. And this version of LLVM can no longer compile code prior to that fix we put in a while back where LLVM rolled out some breaking changes. But I do have good news! I was able to reproduce the issue with dev snapshots and confirm that things work as expected in 4.3-stable. So this is indeed a regression. I'm going to start bisecting, but there is the table of what I have tested so far:

✅ = vulkan mobile works as expected
❌ = vulkan mobile blank screen
? = untested

Version Status
4.3.stable
4.4-dev1 ?
4.4-dev2 ?
4.4-dev3 ?
4.4-dev4 ?
4.4-dev5

@TCROC
Copy link
Contributor Author

TCROC commented Nov 25, 2024

Also note that I reproduced this with normal Godot. It occurred in the 4.4-dev5 snapshot without mono support. And I believe those snapshots do not have double precision either right? Which would lead me to believe this issue is not related to mono support or double precision.

@TCROC
Copy link
Contributor Author

TCROC commented Nov 25, 2024

Version Status
4.3.stable
4.4-dev1
4.4-dev2 ?
4.4-dev3 ?
4.4-dev4 ?
4.4-dev5

So it was first introduced somewhere between 4.3.stable and 4.4-dev1.

@Calinou I found where it was introduced in regards to snapshots :).

@bruvzg
Copy link
Member

bruvzg commented Nov 26, 2024

Metal 3.1 - Forward Mobile - Using Device #0: Apple - Apple A12 GPU (Apple5)

Default backend for Mobile/Forward+ on macOS and iOS was changed to new Metal renderer. While Vulkan renderer should support A12 (it is the oldest SOC it should run on), I'm not sure what's the minimum requirement for Metal renderer. Try setting rendering/rendering_device/driver.ios in the project settings to vulkan.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants