Sitelet https://github.com/flutter/flutter/pull/190116
Skip to content

[Impeller] Do not acquire an unneeded image in KHRSwapchainVK if the swapchain must be recreated due to a size change - #190116

Merged
auto-submit[bot] merged 2 commits into
flutter:masterfrom
jason-simmons:bug_190114
Jul 31, 2026
Merged

auto-submit[bot] merged 2 commits into
flutter:masterfrom
jason-simmons:bug_190114

Conversation

@jason-simmons

Copy link
Copy Markdown
Member

KHRSwapchainVK::AcquireNextDrawable was calling vkAcquireNextImageKHR regardless of whether the KHRSwapchainImplVK's size matched the current size of the KHRSwapchainVK. If there was a size change, then the resulting image would never be presented, which can cause resource leaks even after the old swapchain is destroyed.

This PR avoids the call to KHRSwapchainImplVK::AcquireNextDrawable and vkAcquireNextImageKHR if there is a size mismatch.

Fixes #190114

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Jul 28, 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 modifies KHRSwapchainVK::AcquireNextDrawable to avoid calling the underlying implementation's acquire method when there is a size mismatch, preventing potential image leaks. It also adds a corresponding unit test to verify this behavior. The review feedback suggests adding null-pointer assertions (ASSERT_NE) in the new unit test before dereferencing the acquired image to prevent potential segmentation faults if the acquisition fails.

@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Jul 28, 2026
@jason-simmons
jason-simmons requested a review from gaaclarke July 28, 2026 00:25

@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

…swapchain must be recreated due to a size change

KHRSwapchainVK::AcquireNextDrawable was calling vkAcquireNextImageKHR
regardless of whether the KHRSwapchainImplVK's size matched the current
size of the KHRSwapchainVK.  If there was a size change, then the
resulting image would never be presented, which can cause resource
leaks even after the old swapchain is destroyed.

This PR avoids the call to KHRSwapchainImplVK::AcquireNextDrawable
and vkAcquireNextImageKHR if there is a size mismatch.

Fixes flutter#190114
@jason-simmons jason-simmons added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 31, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Jul 31, 2026
Merged via the queue into flutter:master with commit 8608df9 Jul 31, 2026
23 of 24 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 31, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Aug 9, 2026
…12401)

Manual roll Flutter from 2757a77a73df to e52f01c920ad (47 revisions)

Manual roll requested by stuartmorgan@google.com

flutter/flutter@2757a77...e52f01c

