[go: nahoru, domu]

Skip to content
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

Merged
merged 6 commits into from
Mar 25, 2023

Conversation

chinmaygarde
Copy link
Member
@chinmaygarde chinmaygarde commented Mar 24, 2023
  • 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
Fixes flutter/flutter#111610

* 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
@chinmaygarde
Copy link
Member Author

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.

Copy link
Member
@jonahwilliams jonahwilliams left a comment

Choose a reason for hiding this comment

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

LGTM ship it

Copy link
Contributor
@dnfield dnfield left a 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.

Copy link
Member
@zanderso zanderso left a 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?

@chinmaygarde
Copy link
Member Author

I'm filing followup issues so we can divvy up the remaining tasks. Just want to land this before lighting up new configurations.

Copy link
Member
@bdero bdero left a comment

Choose a reason for hiding this comment

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

image

@chinmaygarde
Copy link
Member Author

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.

engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 26, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2023
eyebrowsoffire pushed a commit to eyebrowsoffire/engine that referenced this pull request Mar 27, 2023
* 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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2023
bdero pushed a commit to flutter/flutter that referenced this pull request Mar 28, 2023
…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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Archived in project
5 participants