Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Embedder: Refactor EmbedderConfigBuilder by backend #56598

Merged
merged 1 commit into from
Nov 14, 2024

Conversation

cbracken
Copy link
Member

@cbracken cbracken commented Nov 14, 2024

Extracts backend-specific code in EmbedderConfigBuilder to separate translation units. In particular, this allows for less conditional header includes, and more specifically, for code relating to the Metal backend to include headers that include Objective-C types -- today we cast these all to void* to avoid declaring them in headers, which requires special handling for ARC.

An alternative approach would have been to extract backend-specific subclasses, but there are test suites such as EmbedderTestMultiBackend that are executed against multiple backends, which currently make that approach impractical, though that should likely be the long-term goal.

Issue: flutter/flutter#137801
Issue: flutter/flutter#158998

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Extracts backend-specific code in EmbedderConfigBuilder to separate translation units. In particular, this allows for less conditional header includes, and more specifically, for code relating to the Metal backend to include headers that include Objective-C types -- today we cast these all to void* to avoid declaring them in headers, which requires special handling for ARC.

An alternative approach would have been to extract backend-specific subclasses, but there are test suites such as EmbedderTestMultiBackend that are executed against multiple backends, which currently make that approach impractical, though that should likely be the long-term goal.

Issue: flutter/flutter#137801
@cbracken cbracken changed the title Embedder: Refactor EmbedderConfigBuilder Embedder: Refactor EmbedderConfigBuilder by backend Nov 14, 2024
@cbracken
Copy link
Member Author

cbracken commented Nov 14, 2024

This isn't the final state I'd like to get this to, but is a first-pass to move backend-specific code out into separate translation units. Should make further refactoring a lot simpler and avoids a ton of ifdef-ing.

@cbracken cbracken added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2024
@auto-submit auto-submit bot merged commit a304e2e into flutter:main Nov 14, 2024
31 checks passed
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2024
@cbracken cbracken deleted the refactor-embedder-config-builder branch November 15, 2024 00:06
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 15, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 16, 2024
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Nov 16, 2024
…159015)

Roll Flutter Engine from 619804c0fbb7 to f649330affa8 (47 revisions)

flutter/engine@619804c...f649330

