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

☂️ Raise minimum macOS version from 10.13 to 10.14 for Flutter Desktop apps #114445

Closed
9 tasks done
cbracken opened this issue Nov 1, 2022 · 3 comments
Closed
9 tasks done
Assignees
Labels
a: desktop Running on desktop c: proposal A detailed proposal for a change to Flutter P3 Issues that are less important to the Flutter project platform-mac Building on or for macOS specifically tool Affects the "flutter" command-line tool. See also t: labels.

Comments

@cbracken
Copy link
Member

cbracken commented Nov 1, 2022

What is being proposed?

Raise the minimum supported macOS version to 10.14 (Mojave), dropping support for the current minimum supported version, macOS 10.13 (High Sierra). As Mojave requires Metal support, this will also eliminate the OpenGL backend. Support for the following hardware will be dropped:

  • 2009-2010 MacBook
  • 2010-2011 MacBook Pro
  • 2010-2011 MacBook Air
  • 2010-2011 Mac mini
  • 2009-2011 iMac
  • 2010 Mac Pro (unless GPU been upgraded to a Metal-capable GPU)

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Sub-tasks

Cleanups

Post-stable

At most, packages in the https://github.com/flutter/packages repo support current stable release and the two previous stable releases. When Flutter 3.7 becomes the "stable - 2" release:

This can be done via the following command, followed by whatever changes are necessary to clean up:

dart script/tool/bin/flutter_plugin_tools.dart update-min-sdk \
    --flutter-min=3.7.0          \
    --run-on-changed-packages    \
    --base-branch=upstream/main
@stuartmorgan
Copy link
Contributor

  • Update all existing Flutter plugins to macOS 10.14

This one is also post-stable, since our policy is to support stable with our packages.

@danagbemava-nc danagbemava-nc added in triage Presently being triaged by the triage team tool Affects the "flutter" command-line tool. See also t: labels. platform-mac Building on or for macOS specifically c: proposal A detailed proposal for a change to Flutter a: desktop Running on desktop and removed in triage Presently being triaged by the triage team labels Nov 2, 2022
@cbracken
Copy link
Member Author

cbracken commented Nov 2, 2022

Merged the two items into one.

@gspencergoog gspencergoog added the P3 Issues that are less important to the Flutter project label Nov 3, 2022
cbracken added a commit that referenced this issue Nov 7, 2022
Increases the minimum macOS deployment target from macOS 10.13 (High Sierra) to 10.14 (Mojave) in the macOS app templates.

Includes:
* Update migration for macOS 10.11 apps to upgrade to 10.14
* Adds migration for macOS 10.13 apps to upgrade to 10.14
* Apply migration to all examples, and integration tests

This does not increase version in the plugin templates since those will need to wait until the 10.14 framework rolls to stable channel, so new plugins can build with apps created with `flutter create` on stable channel.

Issue: #114445
See RFC: http://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4
See previous patch: #107689
cbracken added a commit to cbracken/flutter_buildroot that referenced this issue Nov 7, 2022
Increases the minimum macOS SDK and the macOS deployment target from
10.13 to 10.14.

Also enables aligned allocations on macOS. We previously set
`-fno-aligned-allocation` on macOS since it was unsupported for arm64
prior to macOS 10.14.

Issue: flutter/flutter#114445
cbracken added a commit to flutter/buildroot that referenced this issue Nov 7, 2022
Increases the minimum macOS SDK and the macOS deployment target from
10.13 to 10.14.

