mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-02 20:42:29 +01:00
nanosvg walks every scanline of the target for each visible shape, so rasterizing the whole SVG and cropping the images out of it cost shapes * canvas area. Each image is now rasterized into a buffer the size of its bounding box, from a list of copies of its own shapes, so the images can be rasterized on the thread pool. Atlas generation on a Redmi 9A (32-bit) goes from about 165 ms to about 95 ms, and on a desktop from about 10 ms to 6 ms. Parsing the SVG is now the largest part. The atlas layout is unchanged; a few edge pixels differ by at most 2/255 from the different subpixel offsets. Also copy whole rows in Image::copyfrom, and fix a leak of the SVG file data when parsing fails. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>