Skip to content

Switches windows to opengles 3 - #191516

Merged
auto-submit[bot] merged 3 commits into
flutter:masterfrom
gaaclarke:win-opengles3
Aug 26, 2026
Merged

auto-submit[bot] merged 3 commits into
flutter:masterfrom
gaaclarke:win-opengles3

Conversation

@gaaclarke

@gaaclarke gaaclarke commented Aug 21, 2026 •

Copy link
Copy Markdown
Member

issue #191207

While researching #191207 it was seen a lot of time was lost each frame for Map/Unmap. This seems to be related to ANGLE's suboptimal code path for handling glUniform* calls. We have support for UBOs in the opengles backend, but it requires the OpenGLES 3 backend. This PR bumps us to OpenGLES 3 if it's supported in order to get UBO usage.

This file is used by skia also, but skia supports opengles 3.0 too.

Local testing didn't seem to make a big difference. I couldn't run the automated tests locally because they were hanging on my setup, but they work fine on CI. We want to be on opengles 3 anyways since it gives us more options for better performance.

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. platform-windows Building on or for Windows specifically a: desktop Running on desktop team-windows Owned by the Windows platform team labels Aug 21, 2026
@gaaclarke gaaclarke added the CICD Run CI/CD label Aug 21, 2026
@gaaclarke

Copy link
Copy Markdown
Member Author

For the blur benchmark in #191207 I'm not seeing a huge difference. The benchmark is kind of fiddly though where you have to continually move your mouse for the animation to run.

@gaaclarke
gaaclarke marked this pull request as ready for review August 24, 2026 18:04
@gaaclarke
gaaclarke requested a review from a team as a code owner August 24, 2026 18:04
@gaaclarke
gaaclarke requested review from b-luk and walley892 August 24, 2026 18:05

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request updates the EGL manager to attempt creating an OpenGL ES 3.0 context first, falling back to OpenGL ES 2.0 if the initial attempt fails. Feedback suggests clearing the EGL error queue by calling ::eglGetError() when the OpenGL ES 3.0 context creation fails to prevent a lingering error state during the fallback.

