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

Bump the minimum Android target api to 21 (Android Lollipop) #67610

Merged

Conversation

m4gr3d
Copy link
Contributor

@m4gr3d m4gr3d commented Oct 19, 2022

Following the discussion below, bump the minimum Android target api to 21 (Android 5 Lollipop).

Fixes #62464
Fixes #63945

According to Google stats, raising the min supported version to Android 5 provides 98.8% device coverage.

Screen Shot 2022-10-19 at 9 27 07 AM

@m4gr3d m4gr3d added this to the 4.0 milestone Oct 19, 2022
@m4gr3d m4gr3d requested a review from BastiaanOlij October 19, 2022 04:45
@m4gr3d m4gr3d requested a review from a team as a code owner October 19, 2022 04:45
@m4gr3d m4gr3d force-pushed the add_check_for_min_ndk_target_api_main branch 2 times, most recently from 0db7466 to 2f04e08 Compare October 19, 2022 05:24
@clayjohn
Copy link
Member

Does this also apply when using the OpenGL renderer?

I'd be hesitant to drop support for devices that can run the OpenGL renderer still.

@m4gr3d
Copy link
Contributor Author

m4gr3d commented Oct 19, 2022

Does this also apply when using the OpenGL renderer?

It shouldn't, but that would require us to provide separate template builds for Android, one with Vulkan enabled and the other without.

It's worth discussing whether we're willing to increase the build and maintenance complexity of fully disabling Vulkan in a 4.0 build.

@himaghnam
Copy link

I think Android 7 as a minimum requirements is fine, no need for a seperate build template.

@m4gr3d m4gr3d force-pushed the add_check_for_min_ndk_target_api_main branch from 2f04e08 to 6b0daa2 Compare October 19, 2022 16:35
@akien-mga
Copy link
Member

It shouldn't, but that would require us to provide separate template builds for Android, one with Vulkan enabled and the other without.

We should be able to load the Vulkan library dynamically, and fallback to GLES3 if not present, no? That's the same principle for GLESv2 and GLESv3 support in 3.x.

For 3.x I think GLESv3 is provided as a stub even when not supported so we can fallback, but for Vulkan it should be even simpler as we use Volk which dlopens the Vulkan lib. If it fails initializing, we can fallback.

So unless there's very significant benefit for moving to 7.0, I would prefer not dropping ~6% of the market.

@m4gr3d
Copy link
Contributor Author

m4gr3d commented Oct 19, 2022

We should be able to load the Vulkan library dynamically, and fallback to GLES3 if not present, no? That's the same principle for GLESv2 and GLESv3 support in 3.x.

According to this blog post that should be possible, though I'd like to get @BastiaanOlij take on it since he has been driving the mobile renderer implementation.

@Calinou
Copy link
Member

Calinou commented Oct 19, 2022

I'd prefer to have the baseline on Android 6.0 – ideally 5.1, but I recognize that may be difficult. We probably don't need to support Android below 6.0 when Godot 4.0 is released, but I think there's still a fair amount of users on Android 6.0 wishing to use the OpenGL renderer.

Also, in my experience, Vulkan support is pretty broken on Android 7 and 8 anyway. The first version where it's actually usable is Android 9. If you actually set the baseline for good Vulkan support, it would be Android 9, which is too high.

@m4gr3d m4gr3d force-pushed the add_check_for_min_ndk_target_api_main branch 2 times, most recently from 474439c to f521a45 Compare November 30, 2022 18:39
@m4gr3d m4gr3d changed the title Updating the minimum Android target api for proper Vulkan support Bump the minimum Android target api to 21 (Android Lollipop) Nov 30, 2022
@m4gr3d m4gr3d changed the title Bump the minimum Android target api to 21 (Android Lollipop) WIP - Bump the minimum Android target api to 21 (Android Lollipop) Nov 30, 2022
@m4gr3d m4gr3d added bug and removed discussion labels Nov 30, 2022
@m4gr3d m4gr3d force-pushed the add_check_for_min_ndk_target_api_main branch from f521a45 to 2aba13e Compare November 30, 2022 19:17
@m4gr3d m4gr3d changed the title WIP - Bump the minimum Android target api to 21 (Android Lollipop) Bump the minimum Android target api to 21 (Android Lollipop) Nov 30, 2022
@m4gr3d
Copy link
Contributor Author

m4gr3d commented Nov 30, 2022

Follow-up update:

Updated the min supported version to 21 (Android 5 Lollipop). This provides 98.8% device coverage and addresses the issues reported in #62464 & #63945

Copy link
Member

@akien-mga akien-mga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bumping to API 21 makes perfect sense for Godot 4.0. OpenGL ES 3.0 support pre-Android 5 would anyway be quite unreliable, and any Google Play release now needs to support x86_64/arm64 so API 21 is a requirement.

@akien-mga akien-mga merged commit 0ff8742 into godotengine:master Nov 30, 2022
@akien-mga
Copy link
Member

Thanks!

@m4gr3d m4gr3d deleted the add_check_for_min_ndk_target_api_main branch November 30, 2022 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants