Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion impeller/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ states of completion:
package agnosticism in the Impeller interface. This sub-framework primarily
provides a custom implementation of the `flutter::DisplayListDispatcher` that
forwards Flutter rendering intent to Impeller.
* **`//impeller/typographer`**: Contains a backend agnostic interface for rendering typefaces. While Impeller does **not** do any text layout or shaping, it does render shaped glyph runs. The application specifies these glyph runs to Impeller using the Typographer subsystem.
* **`//impeller/typographer/backend`**: Contains code that interfaces with an underlying (usually platform-specific) library or toolkit to render glyphs in typefaces into texture atlases. Impeller will then reference these glyphs when rendering shaped glyph runs. No Impeller sub-frameworks may depend on these targets. There may be multiple typographer backends.
* **`//impeller/base`**: Contains C++ utilities that are used throughout the
Impeller family of frameworks. Ideally, these should go in `//flutter/fml` but
their use is probably not widespread enough to at this time.
Expand All @@ -112,11 +114,14 @@ states of completion:
removal and must not be used outside of tests.
* **`//fixtures`**: Contains test fixtures used by the various test harnesses.
This depends on `//flutter/testing`.
* **`//tools`**: Contains all GN rules and python scripts for working with
* **`//impeller/tools`**: Contains all GN rules and python scripts for working with
Impeller. These include GN rules processing GLSL shaders, including reflected
shader information as source set targets, and, including compiled shader
intermediate representations into the final executable as binary blobs for
easier packaging.
* **`//impeller/toolkit`**: Contains Impeller agnostic toolkits that provide more ergonomic wrappers around certain APIs like EGL. Toolkits must be dependency free so that an external component using a toolkit doesn't have to pull in a significant portion of Impeller itself.
* **`//impeller/blobcat`**: Concatenates shader blobs. This is primarily used by rendering backends that don't have the notion of a shader library. In Impeller, all shaders are packaged into a single library that contains a manifest of the shaders in the library along with the pre-compiled shaders themselves. Unlike Metal, backends like OpenGL ES and Vulkan don't have such a concept. For these backends, `//impeller/blobcat` is used to create a single shader library to be packaged with the engine.
* **`//impeller/scene`**: Contains an experimental 3D model renderer. This is currently only exposed via [a special build of the Flutter Engine](https://github.com/flutter/flutter/wiki/Impeller-Scene).

## The Offline Shader Compilation Pipeline

Expand Down
4 changes: 2 additions & 2 deletions impeller/docs/renderdoc_frame_capture.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ninja -C out/host_debug_unopt/

3. Start RenderDoc, and click the "Launch Application" button.

<img src="assets/launch-app.png" height="200" />
![Launch App](assets/renderdoc_frame_capture/launch-app.png)

4. Fill out the following parameters, and click launch:
- executable: `$ENGINE_SRC/out/host_debug_impeller_vulkan/impeller_unittests` (expand `ENGINE_SRC`).
Expand All @@ -23,4 +23,4 @@ ninja -C out/host_debug_unopt/

5. For the frame you wish to capture, press `F12`, you will now be able to see the frame capture and inspect the state.

<img src="assets/render-doc-capture.png" />
![Renderdoc Capture](assets/renderdoc_frame_capture/render-doc-capture.png)