2024-11-16 [email protected] Roll Skia from 1ef3b910e064 to
6b0f264bde33 (6 revisions) (flutter/engine#56635)
2024-11-16 [email protected] Revert "Remove
`android_jit_release_x86`." (flutter/engine#56634)
2024-11-15 [email protected] Move SetRenderTargetType to
EmbedderTestCompositor (flutter/engine#56626)
2024-11-15 [email protected] Roll Dart SDK from
b62dadb14d82 to eccb15756020 (2 revisions) (flutter/engine#56630)
2024-11-15 [email protected] [TextInput] Add
TextInputType.webSearch (#15762) (flutter/engine#56428)
2024-11-15 [email protected] [web] Send the correct view ID with
semantics actions (flutter/engine#56595)
2024-11-15 [email protected] [macos] early
return to suppress clang-tidy warning (flutter/engine#56588)
2024-11-15 [email protected] [Impeller] libImpeller: Tinker on the
README to cross reference the SDK and the example.
(flutter/engine#56623)
2024-11-15 [email protected] [fuchsia] MaybeRunInitialVsyncCallback
should only called once (flutter/engine#56429)
2024-11-15 [email protected] Move mac clangd build from x64 to arm
(flutter/engine#56567)
2024-11-15 [email protected] Added assert for
opengles thread safety (flutter/engine#56585)
2024-11-15 [email protected] [Impeller] enable OpenGL fallback on
Android. (flutter/engine#56591)
2024-11-15 [email protected] [Impeller] Maintain
separate queues of GLES operations for each thread in the reactor
(flutter/engine#56573)
2024-11-15 [email protected] Roll Dart SDK from
abe86ca4eb01 to b62dadb14d82 (2 revisions) (flutter/engine#56615)
2024-11-15 [email protected] Roll Skia from b730eb340852 to
1ef3b910e064 (4 revisions) (flutter/engine#56613)
2024-11-15 [email protected] Roll Fuchsia Linux SDK from
JkpuAsLzcmYLzf1iX... to UpSQzyXGUhMfedYIh... (flutter/engine#56611)
2024-11-15 [email protected] Roll Dart SDK from
bf0eeb9d929c to abe86ca4eb01 (1 revision) (flutter/engine#56610)
2024-11-15 [email protected] Roll Skia from e5fda8472b21 to
b730eb340852 (1 revision) (flutter/engine#56608)
2024-11-15 [email protected] Roll Skia from 8ff65da4b8bf to
e5fda8472b21 (1 revision) (flutter/engine#56603)
2024-11-15 [email protected] Move TestMetalContext/Surface to testing
namespace (flutter/engine#56602)
2024-11-15 [email protected] Roll Dart SDK from
343b9fc6eafe to bf0eeb9d929c (1 revision) (flutter/engine#56604)
2024-11-15 [email protected] [Impeller] Don't enable KHR_debug on
Angle. (flutter/engine#56601)
2024-11-15 [email protected] [Impeller] libImpeller: Reset the GL
state when transitioning control back to the embedder.
(flutter/engine#56597)
2024-11-15 [email protected] Roll Skia from 8946ea477b42 to
8ff65da4b8bf (2 revisions) (flutter/engine#56600)
2024-11-14 [email protected] [Impeller] Put test components in the
testing namespace. (flutter/engine#56594)
2024-11-14 [email protected] [Impeller] libImpeller: Add a warning
about OpenGL state being trampled. (flutter/engine#56599)
2024-11-14 [email protected] Embedder: Refactor EmbedderConfigBuilder by
backend (flutter/engine#56598)
2024-11-14 [email protected] Migrate Metal translation units to Obj-C++
(flutter/engine#56592)
2024-11-14 [email protected] Roll Dart SDK from
db4d7d52db48 to 343b9fc6eafe (1 revision) (flutter/engine#56590)
2024-11-14 [email protected] iOS,macOS: Build/test
test_metal_surface_unittests (flutter/engine#56586)
2024-11-14 [email protected] Roll Skia from 3222456e63dc to
8946ea477b42 (2 revisions) (flutter/engine#56587)
2024-11-14 [email protected] Roll Skia from 16178bf63de7 to
3222456e63dc (3 revisions) (flutter/engine#56584)
2024-11-14 [email protected] [Android] Fix Slider semantics double
tap behaviors (flutter/engine#56452)
2024-11-14 [email protected] Roll Dart SDK from
a3b6652100c8 to db4d7d52db48 (1 revision) (flutter/engine#56581)
2024-11-14 [email protected] Move Vulkan context to
EmbedderTestContextVulkan (flutter/engine#56571)
2024-11-14 [email protected] Roll Skia from a076435073fc to
16178bf63de7 (1 revision) (flutter/engine#56579)
2024-11-14 [email protected] Roll Skia from 70553189e4e8 to
a076435073fc (1 revision) (flutter/engine#56577)
2024-11-14 [email protected] Roll Skia from fa52f2c1ddba to
70553189e4e8 (1 revision) (flutter/engine#56576)
2024-11-14 [email protected] Roll Dart SDK from
3f05b3540cb2 to a3b6652100c8 (3 revisions) (flutter/engine#56575)
2024-11-14 [email protected] Roll Skia from ddbd8d1cb8d8 to
fa52f2c1ddba (3 revisions) (flutter/engine#56574)
2024-11-14 [email protected] [Android] choose 24 bit depth
buffer. (flutter/engine#56553)
2024-11-14 [email protected] Roll Skia from 3750b8939c7f to
ddbd8d1cb8d8 (1 revision) (flutter/engine#56562)
2024-11-14 [email protected] Move FlMouseCursorHandler from
FlView to FlEngine (flutter/engine#56026)
2024-11-14 [email protected] [Impeller] force software resize
usage for GLES backend. (flutter/engine#56511)
2024-11-14 [email protected] Roll Dart SDK from
66ab1774bfe9 to 3f05b3540cb2 (2 revisions) (flutter/engine#56564)
2024-11-14 [email protected] Embedder: Refactor EmbedderTestContext
creation (flutter/engine#56563)
...
nick9822 pushed a commit to nick9822/flutter that referenced this pull request Dec 18, 2024
…6598)

Extracts backend-specific code in EmbedderConfigBuilder to separate translation units. In particular, this allows for less conditional header includes, and more specifically, for code relating to the Metal backend to include headers that include Objective-C types -- today we cast these all to void* to avoid declaring them in headers, which requires special handling for ARC.

An alternative approach would have been to extract backend-specific subclasses, but there are test suites such as EmbedderTestMultiBackend that are executed against multiple backends, which currently make that approach impractical, though that should likely be the long-term goal.

Issue: flutter#137801

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants