-
-
Notifications
You must be signed in to change notification settings - Fork 21.3k
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
Scenes with 3D nodes do not start on Android with Adreno 3xx and 5xx GPUs #12816
Comments
Present the same error on LG G3: Chipset | Qualcomm MSM8974AC Snapdragon 801 |
Logcat with opengl calls: Maybe a driver problem? |
probably something incompatible with Adreno 3xx, will need one to test. |
Probably, a friend tested on an LG G2, with adreno 3xx, same problem, |
The screen just freezes, no warnings, no logs, no infos, etc |
I have a Xiaomi Redmi 3s Pro with Adreno 505 and have the same error. |
Encountered similar behaviour on some Adreno devices - the reason was that linking scene.glsl shader ( After removing shader parts related to Not entirely sure this is the same issue though. |
Same here with Adreno 305. Some friends who own devices with Adreno gpus reported the same. |
@endragor can you provide steps (or a branch)? I'm not familiar with Godot renderer backstages. |
See endragor@02b12c9. I haven't checked recently if those removals help though, it could be that something new was added that also causes hanging. |
@endragor, does this removal of the shader solves the android crash problem? |
@Alexia-AT-Digitecnology It solves freezing at the beginning which is mentioned in the OP. I didn't see mentions of crashes here, so I'm not sure which problem you are referring to. |
@endragor , when you run a Godot 3d project into a cellphone with adreno chipset, it crashes. It happens to me and a lot of friends. And mali chipsets too. |
@Alexia-AT-Digitecnology then it is likely a different issue - please create a new issue on GitHub and attach a sample project to it. |
There is another issue related: #12192 |
Thank you, @endragor. |
UWP also hangs if you add any mesh, I wonder if it's related. ANGLE seems to get into an infinite loop. |
@akien-mga |
Those problems in Godot come specifically from bad implementations of GLES3 by GPUs that are still in use. You can also search for benchmarks of other engines that can target both GLES2 and GLES3 (UE4, Unity) - same scene on the same device has significantly worse performance when rendered with GLES3. Or you can build your own benchmark, if you are doubtful. I'm not sure how you draw conclusions from Wikipedia articles - there are no stats as to how many devices are actually in use. Unity had hardware stats page that could be used to determine which hardware mobile gamers actually use right now. It's down now for some reason, but the archived version can be accessed here: https://web.archive.org/web/20170729230854/http://hwstats.unity3d.com:80/mobile/gpu.html. So according to it about 35% of devices support GLES3. Even if it was 63.6%, as you claim, releasing a GLES3 game would mean discarding 36.4% of the market, which does fall into my measure of significant. |
@endragor
All the other items where GLE2 is mentioned occupy a small percentage. And if you put them all together, you will end up with about 36.4% of the market with GLES2. What does the link from @akien-mga: I honestly do not understand why, after the team has done such a huge piece of work to support GLES3, suddenly you all start saying that GLES3 is not a thoroughfare for drawing graphics and in the foreseeable future it will be supplemented with a targeted GLES2 renderer! PS |
Yeah perhaps those stats are more accurate and there are 36.4% devices not supporting GLES 3, but, as I said, that's still significant in my opinion. Plus those who claim they support GLES3 may support it partially or with many bugs in driver implementation. GLES3 was implemented mainly as a target for higher end devices and with advanced features in mind. There are things that you can't do with GLES2 or can only do them with significant sacrifices, while they can be implemented easily in GLES3. Some of those were listed by @reduz here: #14869 (comment) . Now, I myself am still not convinced whether GLES3 is really a viable platform for complex games as there is evidence that its performance is poor in some cases, and I'm yet to see a game/demo with a complex scene and decent performance. I can't answer the question (1) as it was @reduz's decision. Even if the answer is "it was fun for him to explore modern rendering techniques that cannot be implemented with GLES2", that works for me. It's work he was doing for free at the time, and as a result we are getting a FREE engine with astonishing capabilities and ease of use. And you just have to wait for a couple of months to get a working GLES2 renderer. The answer to (2) is that it's not a priority to improve GLES3 on mobile as GLES2 will be the standard on that platform, so there is no point in adding mobile-specific hacks that will affect other platforms. For other platforms fixing GLES3 renderer is a priority, as far as I can tell. If you are aware of Radeon-specific issues, do report them, and there are some in the backlog scheduled for 3.1. |
So be it. However, based on experience, I can say that a couple of months will not be enough to release Godot 3.1. When I designed Godot 3.0, I gave the most pescemal predictions from all on the forum. And they did not come true, it took more time than I expected. There is a suspicion that the same thing will happen this time. And that would make a correction to the already existing GLES3 will require less effort. And in a month you can release Godot 3.0.1 PS. CPU AMD A10 PRO-7800B R7 Compute Cores 4C+8G |
sure, there are part phone only support gles2, not gles3. but they are old, the ram entirely small. other word, the one who uses the old phone, will not play 3D game. even can't use social app. like wechat, qq. not all the market is the qualified market. maybe it's better to do some trick to make godot-gles3 work well on adreno hardware. better including new feather ,sth like the one--tessellation. |
@aron3097 You say it right, but everybody doesn't care. :) |
Just for the logs, i have the same issue on Adreno 304 on a Lenovo TV-X103F (10" Lenovo Essential tablet with Qualcomm 1.3 quadcore) https://hastebin.com/calevamoqa.vbs Is it possible to use a small whitelist for GPU's to fall back to GLES2? |
I found one more, HTC Desire 530, Adreno 304 |
Google Pixel 2 Adreno 540
FWIW Issue isn't reproducible on Google Nexus 5X on the same Android Build (with the same project & export settings) which has an Adreno 418 |
Was reading some other troubleshooting references related to this and I noted that in many of the cases the Device Manufacturer's ended up fixing this through Webview updates before Android 7. Since Webview is tied to Chrome version now, I thought I'd try updating the Pixel 2 to Android P beta and the issue is gone. |
Kicking to 3.2, where it will probably be closed due GLES3 renderer being removed. |
The bug reads more like "Godot doesn't support some Adreno GPUs", not "GLES3 backend doesn't support <...>". This should be fixed in 3.1 with GLES2 backend, so I think it needs to be tested and closed - otherwise people will think Godot still doesn't support mobile. |
This issue should now be fixed when using the GLES2 renderer in 3.1 (currently beta 2). For GLES3, this sadly can't/won't be fixed. |
Confirm. The lighting doesn't work but at least it doesn't crash. |
Thanks, closing as "fixed" (as best as we can, i.e. by providing a different renderer). Specific bugs with the GLES2 renderer on such hardware should be reported in new issues, if not done already. |
Bugsquad edit:
Adreno GPU drivers have broken OpenGL ES 3.0 support, and there's not much we can do about it without crippling Godot's renderer for correct driver implementations from other GPU vendors.
The fix will come in Godot 3.1 with the new OpenGL ES 2.0 renderer, which should run fine on Adreno GPUs and will be enforced when such GPUs are detected (at least until we get test reports that Adreno eventually fixed their bogus drivers for OpenGL ES 3.0).
In the meantime, a potential workaround is documented in #12816 (comment)
Operating system or device, Godot version, GPU Model and driver (if graphics related):
Google Nexus 5 (Android 6.0.1), Godot Engine v3.0.alpha.build2, Qualcomm Adreno 330 (OpenGL ES 3.0).
Additional info:
Godot Engine build and export templates were downloaded from here.
Issue description:
If scene contains some 3D-related nodes (e.g.
MeshInstance
with primitive mesh), then application freezes at Godot Engine splash screen.adb logcat
:Text file format:
logcat.txt
Possible references:
#12117
#11693
Steps to reproduce:
Link to minimal example project:
nexus-5-3d-test.zip
The text was updated successfully, but these errors were encountered: