Skip to content

[Impeller] Ensure that the TextureGLES destructor cleans up all objects that it holds including the sync fence#187216

Merged
auto-submit[bot] merged 4 commits into
flutter:masterfrom
jason-simmons:bug_186899
May 29, 2026
Merged

[Impeller] Ensure that the TextureGLES destructor cleans up all objects that it holds including the sync fence#187216
auto-submit[bot] merged 4 commits into
flutter:masterfrom
jason-simmons:bug_186899

Conversation

@jason-simmons

Copy link
Copy Markdown
Member

TextureGLES owns a texture and may be given ownership of cached FBO and sync fence objects. Use UniqueHandleGLES to manage the lifecycle of these objects.

Fixes #186899

…ts that it holds including the sync fence

TextureGLES owns a texture and may be given ownership of cached FBO
and sync fence objects.  Use UniqueHandleGLES to manage the lifecycle
of these objects.

Fixes flutter#186899
@jason-simmons
jason-simmons requested a review from gaaclarke May 27, 2026 22:44
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 27, 2026
@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels May 27, 2026
gemini-code-assist[bot]

This comment was marked as outdated.

@github-actions github-actions Bot removed the CICD Run CI/CD label May 27, 2026
@jason-simmons

Copy link
Copy Markdown
Member Author

/gemini review

@jason-simmons jason-simmons added the CICD Run CI/CD label May 27, 2026

@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 refactors TextureGLES to manage its OpenGL ES handles (including texture handles, fences, and cached FBOs) using UniqueHandleGLES instead of raw handles, eliminating the need for manual cleanup in the destructor. It also extends UniqueHandleGLES with a default constructor, move assignment operator, Reset(), and Release() methods, and adds a unit test to verify fence deletion on texture destruction. The review feedback identifies a typo in the new test name and recommends marking the move assignment operator of UniqueHandleGLES as noexcept in both the header and implementation files to align with the Google C++ Style Guide.

Comment thread engine/src/flutter/impeller/renderer/backend/gles/test/texture_gles_unittests.cc Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label May 27, 2026
@jason-simmons jason-simmons added the CICD Run CI/CD label May 27, 2026
gaaclarke
gaaclarke previously approved these changes May 28, 2026

@gaaclarke gaaclarke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm, thanks jason

@jason-simmons jason-simmons added the autosubmit Merge PR when tree becomes green via auto submit App label May 28, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 28, 2026
@auto-submit

auto-submit Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187216, because Pull request flutter/flutter/187216 is not in a mergeable state.

@jason-simmons jason-simmons added CICD Run CI/CD autosubmit Merge PR when tree becomes green via auto submit App labels May 29, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue May 29, 2026
Merged via the queue into flutter:master with commit d742b87 May 29, 2026
206 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 29, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Jun 1, 2026
flutter/flutter@b05a9d7...54e199a