2026-07-31 jason-simmons@users.noreply.github.com [Impeller] Execute PipelineCompileQueue jobs in the order that they were added (flutter/flutter#190262)
2026-07-31 engine-flutter-autoroll@skia.org Roll Packages from 7d17fc8 to 5351d8c (5 revisions) (flutter/flutter#190351)
2026-07-31 engine-flutter-autoroll@skia.org Roll Skia from dcbd015c9646 to 7ef86a5b0eb9 (4 revisions) (flutter/flutter#190347)
2026-07-31 jason-simmons@users.noreply.github.com [Impeller] Do not acquire an unneeded image in KHRSwapchainVK if the swapchain must be recreated due to a size change (flutter/flutter#190116)
2026-07-31 jason-simmons@users.noreply.github.com Remove the --enable-serial-gc engine flag (flutter/flutter#190310)
2026-07-31 36861262+QuncCccccc@users.noreply.github.com Migrate platform_channel_swift example to material_ui (flutter/flutter#190308)
2026-07-31 chris@bracken.jp macOS: Set static text accessibility role for read-only text fields (flutter/flutter#190330)
2026-07-31 engine-flutter-autoroll@skia.org Roll Dart SDK from 96f49fc43f59 to c3acfc2479f6 (1 revision) (flutter/flutter#190336)
2026-07-31 engine-flutter-autoroll@skia.org Roll Skia from 07f08414dd66 to dcbd015c9646 (1 revision) (flutter/flutter#190333)
2026-07-31 zhongliu88889@gmail.com [web] Autofill all AutofillGroup fields in semantics mode (flutter/flutter#187108)
2026-07-31 chris@bracken.jp iOS: Configure test task runner thread at display QoS (flutter/flutter#190283)
2026-07-31 engine-flutter-autoroll@skia.org Roll Skia from a1109355de78 to 07f08414dd66 (5 revisions) (flutter/flutter#190328)
2026-07-31 chris@bracken.jp Support reduceMotion accessibility feature in MediaQuery (flutter/flutter#190287)
2026-07-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 43f7de5f4977 to 96f49fc43f59 (4 revisions) (flutter/flutter#190312)
2026-07-30 mu7ammadkamel@hotmail.com fix: text selection two handles directionality. (flutter/flutter#179928)
2026-07-30 matt.boetger@gmail.com Add java/gradle check when gradle crashes (flutter/flutter#189997)
2026-07-30 41765610+ahyangnb@users.noreply.github.com [Impeller] Add filterQuality support to ImageFilter.shader (flutter/flutter#188544)
2026-07-30 dkwingsmt@users.noreply.github.com [flutter/flutter] Migrate multiple_windows example to material_ui (flutter/flutter#190313)
2026-07-30 engine-flutter-autoroll@skia.org Roll Skia from 50cf67910462 to a1109355de78 (6 revisions) (flutter/flutter#190306)
2026-07-30 31859944+LongCatIsLooong@users.noreply.github.com Migrate swift xctests to Swift testing tests (flutter/flutter#187801)
2026-07-30 36861262+QuncCccccc@users.noreply.github.com Migrates the platform_channel example to material_ui (flutter/flutter#190253)
2026-07-30 chris@bracken.jp iOS: Drop unnecessary @mainactor from VSyncClientTests (flutter/flutter#190285)
2026-07-30 evanwall@buffalo.edu Add nullptr check to isOpaque (flutter/flutter#189796)
2026-07-30 bdero@google.com [Flutter GPU] Bind uniforms and textures by cached reflection index (flutter/flutter#189820)
2026-07-30 jmccandless@google.com Migrate layers example to material_ui (flutter/flutter#190237)
2026-07-30 bernaferrari2@gmail.com Add `ShapeBorder` hit test fast paths (flutter/flutter#187962)
2026-07-30 codefu@google.com ci: mac-must-wait part duex (flutter/flutter#190295)
2026-07-30 engine-flutter-autoroll@skia.org Roll Skia from 491301f393d1 to 50cf67910462 (3 revisions) (flutter/flutter#190294)
2026-07-30 engine-flutter-autoroll@skia.org Roll Packages from dd11626 to 7d17fc8 (1 revision) (flutter/flutter#190293)
2026-07-30 engine-flutter-autoroll@skia.org Roll Skia from 177de1940bf2 to 491301f393d1 (1 revision) (flutter/flutter#190279)
2026-07-30 engine-flutter-autoroll@skia.org Roll Skia from b8bda91f02db to 177de1940bf2 (5 revisions) (flutter/flutter#190272)
2026-07-30 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from J8rVTlBnjnUpuHYk3... to _J8wM3kyQpLN9wvRD... (flutter/flutter#190273)
2026-07-30 engine-flutter-autoroll@skia.org Roll Skia from 78afc18c9ba0 to b8bda91f02db (3 revisions) (flutter/flutter#190268)
2026-07-30 154381524+flutteractionsbot@users.noreply.github.com Revert: Split the platform and cpuArch part of TargetPlatform (flutter/flutter#190258)
2026-07-30 developeryusuf@icloud.com Return null from RenderProxyBoxMixin.computeDryBaseline when the child has no baseline (flutter/flutter#189723)
2026-07-30 engine-flutter-autoroll@skia.org Roll Skia from 6fea713d32ec to 78afc18c9ba0 (4 revisions) (flutter/flutter#190257)
2026-07-30 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#190259)
2026-07-29 brackenavaron@gmail.com [cross imports] Check examples cross imports (flutter/flutter#187662)
2026-07-29 codefu@google.com ci: mac verify binaries still has to wait on linux_host_engine (flutter/flutter#190239)
2026-07-29 30870216+gaaclarke@users.noreply.github.com Adds analytics to macos impeller opt in/out (flutter/flutter#190220)
2026-07-29 engine-flutter-autoroll@skia.org Roll Skia from 0f35bba4945c to 6fea713d32ec (6 revisions) (flutter/flutter#190230)
2026-07-29 chris@bracken.jp iOS: Fix Swift warning in TracingTests (flutter/flutter#190203)
2026-07-29 matt.boetger@gmail.com Convert all gradle-wrapper.properties in /dev to use distribution 'bin' (flutter/flutter#190226)
2026-07-29 engine-flutter-autoroll@skia.org Roll Packages from 3e63635 to dd11626 (11 revisions) (flutter/flutter#190216)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD 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.

Resource leak when rotating the screen on Android with Impeller/Vulkan

2 participants