-
Notifications
You must be signed in to change notification settings - Fork 29.8k
[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 codefu@google.com infa: linux_android_emulator_tests to bringup (bad kvm config) (flutter/flutter#170607) 2025-06-13 engine-flutter-autoroll@skia.org Roll Skia from 70455b7c74dd to 438ea4e05e15 (1 revision) (flutter/flutter#170570) 2025-06-13 sokolovskyi.konstantin@gmail.com [web] Add Paint dithering. (flutter/flutter#170362) 2025-06-13 jhy03261997@gmail.com Reland (#167738) but with some flags updated to use enum (flutter/flutter#170505) 2025-06-13 engine-flutter-autoroll@skia.org Roll Dart SDK from ac589dba5282 to 1a6f6d7c6f2c (4 revisions) (flutter/flutter#170566) 2025-06-13 engine-flutter-autoroll@skia.org Roll Skia from 22018eab8c1f to 70455b7c74dd (1 revision) (flutter/flutter#170564) 2025-06-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Dueykg3VpLT5D_jSG... to lVfYTWxB0rTTuW_k3... (flutter/flutter#170557) 2025-06-13 737941+loic-sharma@users.noreply.github.com [Windows] Use ANGLE blit extension on GLES 2.0 (flutter/flutter#170298) 2025-06-12 codefu@google.com chore: move experimental setup steps to composite action (flutter/flutter#170496) 2025-06-12 jonahwilliams@google.com [Impeller] fix mask filter application to Vertices. (flutter/flutter#170548) 2025-06-12 engine-flutter-autoroll@skia.org Roll Skia from b41e7017658e to 22018eab8c1f (2 revisions) (flutter/flutter#170551) 2025-06-12 737941+loic-sharma@users.noreply.github.com Add CupertinoSheetRoute widget of the week video (flutter/flutter#170026) 2025-06-12 matanlurey@users.noreply.github.com Fix stray `--packages` argument from `workspace` refactor; add a test. (flutter/flutter#170449) 2025-06-12 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#170522) 2025-06-12 47866232+chunhtai@users.noreply.github.com Navigator should call didpop when popping page based route (flutter/flutter#170376) 2025-06-12 47866232+chunhtai@users.noreply.github.com Relax RadioGroup semantics to allow non-radio children (flutter/flutter#170273) 2025-06-12 bkonyi@google.com [ Widget Preview ] Refactor the `flutter widget-preview` command (flutter/flutter#170467) 2025-06-12 15619084+vashworth@users.noreply.github.com Pause UIScene migration (flutter/flutter#170490) 2025-06-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 9f741ef8a689 to ac589dba5282 (3 revisions) (flutter/flutter#170519) 2025-06-12 engine-flutter-autoroll@skia.org Roll Packages from 0b322a2 to 6d3aaf4 (2 revisions) (flutter/flutter#170528) 2025-06-12 matanlurey@users.noreply.github.com 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 bmparr@google.com,stuartmorgan@google.com 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
flutter/flutter@f79452e...8303a96 2025-06-13 codefu@google.com infa: linux_android_emulator_tests to bringup (bad kvm config) (flutter/flutter#170607) 2025-06-13 engine-flutter-autoroll@skia.org Roll Skia from 70455b7c74dd to 438ea4e05e15 (1 revision) (flutter/flutter#170570) 2025-06-13 sokolovskyi.konstantin@gmail.com [web] Add Paint dithering. (flutter/flutter#170362) 2025-06-13 jhy03261997@gmail.com Reland (#167738) but with some flags updated to use enum (flutter/flutter#170505) 2025-06-13 engine-flutter-autoroll@skia.org Roll Dart SDK from ac589dba5282 to 1a6f6d7c6f2c (4 revisions) (flutter/flutter#170566) 2025-06-13 engine-flutter-autoroll@skia.org Roll Skia from 22018eab8c1f to 70455b7c74dd (1 revision) (flutter/flutter#170564) 2025-06-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Dueykg3VpLT5D_jSG... to lVfYTWxB0rTTuW_k3... (flutter/flutter#170557) 2025-06-13 737941+loic-sharma@users.noreply.github.com [Windows] Use ANGLE blit extension on GLES 2.0 (flutter/flutter#170298) 2025-06-12 codefu@google.com chore: move experimental setup steps to composite action (flutter/flutter#170496) 2025-06-12 jonahwilliams@google.com [Impeller] fix mask filter application to Vertices. (flutter/flutter#170548) 2025-06-12 engine-flutter-autoroll@skia.org Roll Skia from b41e7017658e to 22018eab8c1f (2 revisions) (flutter/flutter#170551) 2025-06-12 737941+loic-sharma@users.noreply.github.com Add CupertinoSheetRoute widget of the week video (flutter/flutter#170026) 2025-06-12 matanlurey@users.noreply.github.com Fix stray `--packages` argument from `workspace` refactor; add a test. (flutter/flutter#170449) 2025-06-12 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#170522) 2025-06-12 47866232+chunhtai@users.noreply.github.com Navigator should call didpop when popping page based route (flutter/flutter#170376) 2025-06-12 47866232+chunhtai@users.noreply.github.com Relax RadioGroup semantics to allow non-radio children (flutter/flutter#170273) 2025-06-12 bkonyi@google.com [ Widget Preview ] Refactor the `flutter widget-preview` command (flutter/flutter#170467) 2025-06-12 15619084+vashworth@users.noreply.github.com Pause UIScene migration (flutter/flutter#170490) 2025-06-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 9f741ef8a689 to ac589dba5282 (3 revisions) (flutter/flutter#170519) 2025-06-12 engine-flutter-autoroll@skia.org Roll Packages from 0b322a2 to 6d3aaf4 (2 revisions) (flutter/flutter#170528) 2025-06-12 matanlurey@users.noreply.github.com 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 bmparr@google.com,stuartmorgan@google.com 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
flutter/flutter@f79452e...8303a96 2025-06-13 codefu@google.com infa: linux_android_emulator_tests to bringup (bad kvm config) (flutter/flutter#170607) 2025-06-13 engine-flutter-autoroll@skia.org Roll Skia from 70455b7c74dd to 438ea4e05e15 (1 revision) (flutter/flutter#170570) 2025-06-13 sokolovskyi.konstantin@gmail.com [web] Add Paint dithering. (flutter/flutter#170362) 2025-06-13 jhy03261997@gmail.com Reland (#167738) but with some flags updated to use enum (flutter/flutter#170505) 2025-06-13 engine-flutter-autoroll@skia.org Roll Dart SDK from ac589dba5282 to 1a6f6d7c6f2c (4 revisions) (flutter/flutter#170566) 2025-06-13 engine-flutter-autoroll@skia.org Roll Skia from 22018eab8c1f to 70455b7c74dd (1 revision) (flutter/flutter#170564) 2025-06-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Dueykg3VpLT5D_jSG... to lVfYTWxB0rTTuW_k3... (flutter/flutter#170557) 2025-06-13 737941+loic-sharma@users.noreply.github.com [Windows] Use ANGLE blit extension on GLES 2.0 (flutter/flutter#170298) 2025-06-12 codefu@google.com chore: move experimental setup steps to composite action (flutter/flutter#170496) 2025-06-12 jonahwilliams@google.com [Impeller] fix mask filter application to Vertices. (flutter/flutter#170548) 2025-06-12 engine-flutter-autoroll@skia.org Roll Skia from b41e7017658e to 22018eab8c1f (2 revisions) (flutter/flutter#170551) 2025-06-12 737941+loic-sharma@users.noreply.github.com Add CupertinoSheetRoute widget of the week video (flutter/flutter#170026) 2025-06-12 matanlurey@users.noreply.github.com Fix stray `--packages` argument from `workspace` refactor; add a test. (flutter/flutter#170449) 2025-06-12 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#170522) 2025-06-12 47866232+chunhtai@users.noreply.github.com Navigator should call didpop when popping page based route (flutter/flutter#170376) 2025-06-12 47866232+chunhtai@users.noreply.github.com Relax RadioGroup semantics to allow non-radio children (flutter/flutter#170273) 2025-06-12 bkonyi@google.com [ Widget Preview ] Refactor the `flutter widget-preview` command (flutter/flutter#170467) 2025-06-12 15619084+vashworth@users.noreply.github.com Pause UIScene migration (flutter/flutter#170490) 2025-06-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 9f741ef8a689 to ac589dba5282 (3 revisions) (flutter/flutter#170519) 2025-06-12 engine-flutter-autoroll@skia.org Roll Packages from 0b322a2 to 6d3aaf4 (2 revisions) (flutter/flutter#170528) 2025-06-12 matanlurey@users.noreply.github.com 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 bmparr@google.com,stuartmorgan@google.com 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.