-
Notifications
You must be signed in to change notification settings - Fork 6k
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
[Impeller] Delete any remaining GL objects during destruction of the ReactorGLES #56361
[Impeller] Delete any remaining GL objects during destruction of the ReactorGLES #56361
Conversation
…ReactorGLES At shutdown time the ReactorGLES may still be holding handles of GL objects. These objects should be cleaned up when the reactor is deleted. This leak can be seen by running DlGoldenTest.ShimmerTest, which takes a series of screenshots. Each screenshot creates an AiksContext. Without this change, the textures in the AiksContext's ReactorGLES will be leaked after the AiksContext is destroyed.
@@ -23,7 +72,13 @@ ReactorGLES::ReactorGLES(std::unique_ptr<ProcTableGLES> gl) | |||
is_valid_ = true; | |||
} | |||
|
|||
ReactorGLES::~ReactorGLES() = default; | |||
ReactorGLES::~ReactorGLES() { | |||
for (auto& handle : handles_) { |
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.
This needs to be guarded by a CanReactOnCurrentThread
. Otherwise, there is no guarantee that the thread can actually perform OpenGL operations. Perhaps there should be a shutdown method that can be explicitly called in addition to being called from the destructor. If there are pending handles and there can be no reactions on the current thread, then we could just log.
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.
Added a CanReactOnCurrentThread
check.
Unfortunately, there does not seem to be an obvious place for the shell to clean up the ReactorGLES
on a reactor worker thread during shutdown. The ReactorGLES
is not deleted until the PlatformView
is deleted on the platform thread in the final phase of shell shutdown.
The shell will be relying on destruction of the EGL context to clean up these objects.
…on of the ReactorGLES (flutter/engine#56361)
…on of the ReactorGLES (flutter/engine#56361)
…158218) flutter/engine@e5e06c9...a3741d6 2024-11-05 jason-simmons@users.noreply.github.com Increase timeouts for Linux Fuchsia and Linux Web Framework Tests builders (flutter/engine#56387) 2024-11-05 chris@bracken.jp iOS: Use standard Obj-C cflags for ios_test_flutter (flutter/engine#56384) 2024-11-05 robert.ancell@canonical.com Remove unnecessary method for getting engine switches (command line). (flutter/engine#56265) 2024-11-05 robert.ancell@canonical.com Remove FlScrollingViewDelegate (flutter/engine#56270) 2024-11-05 chris@bracken.jp fml: delete scoped_nsobject.h,mm (flutter/engine#56382) 2024-11-05 skia-flutter-autoroll@skia.org Roll Skia from b3be9cb59fe8 to 82175b411c80 (2 revisions) (flutter/engine#56383) 2024-11-05 jason-simmons@users.noreply.github.com [Impeller] Delete any remaining GL objects during destruction of the ReactorGLES (flutter/engine#56361) 2024-11-05 mdebbar@google.com [web] Switch all fonts to WOFF2 (non-split) (flutter/engine#56035) 2024-11-05 jonahwilliams@google.com [Impeller] exploit content context options' perfect hash function. (flutter/engine#56360) 2024-11-05 skia-flutter-autoroll@skia.org Roll Skia from 7989f782dbf4 to b3be9cb59fe8 (6 revisions) (flutter/engine#56380) 2024-11-05 skia-flutter-autoroll@skia.org Roll Dart SDK from b39c729740eb to 3e840340c412 (1 revision) (flutter/engine#56377) 2024-11-05 jonahwilliams@google.com [Impeller] match Skia's old VMA default block size. (flutter/engine#56368) 2024-11-05 chris@bracken.jp iOS: Refactor ShellTestPlatformViewMetal (flutter/engine#56370) 2024-11-05 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from amgHXcqtplha8LuI_... to z1otZzn3yKuGnu1st... (flutter/engine#56374) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from amgHXcqtplha to z1otZzn3yKuG If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC jsimmons@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: 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
…ReactorGLES (flutter/engine#56361) At shutdown time the ReactorGLES may still be holding handles of GL objects. These objects should be cleaned up when the reactor is deleted. This leak can be seen by running DlGoldenTest.ShimmerTest, which takes a series of screenshots. Each screenshot creates an AiksContext. Without this change, the textures in the AiksContext's ReactorGLES will be leaked after the AiksContext is destroyed.
At shutdown time the ReactorGLES may still be holding handles of GL objects. These objects should be cleaned up when the reactor is deleted.
This leak can be seen by running DlGoldenTest.ShimmerTest, which takes a series of screenshots. Each screenshot creates an AiksContext. Without this change, the textures in the AiksContext's ReactorGLES will be leaked after the AiksContext is destroyed.