-
Notifications
You must be signed in to change notification settings - Fork 6k
[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. |
jonahwilliams
left a comment
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
dnfield
left a comment
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.
zanderso
left a comment
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. |
bdero
left a comment
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