-
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] cache and reuse openGL framebuffer attachments. #56746
Conversation
@@ -207,13 +207,6 @@ void RenderPassGLES::ResetGLState(const ProcTableGLES& gl) { | |||
} | |||
|
|||
GLuint fbo = GL_NONE; | |||
fml::ScopedCleanupClosure delete_fbo([&gl, &fbo]() { | |||
if (fbo != GL_NONE) { | |||
gl.BindFramebuffer(GL_FRAMEBUFFER, GL_NONE); |
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.
from looking at profiles binding this framebuffer actually triggers a driver workload to flush from fb0.
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 looks like it will do it, did you get a chance to profile it? Storing the fbo on the texture is a bit weird. I think it might make more sense to store on the render pass. Otherwise looking good.
profiles seem slightly faster but I'd want real benchmarks to confirm.
The render pass is a temporary object/one shot object, so storing it there doesn't buy us anything. This matches how we cache the vulkan framebuffer object on the color attachment. |
@@ -217,6 +217,9 @@ TextureGLES::TextureGLES(std::shared_ptr<ReactorGLES> reactor, | |||
// |Texture| | |||
TextureGLES::~TextureGLES() { | |||
reactor_->CollectHandle(handle_); | |||
if (cached_fbo_ != GL_NONE) { | |||
reactor_->GetProcTable().DeleteFramebuffers(1, &cached_fbo_); |
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'm a bit fuzzy on how reactor is supposed to work. Are you supposed to schedule this to be deleted with it?
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.
only if its stored in the reactor as a Handle, which this one isn't
…159345) flutter/engine@6f941c9...202506d 2024-11-22 [email protected] [Impeller] cache and reuse openGL framebuffer attachments. (flutter/engine#56746) 2024-11-22 [email protected] Roll Skia from 700e685861c8 to e7caf38140ce (25 revisions) (flutter/engine#56756) 2024-11-22 [email protected] Roll Dart SDK from c1106f7e4cde to 141291fd570d (1 revision) (flutter/engine#56748) 2024-11-22 [email protected] [engine] more consistently flush dart event loop, run vsync callback immediately (flutter/engine#56738) 2024-11-22 [email protected] Extract backend-specific code in ShellTestPlatformView (flutter/engine#56722) 2024-11-22 [email protected] Eliminate ShellTestPlatformView::BackendType::kDefaultBackendType (flutter/engine#56744) 2024-11-22 [email protected] Roll Skia from 2614590b4f32 to 700e685861c8 (1 revision) (flutter/engine#56725) 2024-11-22 [email protected] Roll Dart SDK from b36e4d731d67 to c1106f7e4cde (12 revisions) (flutter/engine#56742) 2024-11-22 [email protected] [Impeller] libImpeller: A C++ wrapper to the Impeller API. (flutter/engine#56682) 2024-11-21 [email protected] [Impeller] Run simulator tests with Impeller enabled. (flutter/engine#56740) 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 [email protected],[email protected] 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
…visions) (#159345)" (#159360) <!-- start_original_pr_link --> Reverts: #159345 <!-- end_original_pr_link --> <!-- start_initiating_author --> Initiated by: hannah-hyj <!-- end_initiating_author --> <!-- start_revert_reason --> Reason for reverting: tree is red on " Linux_build_test flutter_gallery__transition_perf_hybrid" after engine auto roll <!-- end_revert_reason --> <!-- start_original_pr_author --> Original PR Author: engine-flutter-autoroll <!-- end_original_pr_author --> <!-- start_reviewers --> Reviewed By: {fluttergithubbot} <!-- end_reviewers --> <!-- start_revert_body --> This change reverts the following previous change: flutter/engine@6f941c9...202506d 2024-11-22 [email protected] [Impeller] cache and reuse openGL framebuffer attachments. (flutter/engine#56746) 2024-11-22 [email protected] Roll Skia from 700e685861c8 to e7caf38140ce (25 revisions) (flutter/engine#56756) 2024-11-22 [email protected] Roll Dart SDK from c1106f7e4cde to 141291fd570d (1 revision) (flutter/engine#56748) 2024-11-22 [email protected] [engine] more consistently flush dart event loop, run vsync callback immediately (flutter/engine#56738) 2024-11-22 [email protected] Extract backend-specific code in ShellTestPlatformView (flutter/engine#56722) 2024-11-22 [email protected] Eliminate ShellTestPlatformView::BackendType::kDefaultBackendType (flutter/engine#56744) 2024-11-22 [email protected] Roll Skia from 2614590b4f32 to 700e685861c8 (1 revision) (flutter/engine#56725) 2024-11-22 [email protected] Roll Dart SDK from b36e4d731d67 to c1106f7e4cde (12 revisions) (flutter/engine#56742) 2024-11-22 [email protected] [Impeller] libImpeller: A C++ wrapper to the Impeller API. (flutter/engine#56682) 2024-11-21 [email protected] [Impeller] Run simulator tests with Impeller enabled. (flutter/engine#56740) 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 [email protected],[email protected] 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 <!-- end_revert_body --> Co-authored-by: auto-submit[bot] <[email protected]>
…159364) flutter/engine@6f941c9...f776c3a 2024-11-22 [email protected] Roll Skia from e7caf38140ce to c3d9596a93f8 (2 revisions) (flutter/engine#56765) 2024-11-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[engine] more consistently flush dart event loop, run vsync callback immediately (#56738)" (flutter/engine#56767) 2024-11-22 [email protected] Roll Dart SDK from 8b65a7a628e2 to eb01a0430f72 (2 revisions) (flutter/engine#56764) 2024-11-22 [email protected] [Impeller] delete Impeller sim opt out. (flutter/engine#56706) 2024-11-22 [email protected] [Impeller] Ensure that SnapshotControllerImpeller has a rendering context before creating the snapshot (flutter/engine#56743) 2024-11-22 [email protected] [DisplayList] migrate DlColorSource objects to Impeller geometry (flutter/engine#56735) 2024-11-22 [email protected] [Impeller] libImpeller: Tinker on the README. (flutter/engine#56761) 2024-11-22 [email protected] [Impeller] dont create temp vec for discard. (flutter/engine#56759) 2024-11-22 [email protected] Roll Fuchsia Linux SDK from zhFzwYCH-N_wasTnM... to D5CBHuB2c-v3Zai-c... (flutter/engine#56757) 2024-11-22 [email protected] Roll Dart SDK from 141291fd570d to 8b65a7a628e2 (1 revision) (flutter/engine#56755) 2024-11-22 [email protected] [Impeller] cache and reuse openGL framebuffer attachments. (flutter/engine#56746) 2024-11-22 [email protected] Roll Skia from 700e685861c8 to e7caf38140ce (25 revisions) (flutter/engine#56756) 2024-11-22 [email protected] Roll Dart SDK from c1106f7e4cde to 141291fd570d (1 revision) (flutter/engine#56748) 2024-11-22 [email protected] [engine] more consistently flush dart event loop, run vsync callback immediately (flutter/engine#56738) 2024-11-22 [email protected] Extract backend-specific code in ShellTestPlatformView (flutter/engine#56722) 2024-11-22 [email protected] Eliminate ShellTestPlatformView::BackendType::kDefaultBackendType (flutter/engine#56744) 2024-11-22 [email protected] Roll Skia from 2614590b4f32 to 700e685861c8 (1 revision) (flutter/engine#56725) 2024-11-22 [email protected] Roll Dart SDK from b36e4d731d67 to c1106f7e4cde (12 revisions) (flutter/engine#56742) 2024-11-22 [email protected] [Impeller] libImpeller: A C++ wrapper to the Impeller API. (flutter/engine#56682) 2024-11-21 [email protected] [Impeller] Run simulator tests with Impeller enabled. (flutter/engine#56740) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from zhFzwYCH-N_w to D5CBHuB2c-v3 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 [email protected],[email protected] 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
Creating and attaching textures/render buffers to a FBO is an expensive operation. Similar to how we cache vulkan framebuffers/render passes, we can cache the FBO object on the color0 texture to avoid extra state invalidation.
Part of flutter/flutter#159177