Also enables aligned allocations on macOS. We previously set
`-fno-aligned-allocation` on macOS since it was unsupported for arm64
prior to macOS 10.14.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 7, 2022
Includes:
* Increase minimum macOS SDK from 10.13 to 10.14 (flutter/buildroot#648)

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 8, 2022
In flutter/buildroot#648 (rolled to the engine in flutter#37380)
the minimum macOS SDK was bumped from 10.13 to 10.14. As of macOS 10.14,
Metal is available for all users. This eliminates the macOS OpenGL
rendering support code.

Note that this only removes the GL-specific code in the embedder. A
followup patch will land refactorings to clean up the remaining code,
for example, cases where a parent interface exists only because we had
both a GL and a Metal implementation. This is being does in two patches
in order to keep review clear and simple and to simplify rebases of any
outstanding patches that also touches this code.

Issue: flutter/flutter#114445
knopp pushed a commit to flutter/engine that referenced this issue Nov 9, 2022
In flutter/buildroot#648 (rolled to the engine in #37380)
the minimum macOS SDK was bumped from 10.13 to 10.14. As of macOS 10.14,
Metal is available for all users. This eliminates the macOS OpenGL
rendering support code.

Note that this only removes the GL-specific code in the embedder. A
followup patch will land refactorings to clean up the remaining code,
for example, cases where a parent interface exists only because we had
both a GL and a Metal implementation. This is being does in two patches
in order to keep review clear and simple and to simplify rebases of any
outstanding patches that also touches this code.

Issue: flutter/flutter#114445
naudzghebre pushed a commit to naudzghebre/engine that referenced this issue Nov 9, 2022
In flutter/buildroot#648 (rolled to the engine in flutter#37380)
the minimum macOS SDK was bumped from 10.13 to 10.14. As of macOS 10.14,
Metal is available for all users. This eliminates the macOS OpenGL
rendering support code.

Note that this only removes the GL-specific code in the embedder. A
followup patch will land refactorings to clean up the remaining code,
for example, cases where a parent interface exists only because we had
both a GL and a Metal implementation. This is being does in two patches
in order to keep review clear and simple and to simplify rebases of any
outstanding patches that also touches this code.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 10, 2022
Now that the macOS embedders have all been updated to use a minimum
macOS SDK of 10.14, eliminate the remaining @available checks dependent
on that version.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 10, 2022
Now that the macOS embedders have all been updated to use a minimum
macOS SDK of 10.14, eliminate the remaining @available checks dependent
on that version.

Issue: flutter/flutter#114445
auto-submit bot pushed a commit to flutter/engine that referenced this issue Nov 10, 2022
Now that the macOS embedders have all been updated to use a minimum
macOS SDK of 10.14, eliminate the remaining @available checks dependent
on that version.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 10, 2022
Eliminates an undef of VK_USE_PLATFORM_METAL_EXT that works around some
unguarded `@available` checks for macOS 10.13. Our minimum macOS SDK is
now macOS 10.14 so we can safely assume Metal support since it's a
requirement for macOS 10.14.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 10, 2022
Eliminates an undef of VK_USE_PLATFORM_METAL_EXT that works around some
unguarded `@available` checks for macOS 10.13. Our minimum macOS SDK is
now macOS 10.14 so we can safely assume Metal support since it's a
requirement for macOS 10.14.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 15, 2022
Now that OpenGL support in Flutter on macOS has been removed, the only
FlutterCompositor implementation is the Metal-based compositor. This
patch merges it into the FlutterCompositor base class since there's no
longer any reason to keep the interface separate from its implementation.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 17, 2022
Previously, external textures were modelled in the macOS embedder by a
top-level FlutterMacOSExternalTexture protocol with a single textureID
getter, and two implementations: FlutterExternalTextureGL and
FlutterExternalTextureMetal.

With the removal of OpenGL support from the macOS embedder, the only
remaining external texture implementation is Metal. This patch squashes
this set of types into a single FlutterExternalTexture class.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 17, 2022
Previously, external textures were modelled in the macOS embedder by a
top-level FlutterMacOSExternalTexture protocol with a single textureID
getter, and two implementations: FlutterExternalTextureGL and
FlutterExternalTextureMetal.

With the removal of OpenGL support from the macOS embedder, the only
remaining external texture implementation is Metal. This patch squashes
this set of types into a single FlutterExternalTexture class.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 17, 2022
Previously, FlutterSurfaceManager was a protocol with two concrete
implementations: FlutterGLSurfaceManager and FlutterMetalSurfaceManager.
Most of the implementation was in a shared superclass,
FlutterIOSurfaceManager, which called into the OpenGL or Metal-specific
subclass when backend-specific operations (such as allocating textures)
was required. It did so via a delegate pattern, wherein the subclasses
both implemented the FlutterIOSurfaceManagerDelegate protocol that
exposed the backend-specific functionality.

Now that only the Metal implementation remains, the delegate code can be
inlined into the calling functions, and the class hierarchy can be
squashed into a single concrete implementation class,
FlutterSurfaceManager, similar to how it was originally implemented in
flutter#21525 before we had two backends.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to flutter/engine that referenced this issue Nov 17, 2022
Previously, external textures were modelled in the macOS embedder by a
top-level FlutterMacOSExternalTexture protocol with a single textureID
getter, and two implementations: FlutterExternalTextureGL and
FlutterExternalTextureMetal.

With the removal of OpenGL support from the macOS embedder, the only
remaining external texture implementation is Metal. This patch squashes
this set of types into a single FlutterExternalTexture class.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to flutter/engine that referenced this issue Nov 17, 2022
Previously, FlutterSurfaceManager was a protocol with two concrete
implementations: FlutterGLSurfaceManager and FlutterMetalSurfaceManager.
Most of the implementation was in a shared superclass,
FlutterIOSurfaceManager, which called into the OpenGL or Metal-specific
subclass when backend-specific operations (such as allocating textures)
was required. It did so via a delegate pattern, wherein the subclasses
both implemented the FlutterIOSurfaceManagerDelegate protocol that
exposed the backend-specific functionality.

Now that only the Metal implementation remains, the delegate code can be
inlined into the calling functions, and the class hierarchy can be
squashed into a single concrete implementation class,
FlutterSurfaceManager, similar to how it was originally implemented in
#21525 before we had two backends.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 17, 2022
Eliminates an undef of VK_USE_PLATFORM_METAL_EXT that works around some
unguarded `@available` checks for macOS 10.13. Our minimum macOS SDK is
now macOS 10.14 so we can safely assume Metal support since it's a
requirement for macOS 10.14.

Issue: flutter/flutter#114445
cbracken added a commit to flutter/engine that referenced this issue Nov 17, 2022
Eliminates an undef of VK_USE_PLATFORM_METAL_EXT that works around some
unguarded `@available` checks for macOS 10.13. Our minimum macOS SDK is
now macOS 10.14 so we can safely assume Metal support since it's a
requirement for macOS 10.14.

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 17, 2022
Now that OpenGL support has been removed from the macOS embedder, we
merge FlutterRenderBackingStore and its only implementing subclass,
FlutterMetalRenderBackingStore, and similarly
FlutterRenderBackingStoreProvider and its only implementing subclass
FlutterMetalRenderBackingStoreProvider.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_engine that referenced this issue Nov 18, 2022
Removes a few unncessary references to Metal in the macOS embedder. Now
that Metal is the only supported rendering implementation for the macOS
embedder, specifying a class as a Metal variant is redundant.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to flutter/engine that referenced this issue Nov 18, 2022
Now that OpenGL support has been removed from the macOS embedder, we
merge FlutterRenderBackingStore and its only implementing subclass,
FlutterMetalRenderBackingStore, and similarly
FlutterRenderBackingStoreProvider and its only implementing subclass
FlutterMetalRenderBackingStoreProvider.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to flutter/engine that referenced this issue Nov 18, 2022
Removes a few unncessary references to Metal in the macOS embedder. Now
that Metal is the only supported rendering implementation for the macOS
embedder, specifying a class as a Metal variant is redundant.

Issue: flutter/flutter#108304
Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_website that referenced this issue Nov 21, 2022
Flutter 3.3 is the last stable release to support macOS 10.11 through
10.13. As of the next stable release, the minimum supported version of
macOS will be 10.14 (Mojave).

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
cbracken added a commit to flutter/website that referenced this issue Nov 21, 2022
Flutter 3.3 is the last stable release to support macOS 10.11 through
10.13. As of the next stable release, the minimum supported version of
macOS will be 10.14 (Mojave).

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
shogohida pushed a commit to shogohida/flutter that referenced this issue Dec 7, 2022
…#114713)

Increases the minimum macOS deployment target from macOS 10.13 (High Sierra) to 10.14 (Mojave) in the macOS app templates.

Includes:
* Update migration for macOS 10.11 apps to upgrade to 10.14
* Adds migration for macOS 10.13 apps to upgrade to 10.14
* Apply migration to all examples, and integration tests

This does not increase version in the plugin templates since those will need to wait until the 10.14 framework rolls to stable channel, so new plugins can build with apps created with `flutter create` on stable channel.

Issue: flutter#114445
See RFC: http://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4
See previous patch: flutter#107689
gspencergoog pushed a commit to gspencergoog/flutter that referenced this issue Jan 19, 2023
…#114713)

Increases the minimum macOS deployment target from macOS 10.13 (High Sierra) to 10.14 (Mojave) in the macOS app templates.

Includes:
* Update migration for macOS 10.11 apps to upgrade to 10.14
* Adds migration for macOS 10.13 apps to upgrade to 10.14
* Apply migration to all examples, and integration tests

This does not increase version in the plugin templates since those will need to wait until the 10.14 framework rolls to stable channel, so new plugins can build with apps created with `flutter create` on stable channel.

Issue: flutter#114445
See RFC: http://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4
See previous patch: flutter#107689
cbracken added a commit to cbracken/flutter_website that referenced this issue Mar 7, 2023
Flutter 3.3 was the last stable release to support macOS 10.11 through
10.13. As of Flutter 3.7, the minimum supported version of macOS is
10.14 (Mojave). This should have landed with the release rollout, but I
missed updating the website.

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_website that referenced this issue Mar 7, 2023
Flutter 3.3 was the last stable release to support macOS 10.11 through
10.13. As of Flutter 3.7, the minimum supported version of macOS is
10.14 (Mojave). This should have landed with the release rollout, but I
missed updating the website.

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/flutter_website that referenced this issue Mar 7, 2023
Flutter 3.3 was the last stable release to support macOS 10.11 through
10.13. As of Flutter 3.7, the minimum supported version of macOS is
10.14 (Mojave). This should have landed with the release rollout, but I
missed updating the website.

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
cbracken added a commit to flutter/website that referenced this issue Mar 7, 2023
Flutter 3.3 was the last stable release to support macOS 10.11 through
10.13. As of Flutter 3.7, the minimum supported version of macOS is
10.14 (Mojave). This should have landed with the release rollout, but I
missed updating the website.

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
cbracken added a commit to cbracken/packages that referenced this issue Mar 7, 2023
For all plugins whose macOS minimum deployment target was less than
10.14, bump the deployment target to 10.14 (Mojave), which is the
minimum supported macOS version on Flutter's stable branch as of Flutter
3.7.

RFC: https://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4

Issue: flutter/flutter#114445
@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 29, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
a: desktop Running on desktop c: proposal A detailed proposal for a change to Flutter P3 Issues that are less important to the Flutter project platform-mac Building on or for macOS specifically tool Affects the "flutter" command-line tool. See also t: labels.
Projects
None yet
Development

No branches or pull requests

4 participants