diff --git a/applications/PoP/docs/l9_invert_plan.md b/applications/PoP/docs/l9_invert_plan.md index 481fe1f..bdc2913 100644 --- a/applications/PoP/docs/l9_invert_plan.md +++ b/applications/PoP/docs/l9_invert_plan.md @@ -103,7 +103,22 @@ в окне EI между чанками CBL-ISR армирует акселератор своим размером, см. `docs/accel-fill-budget.md`). -## I.2 Публичные vflip-блиты для row-major +## I.2 Публичные vflip-блиты для row-major — СДЕЛАНО 2026-08-12 + +Ассемблера не потребовалось вовсе: у row-major картинки вертикальное +зеркало — это порядок строк, а он задаётся ЗНАКОМ src-страйда, который +`_bgi_blit_rows_raw` и так принимает знаковым (`int sstride`) и патчит SMC +в adc-цепочку. Обёртки просто дают адрес ПОСЛЕДНЕЙ строки и `-stride`, +цена кадра та же, что у обычного блита. + +Написаны `gfx_blit_noclip_vflip`, `gfx_blit_part_noclip_vflip`, +`gfx_blit_part_vflip`; `tests/pageflip` расширен до 8 проверок, все PASS. + +Грабли, которые поймал тест: у клипающего варианта первая строка источника +обязана считаться от высоты ДО клипа (`h0`), иначе обрезка сверху экрана +сдвигает картинку — сначала формула брала уже укороченную `h`. + +### Контракт (исходное описание) Все row-major блиты приложения идут ровно через три функции (`pop_tile.c:281`, `:283`, `:286`, `:325`, `:327`): diff --git a/docs/size_baseline.tsv b/docs/size_baseline.tsv index 4352a40..37d9bfb 100644 --- a/docs/size_baseline.tsv +++ b/docs/size_baseline.tsv @@ -41,7 +41,7 @@ malloc 4461 mem_test 4555 mouse 4382 openenv 6124 -pageflip 4960 +pageflip 6334 palfile 5406 ptime 5744 rt_test 5187