-
Notifications
You must be signed in to change notification settings - Fork 29.7k
[Windows] Use ANGLE blit extension on GLES 2.0 #170298
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
Conversation
|
|
||
| if (!description_->HasExtension("GL_ANGLE_framebuffer_blit")) { | ||
| BlitFramebufferANGLE.Reset(); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I considered only loading this proc if we detect ANGLE, however, the GL_VERSION for the affected devices are 2.0.0, which causes DescriptionGLES::IsANGLE to return false.
jonahwilliams
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
dedf917 to
6c061ea
Compare
flutter/flutter@f79452e...8303a96 2025-06-13 [email protected] infa: linux_android_emulator_tests to bringup (bad kvm config) (flutter/flutter#170607) 2025-06-13 [email protected] Roll Skia from 70455b7c74dd to 438ea4e05e15 (1 revision) (flutter/flutter#170570) 2025-06-13 [email protected] [web] Add Paint dithering. (flutter/flutter#170362) 2025-06-13 [email protected] Reland (#167738) but with some flags updated to use enum (flutter/flutter#170505) 2025-06-13 [email protected] Roll Dart SDK from ac589dba5282 to 1a6f6d7c6f2c (4 revisions) (flutter/flutter#170566) 2025-06-13 [email protected] Roll Skia from 22018eab8c1f to 70455b7c74dd (1 revision) (flutter/flutter#170564) 2025-06-13 [email protected] Roll Fuchsia Linux SDK from Dueykg3VpLT5D_jSG... to lVfYTWxB0rTTuW_k3... (flutter/flutter#170557) 2025-06-13 [email protected] [Windows] Use ANGLE blit extension on GLES 2.0 (flutter/flutter#170298) 2025-06-12 [email protected] chore: move experimental setup steps to composite action (flutter/flutter#170496) 2025-06-12 [email protected] [Impeller] fix mask filter application to Vertices. (flutter/flutter#170548) 2025-06-12 [email protected] Roll Skia from b41e7017658e to 22018eab8c1f (2 revisions) (flutter/flutter#170551) 2025-06-12 [email protected] Add CupertinoSheetRoute widget of the week video (flutter/flutter#170026) 2025-06-12 [email protected] Fix stray `--packages` argument from `workspace` refactor; add a test. (flutter/flutter#170449) 2025-06-12 [email protected] Roll pub packages (flutter/flutter#170522) 2025-06-12 [email protected] Navigator should call didpop when popping page based route (flutter/flutter#170376) 2025-06-12 [email protected] Relax RadioGroup semantics to allow non-radio children (flutter/flutter#170273) 2025-06-12 [email protected] [ Widget Preview ] Refactor the `flutter widget-preview` command (flutter/flutter#170467) 2025-06-12 [email protected] Pause UIScene migration (flutter/flutter#170490) 2025-06-12 [email protected] Roll Dart SDK from 9f741ef8a689 to ac589dba5282 (3 revisions) (flutter/flutter#170519) 2025-06-12 [email protected] Roll Packages from 0b322a2 to 6d3aaf4 (2 revisions) (flutter/flutter#170528) 2025-06-12 [email protected] Fix the path to `packages_autoroller`. (flutter/flutter#170538) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
This updates Flutter Windows to fall back to [`glBlitFramebufferANGLE`](https://github.com/google/angle/blob/main/extensions/ANGLE_framebuffer_blit.txt) if `glBlitFramebuffer` is not available. This makes Flutter Windows work on devices where ANGLE supports only GLES 2.0. Fixes: flutter#169178 ### Background ANGLE only implements GLES 2.0 on some Windows 10+ machines ([1](flutter#169178 (comment)), [2](flutter#169178 (comment))). Flutter Windows 3.27.4 and lower was using `glBlitFramebuffer` on GLES 2.0 devices, even though that requires GLES 3.0. This magically worked though, thanks to ANGLE. However in 3.29.0, Impeller was updated to not resolve GLES 3.0 procs on GLES 2.0: flutter/engine#56636. This caused Flutter Windows to crash on GLES 2.0 devices since it was calling `glBlitFramebuffer`. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
…r#9433) flutter/flutter@f79452e...8303a96 2025-06-13 [email protected] infa: linux_android_emulator_tests to bringup (bad kvm config) (flutter/flutter#170607) 2025-06-13 [email protected] Roll Skia from 70455b7c74dd to 438ea4e05e15 (1 revision) (flutter/flutter#170570) 2025-06-13 [email protected] [web] Add Paint dithering. (flutter/flutter#170362) 2025-06-13 [email protected] Reland (#167738) but with some flags updated to use enum (flutter/flutter#170505) 2025-06-13 [email protected] Roll Dart SDK from ac589dba5282 to 1a6f6d7c6f2c (4 revisions) (flutter/flutter#170566) 2025-06-13 [email protected] Roll Skia from 22018eab8c1f to 70455b7c74dd (1 revision) (flutter/flutter#170564) 2025-06-13 [email protected] Roll Fuchsia Linux SDK from Dueykg3VpLT5D_jSG... to lVfYTWxB0rTTuW_k3... (flutter/flutter#170557) 2025-06-13 [email protected] [Windows] Use ANGLE blit extension on GLES 2.0 (flutter/flutter#170298) 2025-06-12 [email protected] chore: move experimental setup steps to composite action (flutter/flutter#170496) 2025-06-12 [email protected] [Impeller] fix mask filter application to Vertices. (flutter/flutter#170548) 2025-06-12 [email protected] Roll Skia from b41e7017658e to 22018eab8c1f (2 revisions) (flutter/flutter#170551) 2025-06-12 [email protected] Add CupertinoSheetRoute widget of the week video (flutter/flutter#170026) 2025-06-12 [email protected] Fix stray `--packages` argument from `workspace` refactor; add a test. (flutter/flutter#170449) 2025-06-12 [email protected] Roll pub packages (flutter/flutter#170522) 2025-06-12 [email protected] Navigator should call didpop when popping page based route (flutter/flutter#170376) 2025-06-12 [email protected] Relax RadioGroup semantics to allow non-radio children (flutter/flutter#170273) 2025-06-12 [email protected] [ Widget Preview ] Refactor the `flutter widget-preview` command (flutter/flutter#170467) 2025-06-12 [email protected] Pause UIScene migration (flutter/flutter#170490) 2025-06-12 [email protected] Roll Dart SDK from 9f741ef8a689 to ac589dba5282 (3 revisions) (flutter/flutter#170519) 2025-06-12 [email protected] Roll Packages from 0b322a2 to 6d3aaf4 (2 revisions) (flutter/flutter#170528) 2025-06-12 [email protected] Fix the path to `packages_autoroller`. (flutter/flutter#170538) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
This updates Flutter Windows to fall back to [`glBlitFramebufferANGLE`](https://github.com/google/angle/blob/main/extensions/ANGLE_framebuffer_blit.txt) if `glBlitFramebuffer` is not available. This makes Flutter Windows work on devices where ANGLE supports only GLES 2.0. Fixes: flutter#169178 ### Background ANGLE only implements GLES 2.0 on some Windows 10+ machines ([1](flutter#169178 (comment)), [2](flutter#169178 (comment))). Flutter Windows 3.27.4 and lower was using `glBlitFramebuffer` on GLES 2.0 devices, even though that requires GLES 3.0. This magically worked though, thanks to ANGLE. However in 3.29.0, Impeller was updated to not resolve GLES 3.0 procs on GLES 2.0: flutter/engine#56636. This caused Flutter Windows to crash on GLES 2.0 devices since it was calling `glBlitFramebuffer`. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
…r#9433) flutter/flutter@f79452e...8303a96 2025-06-13 [email protected] infa: linux_android_emulator_tests to bringup (bad kvm config) (flutter/flutter#170607) 2025-06-13 [email protected] Roll Skia from 70455b7c74dd to 438ea4e05e15 (1 revision) (flutter/flutter#170570) 2025-06-13 [email protected] [web] Add Paint dithering. (flutter/flutter#170362) 2025-06-13 [email protected] Reland (#167738) but with some flags updated to use enum (flutter/flutter#170505) 2025-06-13 [email protected] Roll Dart SDK from ac589dba5282 to 1a6f6d7c6f2c (4 revisions) (flutter/flutter#170566) 2025-06-13 [email protected] Roll Skia from 22018eab8c1f to 70455b7c74dd (1 revision) (flutter/flutter#170564) 2025-06-13 [email protected] Roll Fuchsia Linux SDK from Dueykg3VpLT5D_jSG... to lVfYTWxB0rTTuW_k3... (flutter/flutter#170557) 2025-06-13 [email protected] [Windows] Use ANGLE blit extension on GLES 2.0 (flutter/flutter#170298) 2025-06-12 [email protected] chore: move experimental setup steps to composite action (flutter/flutter#170496) 2025-06-12 [email protected] [Impeller] fix mask filter application to Vertices. (flutter/flutter#170548) 2025-06-12 [email protected] Roll Skia from b41e7017658e to 22018eab8c1f (2 revisions) (flutter/flutter#170551) 2025-06-12 [email protected] Add CupertinoSheetRoute widget of the week video (flutter/flutter#170026) 2025-06-12 [email protected] Fix stray `--packages` argument from `workspace` refactor; add a test. (flutter/flutter#170449) 2025-06-12 [email protected] Roll pub packages (flutter/flutter#170522) 2025-06-12 [email protected] Navigator should call didpop when popping page based route (flutter/flutter#170376) 2025-06-12 [email protected] Relax RadioGroup semantics to allow non-radio children (flutter/flutter#170273) 2025-06-12 [email protected] [ Widget Preview ] Refactor the `flutter widget-preview` command (flutter/flutter#170467) 2025-06-12 [email protected] Pause UIScene migration (flutter/flutter#170490) 2025-06-12 [email protected] Roll Dart SDK from 9f741ef8a689 to ac589dba5282 (3 revisions) (flutter/flutter#170519) 2025-06-12 [email protected] Roll Packages from 0b322a2 to 6d3aaf4 (2 revisions) (flutter/flutter#170528) 2025-06-12 [email protected] Fix the path to `packages_autoroller`. (flutter/flutter#170538) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
This updates Flutter Windows to fall back to
glBlitFramebufferANGLEifglBlitFramebufferis not available. This makes Flutter Windows work on devices where ANGLE supports only GLES 2.0.Fixes: #169178
Background
ANGLE only implements GLES 2.0 on some Windows 10+ machines (1, 2).
Flutter Windows 3.27.4 and lower was using
glBlitFramebufferon GLES 2.0 devices, even though that requires GLES 3.0. This magically worked though, thanks to ANGLE.However in 3.29.0, Impeller was updated to not resolve GLES 3.0 procs on GLES 2.0: flutter/engine#56636. This caused Flutter Windows to crash on GLES 2.0 devices since it was calling
glBlitFramebuffer.Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.