-
Notifications
You must be signed in to change notification settings - Fork 6k
[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
…ngine#56746) 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#159177
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