Skip to content

fix: swap app and engine version in vk::ApplicationInfo#181432

Merged
auto-submit[bot] merged 3 commits into
flutter:masterfrom
jtmcdole:pixel10_vulkan
Jan 28, 2026
Merged

fix: swap app and engine version in vk::ApplicationInfo#181432
auto-submit[bot] merged 3 commits into
flutter:masterfrom
jtmcdole:pixel10_vulkan

Conversation

@jtmcdole

@jtmcdole jtmcdole commented Jan 24, 2026

Copy link
Copy Markdown
Member

The driver on PIxel 10 requires Flutter to set the engine version to something higher than 1.0. We had previous set the application version without effect. With this change, I see we can get a valid vulkan context.

  • ran some testing against reported errors (saw none)
  • compiled and ran wonderous with validation layers (runs)
  • still researching

towards: #179812

On a pixel 10, the Vulkan engine version must be bumped up past 1.0 and any other additional checks gating Vulkan removed. It must be confirmed that Impeller is able to create a Vulkan context.

Pixel 10 gets a Vulkan context with just the engine version bump.

The usual sample applications must render accurately.

wonderous and failing code passes and renders correctly

The reduced test cases in the internal doc must be tested.

it does.

If testing is successful, the engine version update may be committed. This is necessary for enabling Vulkan on Pixel 10 but not sufficient to ensure stability of newer Vulkan enabled Impeller applications on Pixel 10 devices that have not yet been updated.

This PR does that.

Impeller must detect the driver version and self-reject Vulkan on device older than the current Pixel 10 GPU driver version. The IHV reports that a safe conservative driver version is >= 25.1 and any verification must happen on versions past this. Impeller should still base its checks on the driver version that we verify correctness on. What we have today works well and it is not advised to introduce instability for the sake of enabling Vulkan on this device.

Done - driver_version appears to be a build number, so monotonically increasing.

@flutter-dashboard

Copy link
Copy Markdown

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Jan 24, 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 correctly swaps the application and engine versions in the vk::ApplicationInfo structure. This change is necessary to work around a driver issue on certain devices that require the engineVersion to be greater than 1.0. The code change is accompanied by updates to comments to improve clarity and fix a typo, making the implementation more understandable. The fix is direct and effectively addresses the described problem.

Comment thread engine/src/flutter/impeller/renderer/backend/vulkan/context_vk.cc Outdated
This checks for driver version 6794074, device id 0x71061212
@jtmcdole jtmcdole requested a review from gaaclarke January 27, 2026 21:49

@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, just a few documentation questions

