Inside the stack
From your application
to the GPU.
Standard graphics APIs above. GPU bring-up, command submission and shader compilation below.
The driver’s work,
in the library.
A GPU normally sits behind a large driver stack in a full operating system. YakoGL puts that work in the library. The GPU and display drivers it needs live in the same repository.
- 01
Boot
It brings up the GPU itself.
Power, clocks, GPU memory and, on the PowerVR, the firmware; then command streams and completion. No kernel driver in between.
- 02
Compile
Its own GLSL ES compiler, on the board.
A
no_std, allocation-free compiler with one back end per GPU, or a precompiled table, or both. How to choose. - 03
Link
One source, three GPUs.
The GL core and the supported GPU back ends are one
no_stdRust crate with a C ABI (libyakogl.a). C, C++ and Rust applications link it alike: glmark2, the Khronos conformance tests and the Slint UI toolkit run on it.
Five
layers
From the application down. Only the shader back end and the OS abstraction are pluggable; everything above the OS abstraction is portable Rust.
Shaders
Compiled on the board, before it, or both.
A GL application hands the library GLSL source at run time, so an ES 2.0 stack needs a shader compiler. YakoGL has its own: lexer, preprocessor, parser, semantic checks, an IR, and one back end per GPU. Where a shader's machine code comes from is chosen when the image is built.
- A
The compiler only
The default in Zephyr and CMake: GLSL ES source, compiled when the application asks.
- B
Precompiled in front of the compiler
The application's known shaders are compiled by the same compiler while the image is built; a hit runs no compile, a miss compiles.
- C
Precompiled only
No compiler and no scratch memory in the image; a shader the table lacks is refused by name.
The trade-off is measured, not assumed. On the AM62P the compiler costs bytes of flash plus about 5.2 MB of RAM for its working memory; a precompiled table for one test application costs bytes of flash and grows with the application's shader set. So precompiled shaders are an option for an image that wants no compiler, not the default.
Compiler:
Table:
The online compiler and precompiled application shaders use YakoGL’s compiler. The bare-metal make build defaults to a Mesa reference table for measurements; choose the shader mode explicitly for your image. Some of the PowerVR driver’s own programs still use Mesa’s pco output. The README records the current boundary and build options.
Integration details
Use the build and linking guide for C, C++ and Rust applications, and DESIGN.md for the full architecture. The status page separates measured board support from work in progress.