-
Notifications
You must be signed in to change notification settings - Fork 5.9k
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] More sundry fixes to the Vulkan backend. #40603
Conversation
* Fix mip-map generation in unit-tests where the command buffer was not submitted. * Cleanup descriptor counts being always 1 in Vulkan code-gen. * Reworked capabilities. Platforms can add to the base capability set. * Vulkan backend picks between more available color and stencil formats. * Descriptor pools are dynamically sized. * Layout transitions are more explicit. Both allocated and swapchain images track their own layouts and redundant transitions are avoided. * Objects active in a pending command buffer are collected but the waits happen on a separate fence waiter. Thread is named "io.flutter.impeller.fence_waiter". * Added queue and command buffer instant markers for better traces. * Command pools and their buffers are now thread local. Fixes sync validation failure. * Debug reports are now more readable and command buffer and queue breadcrumbs will be displayed on a validation report. * Staging buffers are back. * Pipeline caches have been wired up. After 50 frames, the current Vulkan pipeline cache will be written out to disk for subsequent launches. Writes will happen on a background worker. * Runtime stages have been wired up. But the build rules to provide the right stages are still remaining. Fixes flutter/flutter#121536 Fixes flutter/flutter#121627 Fixes flutter/flutter#121632 Fixes flutter/flutter#120499
The only change here that affects non-Vulkan backends is reworking the capabilities. Rest should just be fixing various functionality and performance issues in the backend. |
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.
LGTM ship 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.
Let's go!
I have not tested this but am looking forward to doing so.
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.
lgtm
Clarifying question. It looks like this change retains the #if flase
here: https://github.com/flutter/engine/blob/main/shell/platform/android/platform_view_android.cc#L50. Is that correct? When should that be removed?
I'm filing followup issues so we can divvy up the remaining tasks. Just want to land this before lighting up new configurations. |
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've verified the failures from the last attempt are addressed, the tests all pass and I've gone over the non-Vulkan bits to make sure I'm not interfering with any Metal backend stuff with this. Landing. |
* Fix mip-map generation in unit-tests where the command buffer was not submitted. * Cleanup descriptor counts being always 1 in Vulkan code-gen. * Reworked capabilities. Platforms can add to the base capability set. * Vulkan backend picks between more available color and stencil formats. * Descriptor pools are dynamically sized. * Layout transitions are more explicit. Both allocated and swapchain images track their own layouts and redundant transitions are avoided. * Objects active in a pending command buffer are collected but the waits happen on a separate fence waiter. Thread is named "io.flutter.impeller.fence_waiter". * Added queue and command buffer instant markers for better traces. * Command pools and their buffers are now thread local. Fixes sync validation failure. * Debug reports are now more readable and command buffer and queue breadcrumbs will be displayed on a validation report. * Staging buffers are back. * Pipeline caches have been wired up. After 50 frames, the current Vulkan pipeline cache will be written out to disk for subsequent launches. Writes will happen on a background worker. * Runtime stages have been wired up. But the build rules to provide the right stages are still remaining. Fixes flutter/flutter#121536 Fixes flutter/flutter#121627 Fixes flutter/flutter#121632 Fixes flutter/flutter#120499
…sions) (#123568) * c75811491 Roll Dart SDK from 17655a04d99a to a040e32db8f2 (1 revision) (flutter/engine#40612) * 274196e22 Make PathComponent POD, allow querying specific component type counts (flutter/engine#40605) * f59822430 [Impeller] Adds golden image tests. (flutter/engine#40366) * f3b880d7a Roll Dart SDK from a040e32db8f2 to 25d7c5d88496 (1 revision) (flutter/engine#40618) * a5002f6b6 Roll Fuchsia Linux SDK from jdkyVHuAgQFiwEVQj... to 6JDOgmv1GqjN0MccU... (flutter/engine#40622) * bdee86a83 Roll Dart SDK from 25d7c5d88496 to 57061b644e84 (1 revision) (flutter/engine#40624) * 6b27c106e Roll Fuchsia Mac SDK from Nrn4D-aMBpMe5ngaF... to odB7mmGuAH51yrWgy... (flutter/engine#40625) * 1febe9dc3 Roll Skia from 497dc2e1f01f to 17bce5f4f78f (2 revisions) (flutter/engine#40629) * 3f9008208 [Impeller] More sundry fixes to the Vulkan backend. (flutter/engine#40603) * 20cf8ebb4 Roll Skia from 17bce5f4f78f to d06e59e7d041 (1 revision) (flutter/engine#40630) * 538c7eaa2 Roll Fuchsia Linux SDK from 6JDOgmv1GqjN0MccU... to smNcvjxC6Ja3FkteX... (flutter/engine#40631) * 2b5e95e6e Roll Fuchsia Mac SDK from odB7mmGuAH51yrWgy... to 34M7LHe2DUL5mebOm... (flutter/engine#40633) * 2270e07e7 Roll Skia from d06e59e7d041 to 009ed54d103d (1 revision) (flutter/engine#40644) * 6c5be6a3b Roll Fuchsia Linux SDK from smNcvjxC6Ja3FkteX... to y4h2rtyt6Mx8xHEte... (flutter/engine#40647) * eefb0be0a Roll Fuchsia Mac SDK from 34M7LHe2DUL5mebOm... to d30zLnNyJDgYNmKD4... (flutter/engine#40649) * d5e7ff24b [Impeller] Enable RendererTest::TheImpeller for Vulkan. (flutter/engine#40634) * 61b92a725 [Impeller] Keep impeller scene build working (flutter/engine#40635) * 5be21e2bd [Impeller] Fix AtlasContents crash (flutter/engine#40637) * ac769511e [Impeller] Fix accumulating translucency opacity peephole bug (flutter/engine#40639) * 1cf3bf117 [Impeller] Fix stroke cap disconnection (flutter/engine#40643) * 551f089c6 [Impeller] Remove verbose validation logs in the Vulkan pipeline cache. (flutter/engine#40651) * 567be2665 Roll Dart SDK from 57061b644e84 to c1185c030a98 (2 revisions) (flutter/engine#40654) * 3ecc5cc53 Revert Dart SDK to a040e32db8f2 (flutter/engine#40656) * 60b6a1f7b Roll Fuchsia Linux SDK from y4h2rtyt6Mx8xHEte... to v0tCO5SkPScqIBWIr... (flutter/engine#40655) * 736b4076f Roll Skia from 009ed54d103d to 4d02e783654f (1 revision) (flutter/engine#40657) * 256ae6010 Roll Skia from 4d02e783654f to 4ca827754bc1 (2 revisions) (flutter/engine#40659) * a3d5d3274 Roll Fuchsia Mac SDK from d30zLnNyJDgYNmKD4... to trm3jGwgZopG-wITx... (flutter/engine#40660) * 5f517d646 Bump actions/checkout from 3.4.0 to 3.5.0 (flutter/engine#40662) * 708bf70ab Remove timezone from flutter (flutter/engine#40588) * d21f657e6 Post 3.0 lint sync (flutter/engine#40394) * d58d7d999 [Impeller] Document EntityPass, make positioning less confusing (flutter/engine#40636) * 6c3f5fe15 Roll Fuchsia Linux SDK from v0tCO5SkPScqIBWIr... to jlj9dbwYl_4cILVwQ... (flutter/engine#40665) * f7d257198 [web] Accepts assetBase through JS config. (flutter/engine#40615) * 6cc2f9bbf Revert "[web] Accepts assetBase through JS config. (#40615)" (flutter/engine#40670) * 4eea74c9a [Impeller] initialize text alpha to 1.0 (flutter/engine#40667) * f7eea0ea2 Roll Skia from 4ca827754bc1 to c55605969a59 (5 revisions) (flutter/engine#40668) * 50f837497 [web] Add `js_types` sources to build. (flutter/engine#40597) * d468552bc Return an empty JavaScript object as a replacement for exports/module in patchCanvasKitModule (flutter/engine#40582) * 36f8473bc Simplify SkFontMgr classes for sk_sp (flutter/engine#40627) * cc060144e [Impeller] Fix Impeller Metal wide gamut (flutter/engine#40671) * 4bc9341d0 Revert "[web] Add `js_types` sources to build. (#40597)" (flutter/engine#40685) * 9c0d1dbf0 Revert "Return an empty JavaScript object as a replacement for exports/module in patchCanvasKitModule (#40582)" (flutter/engine#40686) * 8cb080365 Revert "Post 3.0 lint sync (#40394)" (flutter/engine#40687)
Fixes flutter/flutter#121536
Fixes flutter/flutter#121627
Fixes flutter/flutter#121632
Fixes flutter/flutter#120499
Fixes flutter/flutter#111610