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

Commit bd9ef6a

Browse files
authored
[Impeller] Start a glossary. (#52641)
Fixes flutter/flutter#107609
1 parent 93c5040 commit bd9ef6a

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

impeller/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,3 +242,4 @@ To your `Info.plist` file, add under the top-level `<dict>` tag:
242242
* [Threading in the Vulkan Backend](docs/vulkan_threading.md)
243243
* [Android Rendering Backend Selection](docs/android.md)
244244
* [Using Impeller as a Standalone Rendering Library (with OpenGL ES)](docs/standalone_gles.md)
245+
* [Glossary](docs/glossary.md)

impeller/docs/glossary.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Glossary
2+
3+
### Device & Host
4+
5+
In the context of graphics and Impeller, the device is the GPU and the host, the CPU.
6+
7+
### Client Rendering API
8+
9+
The API Impeller uses to talk to devices. Examples of these are OpenGL, Metal, Vulkan, Direct X.
10+
11+
### Window System Integration (WSI)
12+
13+
Impeller can render using one of the client rendering APIs into a render target. However, that render target needs to be presented in the platform's window system. A Window System Integration API does this and is usually extremely platform specific. For instance, OpenGL may be available on macOS and Linux, but the WSI API for macOS is EAGL and usually (but not always) EGL for Linux.
14+
15+
### Varying
16+
17+
In the context of shaders, a varying is a value that is interpolated between two vertices (specified by the vertex shader) and provided to the fragment shader.
18+
19+
### OpenGL
20+
21+
[OpenGL and OpenGL ES (Embedded Systems)](https://www.opengl.org/) are [client rendering APIs](#client-rendering-api). Impeller uses these on older versions of Android today.
22+
23+
### Vulkan
24+
25+
[Vulkan](https://www.vulkan.org/) is a modern [client rendering API](#client-rendering-api) used by Impeller on Android. It is also available natively on the major non-Apple platforms. On the Apple platforms, Vulkan is implemented on top of [Metal](#metal) via a translation layer called [MoltenVK](https://github.com/KhronosGroup/MoltenVK).
26+
27+
Impeller supports a baseline of Vulkan 1.1 and uses extensions where available.
28+
29+
### Metal
30+
31+
[Metal](https://developer.apple.com/metal/) is a modern [client rendering API](#client-rendering-api) used by Impeller on macOS and iOS. It is not available on non-Apple platforms.
32+
33+
### EGL
34+
35+
[EGL](https://www.khronos.org/egl) provides [WSI](#window-system-integration-wsi) for OpenGL ES.
36+
37+
### Android Hardware Buffers (AHB)
38+
39+
Available only on Android and used by Impeller on API levels at or above 29, [AHBs](https://developer.android.com/ndk/reference/group/a-hardware-buffer) are resources that can be treated as textures by both [OpenGL](#opengl) and [Vulkan](#vulkan) and shared with the system compositor for [WSI](#window-system-integration-wsi).
40+
41+
In the Impeller codebase, classes that deal with AHBs have the `ahb_` prefix.

0 commit comments

Comments
 (0)