README

1. Benchmark

You can now run benchmarks directly in [template][bare-metal] and [template][cmsis-rtso2] projects by selecting the desired benchmark in RTE.

1.1 Benchmark: Generic

It is an ALL-IN-ONE example that demonstrates almost all the features provided by the library. It is also used as a benchmark of Arm-2D. Since there is no public benchmark available for micro-controllers, we decide to overcome this problem with the following methods and considerations:

  • Choose the widely used algorithms in embedded GUI as the body of the benchmark
    • Alpha-blending
    • Colour-Keying
    • Blit
    • Tiling
    • Rotation
    • Mirroring
    • Masking
  • Simulate a typical application scenario with sufficient complexity
    • Background with Texture Tiling (switching mirroring modes every 4 second)
    • Foreground picture
    • Two constructed layers for alpha-blending and tiling with colour keying
    • Moving icons
    • Spinning busy wheel
  • Choose a typical low-cost LCD resolution 320*240 in RGB565
  • Let those layers float with different angles and speed to cover a sufficient number of conditions.
  • Record the cycle count used for blending one frame and run 1000 iterations (frames).

Figure 1-1 A snapshot of benchmark running on Cortex-M4 FVP platform

  • Use the average cycle count in 1000 iterations as benchmark score.

    • Based on that, for typical embedded application requirement, we derive a more meaningful metrics called the Minimal Frequency Required for 30 FPS (MHz) as shown in Figure 1-5.

Figure 1-2 Performance Comparison among some Cortex-M processors

image-20210318225839820

1.2 Benchmark: Watch-Panel

It is an example of transform APIs. It consists of seven layers:

  1. Background: Filling Black colour
  2. Magnifying Glass Perspective (Copy with a mask on target side)
  3. A clock_panel layer (Copy with colour keying and opacity)
  4. A small gold gear (Rotation with colour keying)
  5. A big gray gear (Rotation with colour keying and opacity)
  6. A red pointer (Rotation with a source mask and a specified pivot)
  7. A Fading star (Rotation and scaling with a source mask and opacity)

This demo also shows how a fancy looking clock could be rendered with just less than 10K RAM (or even less by using a smaller PFB size).

Figure 1-3 A snapshot of watch-panel running on simulation

WatchPanel