Comment on lines +217 to +221
if (render_context == EGL_NO_CONTEXT) {
context_attributes = gles2_context_attributes;
render_context = ::eglCreateContext(display_, config_, EGL_NO_CONTEXT,
context_attributes);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

When the first eglCreateContext call with OpenGL ES 3.0 fails, it sets an EGL error state (such as EGL_BAD_ATTRIBUTE). In EGL, successful subsequent calls do not clear the error state. If the fallback to OpenGL ES 2.0 succeeds, this error will linger in the EGL error queue and may cause false positives in subsequent error checks or logging elsewhere in the application.

To prevent this, clear the EGL error by calling ::eglGetError() when the first attempt fails.

  if (render_context == EGL_NO_CONTEXT) {
    // Clear the EGL error from the failed GLES3 attempt so it doesn't linger.
    ::eglGetError();
    context_attributes = gles2_context_attributes;
    render_context = ::eglCreateContext(display_, config_, EGL_NO_CONTEXT,
                                        context_attributes);
  }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If this is accurate about the error state not being cleared, then it seems like we'd want to do what it suggests.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Done. It isn't explicitly described in the eglCreateContext reference. But as far as I can tell it is accurate. It doesn't hurt clearing out the errors at this point I don't think.

Comment on lines +217 to +221
if (render_context == EGL_NO_CONTEXT) {
context_attributes = gles2_context_attributes;
render_context = ::eglCreateContext(display_, config_, EGL_NO_CONTEXT,
context_attributes);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If this is accurate about the error state not being cleared, then it seems like we'd want to do what it suggests.

@gaaclarke
gaaclarke requested a review from b-luk August 24, 2026 18:30
@gaaclarke gaaclarke added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 25, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Aug 26, 2026
Merged via the queue into flutter:master with commit ea81d11 Aug 26, 2026
23 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Aug 26, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Aug 28, 2026
Roll Flutter from 15d8908addf6 to e8dca90ec9e0 (58 revisions)

flutter/flutter@15d8908...e8dca90

2026-08-27 [email protected] Terminate existing process before launching with devicectl (flutter/flutter#191885)
2026-08-27 [email protected] Roll Fuchsia Linux SDK from qjOQi-zAgu_tADorh... to dDxH8G5cDBP602eyG... (flutter/flutter#191889)
2026-08-27 [email protected] [flutter_tools] Verify native assets tree-shaking during linking (flutter/flutter#191637)
2026-08-27 [email protected] Denylists b-series powervr from vulkan (flutter/flutter#191808)
2026-08-27 [email protected] Handle linear and radial gradients in UberSDF (flutter/flutter#190874)
2026-08-27 [email protected] Roll Packages from 740f093 to bd3cbc1 (7 revisions) (flutter/flutter#191886)
2026-08-27 [email protected] Disable more Windows tests that have been causing CI flakes (flutter/flutter#191822)
2026-08-27 [email protected] Roll Skia from d32721369bd8 to 82e972ea84b1 (2 revisions) (flutter/flutter#191880)
2026-08-27 [email protected] Roll Skia from 3640b8edd16c to d32721369bd8 (10 revisions) (flutter/flutter#191858)
2026-08-27 [email protected] Revert: [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191863)
2026-08-27 [email protected] Roll Fuchsia Test Scripts from 0iCv10IlKfiilEBOU... to 6SXRz6wsA2Zm_rAqP... (flutter/flutter#191852)
2026-08-27 [email protected] Roll pub packages (flutter/flutter#191851)
2026-08-27 [email protected] Refactor FormField build wrappers (flutter/flutter#185795)
2026-08-27 [email protected] Make ScrollPhysics reactive by introducing shouldUpdate (flutter/flutter#189664)
2026-08-27 [email protected] macOS: Fix crash on out-of-bounds text input ranges (flutter/flutter#191780)
2026-08-27 [email protected] Add HCPP feature flag, and turn it on by default in beta/master (flutter/flutter#190623)
2026-08-27 [email protected] [tool] Migrate CleanCommand to modular dependency injection (flutter/flutter#190742)
2026-08-26 [email protected] Update triage docs for ecosystem and codelab changes (flutter/flutter#191809)
2026-08-26 [email protected] [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191824)
2026-08-26 [email protected] [UIScene] Migrate dev/benchmarks/complex_layout to UIScene lifecycle (flutter/flutter#191619)
2026-08-26 [email protected] Add SliverAppBar showOnScreen semantics test coverage (flutter/flutter#190410)
2026-08-26 [email protected] Add prompt_suggestion icon to list of RTL mirroring icons. (flutter/flutter#191741)
2026-08-26 [email protected] Remove bringup for batch 3 (flutter/flutter#191750)
2026-08-26 [email protected] Roll Skia from b5465d7b0b77 to 3640b8edd16c (6 revisions) (flutter/flutter#191835)
2026-08-26 [email protected] Uiscene migrate custom channels views (flutter/flutter#191817)
2026-08-26 [email protected] Support --[no-]adb-log-filtering CLI option (flutter/flutter#187252)
2026-08-26 [email protected] Roll Dart SDK from cb8a4e1a0fbb to cb4c39d067f3 (2 revisions) (flutter/flutter#191825)
2026-08-26 [email protected] Fix `Navigator.pushNamed<T>()` type checking (flutter/flutter#188148)
2026-08-26 [email protected] Handle the case where a window doesn't have a title set (flutter/flutter#191767)
2026-08-26 [email protected] [Android] Remove old `InputType` constructor from embedding (flutter/flutter#191244)
2026-08-26 [email protected] Roll Skia from 244a6a0f8f92 to b5465d7b0b77 (19 revisions) (flutter/flutter#191810)
2026-08-26 [email protected] Tolerate floating-point rounding in paintImage centerSlice assertion (flutter/flutter#185789)
2026-08-26 [email protected] Fixes translated bounded blurs (flutter/flutter#191615)
2026-08-26 [email protected] Roll Fuchsia Linux SDK from MstTWE1RDOT-RnrtH... to qjOQi-zAgu_tADorh... (flutter/flutter#191769)
2026-08-26 [email protected] Lerp HSVColor and HSLColor hue along the shortest arc (flutter/flutter#191186)
2026-08-26 [email protected] Fix enum instances comparison to use `equality ==` since dart has the correct behavior now (flutter/flutter#191537)
2026-08-26 [email protected] Switches windows to opengles 3 (flutter/flutter#191516)
2026-08-26 [email protected] Roll Dart SDK from 7739e8602bc1 to cb8a4e1a0fbb (1 revision) (flutter/flutter#191784)
2026-08-26 [email protected] iOS,macOS: Check viewType before creating a platform view (flutter/flutter#191777)
2026-08-26 [email protected] Revert: [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191793)
2026-08-26 [email protected] refactor(flutter_tools): clean up dead unreferenced declarations (flutter/flutter#191163)
2026-08-26 [email protected] Roll Fuchsia GN SDK from a87CbQSWEjkPUK1ZY... to ZsxUUK2SfA-TrNvb8... (flutter/flutter#191763)
2026-08-26 [email protected] [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191732)
2026-08-25 [email protected] Remove legacy gen_defaults analyze checks (flutter/flutter#191629)
2026-08-25 [email protected] Refactors `try` to avoid `unawaited_return_in_try_block` case (flutter/flutter#191129)
2026-08-25 [email protected] Roll Dart SDK from 8996935d3d0a to 7739e8602bc1 (1 revision) (flutter/flutter#191754)
...
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…r#12660)

Roll Flutter from 15d8908addf6 to e8dca90ec9e0 (58 revisions)

flutter/flutter@15d8908...e8dca90

2026-08-27 [email protected] Terminate existing process before launching with devicectl (flutter/flutter#191885)
2026-08-27 [email protected] Roll Fuchsia Linux SDK from qjOQi-zAgu_tADorh... to dDxH8G5cDBP602eyG... (flutter/flutter#191889)
2026-08-27 [email protected] [flutter_tools] Verify native assets tree-shaking during linking (flutter/flutter#191637)
2026-08-27 [email protected] Denylists b-series powervr from vulkan (flutter/flutter#191808)
2026-08-27 [email protected] Handle linear and radial gradients in UberSDF (flutter/flutter#190874)
2026-08-27 [email protected] Roll Packages from 740f093 to bd3cbc1 (7 revisions) (flutter/flutter#191886)
2026-08-27 [email protected] Disable more Windows tests that have been causing CI flakes (flutter/flutter#191822)
2026-08-27 [email protected] Roll Skia from d32721369bd8 to 82e972ea84b1 (2 revisions) (flutter/flutter#191880)
2026-08-27 [email protected] Roll Skia from 3640b8edd16c to d32721369bd8 (10 revisions) (flutter/flutter#191858)
2026-08-27 [email protected] Revert: [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191863)
2026-08-27 [email protected] Roll Fuchsia Test Scripts from 0iCv10IlKfiilEBOU... to 6SXRz6wsA2Zm_rAqP... (flutter/flutter#191852)
2026-08-27 [email protected] Roll pub packages (flutter/flutter#191851)
2026-08-27 [email protected] Refactor FormField build wrappers (flutter/flutter#185795)
2026-08-27 [email protected] Make ScrollPhysics reactive by introducing shouldUpdate (flutter/flutter#189664)
2026-08-27 [email protected] macOS: Fix crash on out-of-bounds text input ranges (flutter/flutter#191780)
2026-08-27 [email protected] Add HCPP feature flag, and turn it on by default in beta/master (flutter/flutter#190623)
2026-08-27 [email protected] [tool] Migrate CleanCommand to modular dependency injection (flutter/flutter#190742)
2026-08-26 [email protected] Update triage docs for ecosystem and codelab changes (flutter/flutter#191809)
2026-08-26 [email protected] [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191824)
2026-08-26 [email protected] [UIScene] Migrate dev/benchmarks/complex_layout to UIScene lifecycle (flutter/flutter#191619)
2026-08-26 [email protected] Add SliverAppBar showOnScreen semantics test coverage (flutter/flutter#190410)
2026-08-26 [email protected] Add prompt_suggestion icon to list of RTL mirroring icons. (flutter/flutter#191741)
2026-08-26 [email protected] Remove bringup for batch 3 (flutter/flutter#191750)
2026-08-26 [email protected] Roll Skia from b5465d7b0b77 to 3640b8edd16c (6 revisions) (flutter/flutter#191835)
2026-08-26 [email protected] Uiscene migrate custom channels views (flutter/flutter#191817)
2026-08-26 [email protected] Support --[no-]adb-log-filtering CLI option (flutter/flutter#187252)
2026-08-26 [email protected] Roll Dart SDK from cb8a4e1a0fbb to cb4c39d067f3 (2 revisions) (flutter/flutter#191825)
2026-08-26 [email protected] Fix `Navigator.pushNamed<T>()` type checking (flutter/flutter#188148)
2026-08-26 [email protected] Handle the case where a window doesn't have a title set (flutter/flutter#191767)
2026-08-26 [email protected] [Android] Remove old `InputType` constructor from embedding (flutter/flutter#191244)
2026-08-26 [email protected] Roll Skia from 244a6a0f8f92 to b5465d7b0b77 (19 revisions) (flutter/flutter#191810)
2026-08-26 [email protected] Tolerate floating-point rounding in paintImage centerSlice assertion (flutter/flutter#185789)
2026-08-26 [email protected] Fixes translated bounded blurs (flutter/flutter#191615)
2026-08-26 [email protected] Roll Fuchsia Linux SDK from MstTWE1RDOT-RnrtH... to qjOQi-zAgu_tADorh... (flutter/flutter#191769)
2026-08-26 [email protected] Lerp HSVColor and HSLColor hue along the shortest arc (flutter/flutter#191186)
2026-08-26 [email protected] Fix enum instances comparison to use `equality ==` since dart has the correct behavior now (flutter/flutter#191537)
2026-08-26 [email protected] Switches windows to opengles 3 (flutter/flutter#191516)
2026-08-26 [email protected] Roll Dart SDK from 7739e8602bc1 to cb8a4e1a0fbb (1 revision) (flutter/flutter#191784)
2026-08-26 [email protected] iOS,macOS: Check viewType before creating a platform view (flutter/flutter#191777)
2026-08-26 [email protected] Revert: [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191793)
2026-08-26 [email protected] refactor(flutter_tools): clean up dead unreferenced declarations (flutter/flutter#191163)
2026-08-26 [email protected] Roll Fuchsia GN SDK from a87CbQSWEjkPUK1ZY... to ZsxUUK2SfA-TrNvb8... (flutter/flutter#191763)
2026-08-26 [email protected] [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191732)
2026-08-25 [email protected] Remove legacy gen_defaults analyze checks (flutter/flutter#191629)
2026-08-25 [email protected] Refactors `try` to avoid `unawaited_return_in_try_block` case (flutter/flutter#191129)
2026-08-25 [email protected] Roll Dart SDK from 8996935d3d0a to 7739e8602bc1 (1 revision) (flutter/flutter#191754)
...
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…r#12660)

Roll Flutter from 15d8908addf6 to e8dca90ec9e0 (58 revisions)

flutter/flutter@15d8908...e8dca90

2026-08-27 [email protected] Terminate existing process before launching with devicectl (flutter/flutter#191885)
2026-08-27 [email protected] Roll Fuchsia Linux SDK from qjOQi-zAgu_tADorh... to dDxH8G5cDBP602eyG... (flutter/flutter#191889)
2026-08-27 [email protected] [flutter_tools] Verify native assets tree-shaking during linking (flutter/flutter#191637)
2026-08-27 [email protected] Denylists b-series powervr from vulkan (flutter/flutter#191808)
2026-08-27 [email protected] Handle linear and radial gradients in UberSDF (flutter/flutter#190874)
2026-08-27 [email protected] Roll Packages from 740f093 to bd3cbc1 (7 revisions) (flutter/flutter#191886)
2026-08-27 [email protected] Disable more Windows tests that have been causing CI flakes (flutter/flutter#191822)
2026-08-27 [email protected] Roll Skia from d32721369bd8 to 82e972ea84b1 (2 revisions) (flutter/flutter#191880)
2026-08-27 [email protected] Roll Skia from 3640b8edd16c to d32721369bd8 (10 revisions) (flutter/flutter#191858)
2026-08-27 [email protected] Revert: [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191863)
2026-08-27 [email protected] Roll Fuchsia Test Scripts from 0iCv10IlKfiilEBOU... to 6SXRz6wsA2Zm_rAqP... (flutter/flutter#191852)
2026-08-27 [email protected] Roll pub packages (flutter/flutter#191851)
2026-08-27 [email protected] Refactor FormField build wrappers (flutter/flutter#185795)
2026-08-27 [email protected] Make ScrollPhysics reactive by introducing shouldUpdate (flutter/flutter#189664)
2026-08-27 [email protected] macOS: Fix crash on out-of-bounds text input ranges (flutter/flutter#191780)
2026-08-27 [email protected] Add HCPP feature flag, and turn it on by default in beta/master (flutter/flutter#190623)
2026-08-27 [email protected] [tool] Migrate CleanCommand to modular dependency injection (flutter/flutter#190742)
2026-08-26 [email protected] Update triage docs for ecosystem and codelab changes (flutter/flutter#191809)
2026-08-26 [email protected] [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191824)
2026-08-26 [email protected] [UIScene] Migrate dev/benchmarks/complex_layout to UIScene lifecycle (flutter/flutter#191619)
2026-08-26 [email protected] Add SliverAppBar showOnScreen semantics test coverage (flutter/flutter#190410)
2026-08-26 [email protected] Add prompt_suggestion icon to list of RTL mirroring icons. (flutter/flutter#191741)
2026-08-26 [email protected] Remove bringup for batch 3 (flutter/flutter#191750)
2026-08-26 [email protected] Roll Skia from b5465d7b0b77 to 3640b8edd16c (6 revisions) (flutter/flutter#191835)
2026-08-26 [email protected] Uiscene migrate custom channels views (flutter/flutter#191817)
2026-08-26 [email protected] Support --[no-]adb-log-filtering CLI option (flutter/flutter#187252)
2026-08-26 [email protected] Roll Dart SDK from cb8a4e1a0fbb to cb4c39d067f3 (2 revisions) (flutter/flutter#191825)
2026-08-26 [email protected] Fix `Navigator.pushNamed<T>()` type checking (flutter/flutter#188148)
2026-08-26 [email protected] Handle the case where a window doesn't have a title set (flutter/flutter#191767)
2026-08-26 [email protected] [Android] Remove old `InputType` constructor from embedding (flutter/flutter#191244)
2026-08-26 [email protected] Roll Skia from 244a6a0f8f92 to b5465d7b0b77 (19 revisions) (flutter/flutter#191810)
2026-08-26 [email protected] Tolerate floating-point rounding in paintImage centerSlice assertion (flutter/flutter#185789)
2026-08-26 [email protected] Fixes translated bounded blurs (flutter/flutter#191615)
2026-08-26 [email protected] Roll Fuchsia Linux SDK from MstTWE1RDOT-RnrtH... to qjOQi-zAgu_tADorh... (flutter/flutter#191769)
2026-08-26 [email protected] Lerp HSVColor and HSLColor hue along the shortest arc (flutter/flutter#191186)
2026-08-26 [email protected] Fix enum instances comparison to use `equality ==` since dart has the correct behavior now (flutter/flutter#191537)
2026-08-26 [email protected] Switches windows to opengles 3 (flutter/flutter#191516)
2026-08-26 [email protected] Roll Dart SDK from 7739e8602bc1 to cb8a4e1a0fbb (1 revision) (flutter/flutter#191784)
2026-08-26 [email protected] iOS,macOS: Check viewType before creating a platform view (flutter/flutter#191777)
2026-08-26 [email protected] Revert: [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191793)
2026-08-26 [email protected] refactor(flutter_tools): clean up dead unreferenced declarations (flutter/flutter#191163)
2026-08-26 [email protected] Roll Fuchsia GN SDK from a87CbQSWEjkPUK1ZY... to ZsxUUK2SfA-TrNvb8... (flutter/flutter#191763)
2026-08-26 [email protected] [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191732)
2026-08-25 [email protected] Remove legacy gen_defaults analyze checks (flutter/flutter#191629)
2026-08-25 [email protected] Refactors `try` to avoid `unawaited_return_in_try_block` case (flutter/flutter#191129)
2026-08-25 [email protected] Roll Dart SDK from 8996935d3d0a to 7739e8602bc1 (1 revision) (flutter/flutter#191754)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: desktop Running on desktop CICD Run CI/CD engine flutter/engine related. See also e: labels. platform-windows Building on or for Windows specifically team-windows Owned by the Windows platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants