I recently updated all of devkitARM's packages through dkp-pacman, and after recompiling my homebrew with everything, I found that my call to C2D_SpriteSheetLoad from citro2d now takes an obscene amount of time (about 1.5 seconds on o3ds) for the spritesheet I was trying to load, where it took like 1/10th of the time before.
This can even be seen this in the gpusprites example - try compiling this edit. On my o3ds, it clocks in at 486.67 milliseconds to load just the spritesheet. It seems like size of the sheet doesn't really matter, exactly, but instead the number of sprites in the sheet.
Citro3d's recent changes aren't the culprit, and citro2d itself didn't change very much recently (and nothing related to spritesheet loading), so my only guess is that recent ctrulib changes had something to do with it. My only other guess is something in devkitPro's move to GCC 10.1, but I'm not sure. I'd like to try recompiling an older ctrulib, but I can't even compile it for some reason:
Code: Select all
In file included from /opt/devkitpro/devkitARM/arm-none-eabi/include/c++/10.1.0/stdlib.h:36,
from /home/grayson/Packages/ctrulib/libctru/source/allocator/mem_pool.h:3,
from /home/grayson/Packages/ctrulib/libctru/source/allocator/vram.cpp:8:
/opt/devkitpro/devkitARM/arm-none-eabi/include/c++/10.1.0/cstdlib:232:11: error: 'strtold' has not been declared in '::'
232 | using ::strtold;
| ^~~~~~~
/opt/devkitpro/devkitARM/arm-none-eabi/include/c++/10.1.0/cstdlib:252:22: error: 'strtold' has not been declared in '__gnu_cxx'
252 | using ::__gnu_cxx::strtold;
| ^~~~~~~