// The driver version 25.1 or greater is required - which is device specific
// to 6794074 or greater.
if (vendor_ == VendorVK::kPowerVR && device_id_ == kPixel10DeviceID &&
driver_version_ < kPixel10MinDriverVersion) {

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.

Are these number sequential? Can we do a less than on them?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This looks like its an always increasing number from CI/CD. The raw numbers are vendor specific, but they look increasing on khronos vulkan db. There are no public verifications that this is a good value to test - nor are Chrome, ANGEL, Dawn, and others doing more than device id / vendor id testing.

I am more comfortable removing the driver version test since Android is the one blocking us from getting a Vulkan context - but I believe Chinmay was concerned that they added that before they had all the fixes in.

I am not comfortable parsing "25.1@6794074" from the Vulkan call vkGetPhysicalDeviceProperties2 driverInfo - especially since there is no assurance they will always follow x.y format.

https://vulkan.gpuinfo.org/listreports.php?devicename=Google+Pixel+10+Pro+XL&platform=android
https://vulkan.gpuinfo.org/listreports.php?devicename=Google+Pixel+10&platform=android
https://vulkan.gpuinfo.org/listreports.php?devicename=Google+Pixel+10+Pro+Fold&platform=android
https://vulkan.gpuinfo.org/listreports.php?devicename=Google+Pixel+10+Pro&platform=android

@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, this is kind of funky but I think this is as good as we can get, thanks for updating the documentation to make it more clear.

@jtmcdole

Copy link
Copy Markdown
Member Author

lgtm, this is kind of funky but I think this is as good as we can get, thanks for updating the documentation to make it more clear.

Just to be clear: 6794074 is shown in the Hardware Capability Viewer (4.10) on Core 1.2 as "25.1@6794074" - which is the DDK version string. 6794074 is the driver version we get from Core 1.0 which translates with VK-MAJOR/MINOR/PATCH as 1.634.2906 - but the numbers is totally from their CI somewhere. If they released a "24.2@7000000" on a Pixel 10, I don't know what to tell you is the valid number to care about... 7000000 would be in the driver version info as 1.684.4032, but I would assume 24.2 (which is going backwards) would still pass.

all the more reason to have an APK from us in their CTS tests.

@jtmcdole jtmcdole added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 27, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 28, 2026
@auto-submit

auto-submit Bot commented Jan 28, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/181432, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label.

@jtmcdole jtmcdole added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 28, 2026
@jtmcdole

Copy link
Copy Markdown
Member Author

Google testing was a flake. Re-ran and passed.

@auto-submit auto-submit Bot added this pull request to the merge queue Jan 28, 2026
Merged via the queue into flutter:master with commit 588d429 Jan 28, 2026
183 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 28, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Jan 29, 2026
Roll Flutter from dfd92b773219 to da72d5936d69 (39 revisions)

flutter/flutter@dfd92b7...da72d59

2026-01-29 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ Tool / Engine ] Cleanup x86 references (#181152)" (flutter/flutter#181643)
2026-01-29 [email protected] Roll Skia from 174db42b7300 to 89df65f8324c (2 revisions) (flutter/flutter#181636)
2026-01-29 [email protected] [material/menu_anchor.dart] Add animations to MenuAnchor. (flutter/flutter#176494)
2026-01-28 [email protected] Roll Skia from 8e09f8a82251 to 174db42b7300 (6 revisions) (flutter/flutter#181627)
2026-01-28 [email protected] Send statusBarTouch events via dedicated messages (flutter/flutter#179643)
2026-01-28 [email protected] test: Improve DropdownMenuFormField tests (flutter/flutter#181369)
2026-01-28 [email protected] Account for vec3 padding in Metal (flutter/flutter#181563)
2026-01-28 [email protected] [ Tool / Engine ] Cleanup x86 references (flutter/flutter#181152)
2026-01-28 [email protected] Fix the issue on macOS where, after a hot restart with multiple windows, unresponsive windows are left behind. (flutter/flutter#180287)
2026-01-28 [email protected] Roll Skia from 675444e94bc9 to 8e09f8a82251 (7 revisions) (flutter/flutter#181606)
2026-01-28 [email protected] Roll Packages from e37af11 to 1cb2148 (5 revisions) (flutter/flutter#181608)
2026-01-28 [email protected] fix: swap app and engine version in vk::ApplicationInfo (flutter/flutter#181432)
2026-01-28 [email protected] Adds impeller backend to skia gold client (flutter/flutter#181503)
2026-01-28 [email protected] Remove chrome_and_driver dependency where it's not needed (flutter/flutter#178174)
2026-01-28 [email protected] chore: Windows_mokey basic_material_app_win__compile !bringup (flutter/flutter#180985)
2026-01-28 [email protected] Fix generating both `settings.gradle` and `settings.gradle.kts` for plugins (flutter/flutter#181592)
2026-01-28 [email protected] Roll Skia from 6614f89de521 to 675444e94bc9 (3 revisions) (flutter/flutter#181587)
2026-01-28 [email protected] Fix `todayBorder` todayBorder color is incorrectly overridden by `todayForegroundColor` in CalendarDatePicker (flutter/flutter#178792)
2026-01-28 [email protected] Roll Skia from 8f1695a4b328 to 6614f89de521 (2 revisions) (flutter/flutter#181583)
2026-01-28 [email protected] feat: add RoundedSuperellipseInputBorder (flutter/flutter#177220)
2026-01-28 [email protected] Roll Dart SDK from 38e351498549 to f10dcbfca98f (2 revisions) (flutter/flutter#181582)
2026-01-28 [email protected] Roll Skia from f424d58e37a3 to 8f1695a4b328 (6 revisions) (flutter/flutter#181577)
2026-01-28 [email protected] Remove unused code paths  in `PlatformViewsController.java` (flutter/flutter#181393)
2026-01-28 [email protected] feat: add onEnd to AnimatedCrossFade (flutter/flutter#181455)
2026-01-28 [email protected] Don't pass bounds to saveLayer call when painting ImageFilter (flutter/flutter#181353)
2026-01-28 [email protected] test: Clarify failure messages on gestures/debug_test.dart (flutter/flutter#181109)
2026-01-27 [email protected] Roll Fuchsia Linux SDK from akraNGn2lw4T1msgZ... to adhoq9ouVRh0xzkm3... (flutter/flutter#181571)
2026-01-27 [email protected] Roll Dart SDK from 4c7cb0a1d07d to 38e351498549 (4 revisions) (flutter/flutter#181570)
2026-01-27 [email protected] Make sure that an AnimatedPadding doesn't crash in 0x0 environment (flutter/flutter#181235)
2026-01-27 [email protected] Make sure that an ImageFiltered doesn't crash at 0x0 environment (flutter/flutter#181067)
2026-01-27 [email protected] Marks firebase_release_smoke_test to be unflaky (flutter/flutter#181308)
2026-01-27 [email protected] Fix remove material import box decoration test (flutter/flutter#181253)
2026-01-27 [email protected] Roll Skia from c2754838b077 to f424d58e37a3 (8 revisions) (flutter/flutter#181564)
2026-01-27 [email protected] Make sure that an AnimatedAlign doesn't crash in 0x0 environment (flutter/flutter#181361)
2026-01-27 [email protected] Make sure that an ImageIcon doesn't crash in 0x0 environment (flutter/flutter#181099)
2026-01-27 [email protected] Make sure that an AnimatedContainer doesn't crash in 0x0 environment (flutter/flutter#181198)
2026-01-27 [email protected] Make sure that an AnimatedRotation doesn't crash in 0x0 environment (flutter/flutter#181486)
2026-01-27 [email protected] Make sure that an AnimatedPositionedDirectional doesn't crash in 0x0 … (flutter/flutter#181451)
2026-01-27 [email protected] Merge changelog for 3.38.8. (flutter/flutter#181558)

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.

...
flutter-zl pushed a commit to flutter-zl/flutter that referenced this pull request Feb 10, 2026
The driver on PIxel 10 requires Flutter to set the `engine` version to
something higher than 1.0. We had previous set the application version
without effect. With this change, I see we can get a valid vulkan
context.

- ran some testing against reported errors (saw none)
- compiled and ran wonderous with validation layers (runs)
- still researching 

towards: flutter#179812


> On a pixel 10, the Vulkan engine version must be bumped up past 1.0
and any other additional checks gating Vulkan removed. It must be
confirmed that Impeller is able to create a Vulkan context.

Pixel 10 gets a Vulkan context with just the engine version bump.

> The usual sample applications must render accurately.

wonderous and failing code passes and renders correctly

> The reduced test cases in the internal doc must be tested.

it does.

> If testing is successful, the engine version update may be committed.
This is necessary for enabling Vulkan on Pixel 10 but not sufficient to
ensure stability of newer Vulkan enabled Impeller applications on Pixel
10 devices that have not yet been updated.

This PR does that.

> Impeller must detect the driver version and self-reject Vulkan on
device older than the current Pixel 10 GPU driver version. The IHV
reports that a safe conservative driver version is >= 25.1 and any
verification must happen on versions past this. Impeller should still
base its checks on the driver version that we verify correctness on.
What we have today works well and it is not advised to introduce
instability for the sake of enabling Vulkan on this device.

Done - driver_version appears to be a build number, so monotonically
increasing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

2 participants