2026-06-01 [email protected] Roll Fuchsia Linux SDK from jMR_VXQi07kAk8vbR... to q27k7_um1GvVrySZS... (flutter/flutter#187338)
2026-06-01 [email protected] Remove use of deprecated API related to removal of the VM isolate. (flutter/flutter#187013)
2026-06-01 [email protected] Improve `dependOnInheritedWidgetOfExactType` documentation to explain why it is bad to use it in initState (flutter/flutter#186216)
2026-06-01 [email protected] Revert "Move dart-lang/ai to a top level third party dependency in en… (flutter/flutter#187370)
2026-05-30 [email protected] Move dart-lang/ai to a top level third party dependency in engine (flutter/flutter#187268)
2026-05-30 [email protected] add sdf golden variants for OpenGL (flutter/flutter#187246)
2026-05-30 [email protected] Roll Skia from dc01525ac468 to 0aee4675e0ad (6 revisions) (flutter/flutter#187334)
2026-05-29 [email protected] Roll Skia from c480ba2eb2eb to dc01525ac468 (4 revisions) (flutter/flutter#187317)
2026-05-29 [email protected] Remove the Y coordinate flip workaround in the Material stretch effect shader now that it is no longer required by the Impeller GLES back end (flutter/flutter#187247)
2026-05-29 [email protected] [flutter_tools, devicelab] Fix filesystem safety guard for symlinked temp directories (flutter/flutter#187320)
2026-05-29 [email protected] Brings linux tests out of bringup. (flutter/flutter#187271)
2026-05-29 [email protected] Roll pub packages (flutter/flutter#187321)
2026-05-29 [email protected] Roll Fuchsia GN SDK from SEfYx3xgueX3aFAY3... to oOAcFhkoE2_-Sy67z... (flutter/flutter#187310)
2026-05-29 [email protected] Fix mismatch between hit-test tree and traversal tree (flutter/flutter#186826)
2026-05-29 [email protected] [Impeller] Ensure that the TextureGLES destructor cleans up all objects that it holds including the sync fence (flutter/flutter#187216)
2026-05-29 [email protected] Roll Packages from 10cbdc5 to e930ced (3 revisions) (flutter/flutter#187306)
2026-05-29 [email protected] Roll Skia from d9d6b440c4e7 to c480ba2eb2eb (1 revision) (flutter/flutter#187305)

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
@jason-simmons jason-simmons added cp: stable cherry pick this pull request to stable release candidate branch cp: beta cherry pick this pull request to beta release candidate branch labels Jun 1, 2026
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#11816)

flutter/flutter@b05a9d7...54e199a

2026-06-01 [email protected] Roll Fuchsia Linux SDK from jMR_VXQi07kAk8vbR... to q27k7_um1GvVrySZS... (flutter/flutter#187338)
2026-06-01 [email protected] Remove use of deprecated API related to removal of the VM isolate. (flutter/flutter#187013)
2026-06-01 [email protected] Improve `dependOnInheritedWidgetOfExactType` documentation to explain why it is bad to use it in initState (flutter/flutter#186216)
2026-06-01 [email protected] Revert "Move dart-lang/ai to a top level third party dependency in en… (flutter/flutter#187370)
2026-05-30 [email protected] Move dart-lang/ai to a top level third party dependency in engine (flutter/flutter#187268)
2026-05-30 [email protected] add sdf golden variants for OpenGL (flutter/flutter#187246)
2026-05-30 [email protected] Roll Skia from dc01525ac468 to 0aee4675e0ad (6 revisions) (flutter/flutter#187334)
2026-05-29 [email protected] Roll Skia from c480ba2eb2eb to dc01525ac468 (4 revisions) (flutter/flutter#187317)
2026-05-29 [email protected] Remove the Y coordinate flip workaround in the Material stretch effect shader now that it is no longer required by the Impeller GLES back end (flutter/flutter#187247)
2026-05-29 [email protected] [flutter_tools, devicelab] Fix filesystem safety guard for symlinked temp directories (flutter/flutter#187320)
2026-05-29 [email protected] Brings linux tests out of bringup. (flutter/flutter#187271)
2026-05-29 [email protected] Roll pub packages (flutter/flutter#187321)
2026-05-29 [email protected] Roll Fuchsia GN SDK from SEfYx3xgueX3aFAY3... to oOAcFhkoE2_-Sy67z... (flutter/flutter#187310)
2026-05-29 [email protected] Fix mismatch between hit-test tree and traversal tree (flutter/flutter#186826)
2026-05-29 [email protected] [Impeller] Ensure that the TextureGLES destructor cleans up all objects that it holds including the sync fence (flutter/flutter#187216)
2026-05-29 [email protected] Roll Packages from 10cbdc5 to e930ced (3 revisions) (flutter/flutter#187306)
2026-05-29 [email protected] Roll Skia from d9d6b440c4e7 to c480ba2eb2eb (1 revision) (flutter/flutter#187305)

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
via-guy pushed a commit to via-guy/flutter that referenced this pull request Jun 26, 2026
…ts that it holds including the sync fence (flutter#187216)

TextureGLES owns a texture and may be given ownership of cached FBO and
sync fence objects. Use UniqueHandleGLES to manage the lifecycle of
these objects.

Fixes flutter#186899
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD cp: beta cherry pick this pull request to beta release candidate branch cp: stable cherry pick this pull request to stable release candidate branch e: impeller Impeller rendering backend issues and features requests engine flutter/engine related. See also e: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Android] GIF image loading causes file descriptor leak (FD count grows indefinitely) only when images are visible on screen

2 participants