Canvas Feature QEMU Code Size Report

  • Commit: 1fe189eb

  • Date: 2026-05-21T16:05:55.973403

  • Build target: APP=HelloSizeAnalysis APP_SUB=canvas_path_probe PORT=qemu CPU_ARCH=cortex-m0plus

  • Measurement method: compile a dedicated probe app, then rewrite app-local feature override + probe config headers to enable one feature set.

  • Scope: feature-level static qemu ELF sections only (.text/.rodata/.data/.bss).

说明

  • 这份报告解决的是“整项能力值不值得开”的问题,不是单个函数的边际成本。

  • baseline 明确关闭 MASK/QOI/RLE 这类有总开关的 feature,再与 feature-on 变体比较。

  • 对于没有全局开关的能力,例如 IMAGE_TRANSFORMTEXT_TRANSFORMGRADIENT,这里仍使用 probe 聚合场景代表该 feature 的总体成本。

  • HQ line/circle/arc 不在这份报告里,仍请看 hq_size_report.md

Baseline

Variant

Text

Rodata

Data

Bss

Total ROM

BASELINE

14532

596

1368

6368

15128

Feature Summary

Feature

Delta Text

Delta Rodata

Delta Data

Delta Bss

Delta ROM

BASIC_GEOMETRY

+13436

+724

+0

+4

+14160

CIRCLE_ARC_BASIC

+13716

+1844

+0

+4

+15560

LINE_FAMILY

+4540

+12

+0

+4

+4552

GRADIENT_FEATURE

+13076

+804

+0

+4

+13880

MASK_FEATURE

+25228

+928

+0

+12

+26156

IMAGE_STD_FEATURE

+10772

+108

+0

+12

+10880

IMAGE_TRANSFORM

+16164

+476

+0

+12

+16640

TEXT_TRANSFORM

+21008

+6432

+0

+12

+27440

RLE_CODEC

+6900

+152

+0

+48

+7052

QOI_CODEC

+8600

+148

+0

+1244

+8748

ALL_COMMON_CANVAS_FEATURES

+115692

+8420

+0

+1280

+124112

Feature Definition

Feature

Included Scenes

Description

BASIC_GEOMETRY

RECT_*
ROUND_RECT_*
TRIANGLE_*

Basic geometry paths for rect, round-rect and triangle, excluding circle and arc.

CIRCLE_ARC_BASIC

CIRCLE_BASIC_*
ARC_BASIC_*

Basic circle and arc feature set, including LUT-related dependency cost.

LINE_FAMILY

LINE
POLYLINE

Basic line and polyline feature set.

GRADIENT_FEATURE

GRADIENT_RECT
GRADIENT_ROUND_RECT
GRADIENT_CIRCLE

Shape gradient feature set.

MASK_FEATURE

MASK_CIRCLE
MASK_ROUND_RECT
MASK_IMAGE

Mask feature set measured with circle, round-rect and image mask representative scenes.

IMAGE_STD_FEATURE

IMAGE_DRAW
IMAGE_RESIZE
IMAGE_TINT

Standard image draw, resize and tint feature set.

IMAGE_TRANSFORM

IMAGE_ROTATE

Image transform and rotation feature.

TEXT_TRANSFORM

TEXT_ROTATE

Text transform and rotation feature.

RLE_CODEC

RLE_DRAW

RLE codec enabled, plus one representative draw path to reflect full linked cost.

QOI_CODEC

QOI_DRAW

QOI codec enabled, plus one representative draw path to reflect full linked cost.

ALL_COMMON_CANVAS_FEATURES

all common non-HQ canvas features

All common non-HQ canvas features enabled together.

Detailed Variants

Variant

Feature Config

Text

Rodata

Data

Bss

Total ROM

BASELINE

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0

14532

596

1368

6368

15128

BASIC_GEOMETRY

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_RECT_STROKE_PATH=1 -DEGUI_SIZE_PROBE_RECT_FILL_PATH=1 -DEGUI_SIZE_PROBE_ROUND_RECT_STROKE_PATH=1 -DEGUI_SIZE_PROBE_ROUND_RECT_FILL_PATH=1 -DEGUI_SIZE_PROBE_TRIANGLE_STROKE_PATH=1 -DEGUI_SIZE_PROBE_TRIANGLE_FILL_PATH=1

27968

1320

1368

6372

29288

CIRCLE_ARC_BASIC

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_CIRCLE_BASIC_STROKE_PATH=1 -DEGUI_SIZE_PROBE_CIRCLE_BASIC_FILL_PATH=1 -DEGUI_SIZE_PROBE_ARC_BASIC_STROKE_PATH=1 -DEGUI_SIZE_PROBE_ARC_BASIC_FILL_PATH=1

28248

2440

1368

6372

30688

LINE_FAMILY

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_LINE_PATH=1 -DEGUI_SIZE_PROBE_POLYLINE_PATH=1

19072

608

1368

6372

19680

GRADIENT_FEATURE

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_GRADIENT_RECT_PATH=1 -DEGUI_SIZE_PROBE_GRADIENT_ROUND_RECT_PATH=1 -DEGUI_SIZE_PROBE_GRADIENT_CIRCLE_PATH=1

27608

1400

1368

6372

29008

MASK_FEATURE

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=1 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_MASK_CIRCLE_PATH=1 -DEGUI_SIZE_PROBE_MASK_ROUND_RECT_PATH=1 -DEGUI_SIZE_PROBE_MASK_IMAGE_PATH=1

39760

1524

1368

6380

41284

IMAGE_STD_FEATURE

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_IMAGE_DRAW_PATH=1 -DEGUI_SIZE_PROBE_IMAGE_RESIZE_PATH=1 -DEGUI_SIZE_PROBE_IMAGE_TINT_PATH=1

25304

704

1368

6380

26008

IMAGE_TRANSFORM

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_IMAGE_ROTATE_PATH=1

30696

1072

1368

6380

31768

TEXT_TRANSFORM

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_TEXT_ROTATE_PATH=1

35540

7028

1368

6380

42568

RLE_CODEC

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=1 -DEGUI_SIZE_PROBE_RLE_DRAW_PATH=1

21432

748

1368

6416

22180

QOI_CODEC

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=0 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=1 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=0 -DEGUI_SIZE_PROBE_QOI_DRAW_PATH=1

23132

744

1368

7612

23876

ALL_COMMON_CANVAS_FEATURES

-DEGUI_CONFIG_FUNCTION_SUPPORT_MASK=1 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI=1 -DEGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE=1 -DEGUI_SIZE_PROBE_RECT_STROKE_PATH=1 -DEGUI_SIZE_PROBE_RECT_FILL_PATH=1 -DEGUI_SIZE_PROBE_ROUND_RECT_STROKE_PATH=1 -DEGUI_SIZE_PROBE_ROUND_RECT_FILL_PATH=1 -DEGUI_SIZE_PROBE_TRIANGLE_STROKE_PATH=1 -DEGUI_SIZE_PROBE_TRIANGLE_FILL_PATH=1 -DEGUI_SIZE_PROBE_CIRCLE_BASIC_STROKE_PATH=1 -DEGUI_SIZE_PROBE_CIRCLE_BASIC_FILL_PATH=1 -DEGUI_SIZE_PROBE_ARC_BASIC_STROKE_PATH=1 -DEGUI_SIZE_PROBE_ARC_BASIC_FILL_PATH=1 -DEGUI_SIZE_PROBE_LINE_PATH=1 -DEGUI_SIZE_PROBE_POLYLINE_PATH=1 -DEGUI_SIZE_PROBE_GRADIENT_RECT_PATH=1 -DEGUI_SIZE_PROBE_GRADIENT_ROUND_RECT_PATH=1 -DEGUI_SIZE_PROBE_GRADIENT_CIRCLE_PATH=1 -DEGUI_SIZE_PROBE_MASK_CIRCLE_PATH=1 -DEGUI_SIZE_PROBE_MASK_ROUND_RECT_PATH=1 -DEGUI_SIZE_PROBE_MASK_IMAGE_PATH=1 -DEGUI_SIZE_PROBE_IMAGE_DRAW_PATH=1 -DEGUI_SIZE_PROBE_IMAGE_RESIZE_PATH=1 -DEGUI_SIZE_PROBE_IMAGE_TINT_PATH=1 -DEGUI_SIZE_PROBE_IMAGE_ROTATE_PATH=1 -DEGUI_SIZE_PROBE_TEXT_ROTATE_PATH=1 -DEGUI_SIZE_PROBE_RLE_DRAW_PATH=1 -DEGUI_SIZE_PROBE_QOI_DRAW_PATH=1

130224

9016

1368

7648

139240

Reproduce

python scripts/size_analysis/main.py canvas-feature-size-to-doc

Raw JSON is written to output/canvas_feature_size_results.json.