Skip to content

Commit

Permalink
Revert "[Impeller] remove scene3d support." (flutter#54502)
Browse files Browse the repository at this point in the history
Reverts flutter#54453

Not quite ready to remove Impeller Scene yet because I'm still porting
the animation functionality. Keeping it around allows me to switch back
and forth to compare without having to recompile the engine.

Over a month ago I said something like "we can revert this a couple of
weeks from now" in one of the Impeller meetings. But for better or worse
(better, I think), I ended up spending a ton of time trying to make the
PBR good first (which doesn't exist in this C++ version).
  • Loading branch information
bdero authored Aug 12, 2024
1 parent c8785c3 commit 8c9b821
Show file tree
Hide file tree
Showing 97 changed files with 6,685 additions and 5 deletions.
1 change: 1 addition & 0 deletions ci/builders/mac_unopt.json
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@
"--unoptimized",
"--no-lto",
"--prebuilt-dart-sdk",
"--enable-impeller-3d",
"--rbe",
"--no-goma",
"--xcode-symlinks"
Expand Down
3 changes: 3 additions & 0 deletions ci/licenses_golden/excluded_files
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,9 @@
../../../flutter/impeller/renderer/renderer_unittests.cc
../../../flutter/impeller/renderer/testing
../../../flutter/impeller/runtime_stage/runtime_stage_unittests.cc
../../../flutter/impeller/scene/README.md
../../../flutter/impeller/scene/importer/importer_unittests.cc
../../../flutter/impeller/scene/scene_unittests.cc
../../../flutter/impeller/shader_archive/shader_archive_unittests.cc
../../../flutter/impeller/tessellator/dart/.dart_tool
../../../flutter/impeller/tessellator/dart/pubspec.yaml
Expand Down
95 changes: 95 additions & 0 deletions ci/licenses_golden/licenses_flutter
Original file line number Diff line number Diff line change
Expand Up @@ -42814,6 +42814,8 @@ ORIGIN: ../../../flutter/impeller/entity/contents/radial_gradient_contents.cc +
ORIGIN: ../../../flutter/impeller/entity/contents/radial_gradient_contents.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/runtime_effect_contents.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/runtime_effect_contents.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/scene_contents.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/scene_contents.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/solid_color_contents.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/solid_color_contents.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/entity/contents/solid_rrect_blur_contents.cc + ../../../flutter/LICENSE
Expand Down Expand Up @@ -43226,6 +43228,48 @@ ORIGIN: ../../../flutter/impeller/runtime_stage/runtime_stage.h + ../../../flutt
ORIGIN: ../../../flutter/impeller/runtime_stage/runtime_stage_playground.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/runtime_stage/runtime_stage_playground.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/runtime_stage/runtime_stage_types.fbs + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation_clip.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation_clip.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation_player.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation_player.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/animation_transforms.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/property_resolver.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/animation/property_resolver.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/camera.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/camera.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/geometry.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/geometry.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/conversions.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/conversions.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/importer.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/importer_gltf.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/scene.fbs + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/scenec_main.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/switches.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/switches.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/types.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/vertices_builder.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/importer/vertices_builder.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/material.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/material.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/mesh.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/mesh.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/node.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/node.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/pipeline_key.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/scene.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/scene.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/scene_context.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/scene_context.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/scene_encoder.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/scene_encoder.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/shaders/skinned.vert + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/shaders/unlit.frag + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/shaders/unskinned.vert + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/skin.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/scene/skin.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/shader_archive/shader_archive.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/shader_archive/shader_archive.fbs + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/impeller/shader_archive/shader_archive.h + ../../../flutter/LICENSE
Expand Down Expand Up @@ -43358,6 +43402,9 @@ ORIGIN: ../../../flutter/lib/ui/dart_runtime_hooks.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/dart_ui.cc + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/dart_ui.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/dart_wrapper.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/experiments/scene.dart + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/experiments/setup_hooks.dart + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/experiments/ui.dart + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/floating_point.h + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/geometry.dart + ../../../flutter/LICENSE
ORIGIN: ../../../flutter/lib/ui/hooks.dart + ../../../flutter/LICENSE
Expand Down Expand Up @@ -45644,6 +45691,8 @@ FILE: ../../../flutter/impeller/entity/contents/radial_gradient_contents.cc
FILE: ../../../flutter/impeller/entity/contents/radial_gradient_contents.h
FILE: ../../../flutter/impeller/entity/contents/runtime_effect_contents.cc
FILE: ../../../flutter/impeller/entity/contents/runtime_effect_contents.h
FILE: ../../../flutter/impeller/entity/contents/scene_contents.cc
FILE: ../../../flutter/impeller/entity/contents/scene_contents.h
FILE: ../../../flutter/impeller/entity/contents/solid_color_contents.cc
FILE: ../../../flutter/impeller/entity/contents/solid_color_contents.h
FILE: ../../../flutter/impeller/entity/contents/solid_rrect_blur_contents.cc
Expand Down Expand Up @@ -46057,6 +46106,48 @@ FILE: ../../../flutter/impeller/runtime_stage/runtime_stage.h
FILE: ../../../flutter/impeller/runtime_stage/runtime_stage_playground.cc
FILE: ../../../flutter/impeller/runtime_stage/runtime_stage_playground.h
FILE: ../../../flutter/impeller/runtime_stage/runtime_stage_types.fbs
FILE: ../../../flutter/impeller/scene/animation/animation.cc
FILE: ../../../flutter/impeller/scene/animation/animation.h
FILE: ../../../flutter/impeller/scene/animation/animation_clip.cc
FILE: ../../../flutter/impeller/scene/animation/animation_clip.h
FILE: ../../../flutter/impeller/scene/animation/animation_player.cc
FILE: ../../../flutter/impeller/scene/animation/animation_player.h
FILE: ../../../flutter/impeller/scene/animation/animation_transforms.h
FILE: ../../../flutter/impeller/scene/animation/property_resolver.cc
FILE: ../../../flutter/impeller/scene/animation/property_resolver.h
FILE: ../../../flutter/impeller/scene/camera.cc
FILE: ../../../flutter/impeller/scene/camera.h
FILE: ../../../flutter/impeller/scene/geometry.cc
FILE: ../../../flutter/impeller/scene/geometry.h
FILE: ../../../flutter/impeller/scene/importer/conversions.cc
FILE: ../../../flutter/impeller/scene/importer/conversions.h
FILE: ../../../flutter/impeller/scene/importer/importer.h
FILE: ../../../flutter/impeller/scene/importer/importer_gltf.cc
FILE: ../../../flutter/impeller/scene/importer/scene.fbs
FILE: ../../../flutter/impeller/scene/importer/scenec_main.cc
FILE: ../../../flutter/impeller/scene/importer/switches.cc
FILE: ../../../flutter/impeller/scene/importer/switches.h
FILE: ../../../flutter/impeller/scene/importer/types.h
FILE: ../../../flutter/impeller/scene/importer/vertices_builder.cc
FILE: ../../../flutter/impeller/scene/importer/vertices_builder.h
FILE: ../../../flutter/impeller/scene/material.cc
FILE: ../../../flutter/impeller/scene/material.h
FILE: ../../../flutter/impeller/scene/mesh.cc
FILE: ../../../flutter/impeller/scene/mesh.h
FILE: ../../../flutter/impeller/scene/node.cc
FILE: ../../../flutter/impeller/scene/node.h
FILE: ../../../flutter/impeller/scene/pipeline_key.h
FILE: ../../../flutter/impeller/scene/scene.cc
FILE: ../../../flutter/impeller/scene/scene.h
FILE: ../../../flutter/impeller/scene/scene_context.cc
FILE: ../../../flutter/impeller/scene/scene_context.h
FILE: ../../../flutter/impeller/scene/scene_encoder.cc
FILE: ../../../flutter/impeller/scene/scene_encoder.h
FILE: ../../../flutter/impeller/scene/shaders/skinned.vert
FILE: ../../../flutter/impeller/scene/shaders/unlit.frag
FILE: ../../../flutter/impeller/scene/shaders/unskinned.vert
FILE: ../../../flutter/impeller/scene/skin.cc
FILE: ../../../flutter/impeller/scene/skin.h
FILE: ../../../flutter/impeller/shader_archive/shader_archive.cc
FILE: ../../../flutter/impeller/shader_archive/shader_archive.fbs
FILE: ../../../flutter/impeller/shader_archive/shader_archive.h
Expand Down Expand Up @@ -46179,6 +46270,7 @@ FILE: ../../../flutter/lib/gpu/texture.cc
FILE: ../../../flutter/lib/gpu/texture.h
FILE: ../../../flutter/lib/io/dart_io.cc
FILE: ../../../flutter/lib/io/dart_io.h
FILE: ../../../flutter/lib/snapshot/libraries_experimental.json
FILE: ../../../flutter/lib/snapshot/snapshot.h
FILE: ../../../flutter/lib/ui/annotations.dart
FILE: ../../../flutter/lib/ui/channel_buffers.dart
Expand All @@ -46192,6 +46284,9 @@ FILE: ../../../flutter/lib/ui/dart_runtime_hooks.h
FILE: ../../../flutter/lib/ui/dart_ui.cc
FILE: ../../../flutter/lib/ui/dart_ui.h
FILE: ../../../flutter/lib/ui/dart_wrapper.h
FILE: ../../../flutter/lib/ui/experiments/scene.dart
FILE: ../../../flutter/lib/ui/experiments/setup_hooks.dart
FILE: ../../../flutter/lib/ui/experiments/ui.dart
FILE: ../../../flutter/lib/ui/floating_point.h
FILE: ../../../flutter/lib/ui/geometry.dart
FILE: ../../../flutter/lib/ui/hooks.dart
Expand Down
4 changes: 4 additions & 0 deletions display_list/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ if (is_fuchsia) {

config("display_list_config") {
defines = []

if (impeller_enable_3d) {
defines += [ "IMPELLER_ENABLE_3D" ]
}
}

source_set("display_list") {
Expand Down
10 changes: 10 additions & 0 deletions display_list/display_list.cc
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,10 @@ void DisplayList::Dispatch(DlOpReceiver& receiver,
break;

FOR_EACH_DISPLAY_LIST_OP(DL_OP_DISPATCH)
#ifdef IMPELLER_ENABLE_3D
DL_OP_DISPATCH(SetSceneColorSource)
#endif // IMPELLER_ENABLE_3D

#undef DL_OP_DISPATCH

default:
Expand All @@ -226,6 +230,9 @@ void DisplayList::DisposeOps(const uint8_t* ptr, const uint8_t* end) {
break;

FOR_EACH_DISPLAY_LIST_OP(DL_OP_DISPOSE)
#ifdef IMPELLER_ENABLE_3D
DL_OP_DISPOSE(SetSceneColorSource)
#endif // IMPELLER_ENABLE_3D

#undef DL_OP_DISPOSE

Expand Down Expand Up @@ -263,6 +270,9 @@ static bool CompareOps(const uint8_t* ptrA,
break;

FOR_EACH_DISPLAY_LIST_OP(DL_OP_EQUALS)
#ifdef IMPELLER_ENABLE_3D
DL_OP_EQUALS(SetSceneColorSource)
#endif // IMPELLER_ENABLE_3D

#undef DL_OP_EQUALS

Expand Down
7 changes: 6 additions & 1 deletion display_list/display_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,12 @@ namespace flutter {
V(DrawShadowTransparentOccluder)

#define DL_OP_TO_ENUM_VALUE(name) k##name,
enum class DisplayListOpType { FOR_EACH_DISPLAY_LIST_OP(DL_OP_TO_ENUM_VALUE) };
enum class DisplayListOpType {
FOR_EACH_DISPLAY_LIST_OP(DL_OP_TO_ENUM_VALUE)
#ifdef IMPELLER_ENABLE_3D
DL_OP_TO_ENUM_VALUE(SetSceneColorSource)
#endif // IMPELLER_ENABLE_3D
};
#undef DL_OP_TO_ENUM_VALUE

class DlOpReceiver;
Expand Down
8 changes: 8 additions & 0 deletions display_list/dl_builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,14 @@ void DisplayListBuilder::onSetColorSource(const DlColorSource* source) {
Push<SetRuntimeEffectColorSourceOp>(0, effect);
break;
}
#ifdef IMPELLER_ENABLE_3D
case DlColorSourceType::kScene: {
const DlSceneColorSource* scene = source->asScene();
FML_DCHECK(scene);
Push<SetSceneColorSourceOp>(0, scene);
break;
}
#endif // IMPELLER_ENABLE_3D
}
}
}
Expand Down
20 changes: 20 additions & 0 deletions display_list/dl_op_records.h
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,26 @@ struct SetRuntimeEffectColorSourceOp : DLOp {
}
};

#ifdef IMPELLER_ENABLE_3D
struct SetSceneColorSourceOp : DLOp {
static constexpr auto kType = DisplayListOpType::kSetSceneColorSource;

explicit SetSceneColorSourceOp(const DlSceneColorSource* source)
: source(source->scene_node(), source->camera_matrix()) {}

const DlSceneColorSource source;

void dispatch(DispatchContext& ctx) const {
ctx.receiver.setColorSource(&source);
}

DisplayListCompare equals(const SetSceneColorSourceOp* other) const {
return (source == other->source) ? DisplayListCompare::kEqual
: DisplayListCompare::kNotEqual;
}
};
#endif // IMPELLER_ENABLE_3D

// 4 byte header + 16 byte payload uses 24 total bytes (4 bytes unused)
struct SetSharedImageFilterOp : DLOp {
static constexpr auto kType = DisplayListOpType::kSetSharedImageFilter;
Expand Down
57 changes: 57 additions & 0 deletions display_list/effects/dl_color_source.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@

#include "third_party/skia/include/core/SkShader.h"

#ifdef IMPELLER_ENABLE_3D
#include "impeller/geometry/matrix.h" // nogncheck
#include "impeller/scene/node.h" // nogncheck
namespace flutter {
class DlSceneColorSource;
}
#endif // IMPELLER_ENABLE_3D

namespace flutter {

class DlColorColorSource;
Expand Down Expand Up @@ -48,6 +56,9 @@ enum class DlColorSourceType {
kConicalGradient,
kSweepGradient,
kRuntimeEffect,
#ifdef IMPELLER_ENABLE_3D
kScene,
#endif // IMPELLER_ENABLE_3D
};

class DlColorSource : public DlAttribute<DlColorSource, DlColorSourceType> {
Expand Down Expand Up @@ -154,6 +165,10 @@ class DlColorSource : public DlAttribute<DlColorSource, DlColorSourceType> {
return nullptr;
}

#ifdef IMPELLER_ENABLE_3D
virtual const DlSceneColorSource* asScene() const { return nullptr; }
#endif // IMPELLER_ENABLE_3D

protected:
DlColorSource() = default;

Expand Down Expand Up @@ -692,6 +707,48 @@ class DlRuntimeEffectColorSource final : public DlColorSource {
FML_DISALLOW_COPY_ASSIGN_AND_MOVE(DlRuntimeEffectColorSource);
};

#ifdef IMPELLER_ENABLE_3D
class DlSceneColorSource final : public DlColorSource {
public:
DlSceneColorSource(std::shared_ptr<impeller::scene::Node> node,
impeller::Matrix camera_matrix)
: node_(std::move(node)), camera_matrix_(camera_matrix) {}

bool isUIThreadSafe() const override { return true; }

const DlSceneColorSource* asScene() const override { return this; }

std::shared_ptr<DlColorSource> shared() const override {
return std::make_shared<DlSceneColorSource>(node_, camera_matrix_);
}

DlColorSourceType type() const override { return DlColorSourceType::kScene; }
size_t size() const override { return sizeof(*this); }

bool is_opaque() const override { return false; }

std::shared_ptr<impeller::scene::Node> scene_node() const { return node_; }

impeller::Matrix camera_matrix() const { return camera_matrix_; }

protected:
bool equals_(DlColorSource const& other) const override {
FML_DCHECK(other.type() == DlColorSourceType::kScene);
auto that = static_cast<DlSceneColorSource const*>(&other);
if (node_ != that->node_) {
return false;
}
return true;
}

private:
std::shared_ptr<impeller::scene::Node> node_;
impeller::Matrix camera_matrix_; // the view-projection matrix of the scene.

FML_DISALLOW_COPY_ASSIGN_AND_MOVE(DlSceneColorSource);
};
#endif // IMPELLER_ENABLE_3D

} // namespace flutter

#endif // FLUTTER_DISPLAY_LIST_EFFECTS_DL_COLOR_SOURCE_H_
5 changes: 5 additions & 0 deletions display_list/skia/dl_sk_conversions.cc
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,11 @@ sk_sp<SkShader> ToSk(const DlColorSource* source) {
return runtime_effect->skia_runtime_effect()->makeShader(
sk_uniform_data, sk_samplers.data(), sk_samplers.size());
}
#ifdef IMPELLER_ENABLE_3D
case DlColorSourceType::kScene: {
return nullptr;
}
#endif // IMPELLER_ENABLE_3D
}
}

Expand Down
19 changes: 19 additions & 0 deletions docs/impeller/Impeller-Scene.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
We are excited to have you tinker on [the Impeller Scene Demo presented at Flutter Forward](https://www.youtube.com/live/zKQYGKAe5W8?feature=share&t=7048). While we spend time learning the use-cases and finalizing the API, the functionality for Impeller Scene is behind a compile-time flag. During this time, there are no guarantees around API stability.

**Compiling the Engine**

- Configure your Mac host to compile the Flutter Engine by [following the guidance in wiki](../contributing/Setting-up-the-Engine-development-environment.md).
- Ensure that you are on the [main branch of the Flutter Engine](https://github.com/flutter/engine/tree/main).
- Ensure that you are on the [main branch of the Flutter Framework](https://github.com/flutter/flutter/tree/main).
- Configure the host build: `./flutter/tools/gn --enable-impeller-3d --no-lto`
- Configure the iOS build: `./flutter/tools/gn --enable-impeller-3d --no-lto --ios`
- Add the `--simulator --simulator-cpu=arm64` flag to the iOS build if you are going to test on the simulator.
- Build host artifacts (this will take a while): `ninja -C out/host_debug`
- Build iOS artifacts (this will take a while): `ninja -C out/ios_debug`
- If targeting the simulator: `ninja -C out/ios_debug_sim_arm64`
- Clone the demo repository: `git clone https://github.com/bdero/flutter-scene-example.git` and move into the directory.
- Plug in your device or open `Simulator.app`, then run `flutter devices` to note the device identifier.
- Run the demo application: `flutter run -d [device_id] --local-engine ios_debug --local-engine-host host_debug` (or `ios_debug_sim_arm64` if you are running on the Simulator).
- On Silicon Macs, prefer `--local-engine-host host_debug_arm64` (adjusting your `ninja` command above accordingly)

We hope to continue evolving the API and have it available on the stable channel soon!
Loading

0 comments on commit 8c9b821

Please sign in to comment.