I think on most Android devices textures need to be POT, respectively are made POT before transferred to VRAM, resulting in additional performance penalty, so I'd rather control upfront what kind of textures I do have. E.g. such a 1280x1280 would be converted to 2048x2048 then, though it would well fit to 1024x2048.
Having said the above, I am not even sure any longer that other platforms are just created through scaling (as I thought I saw in your code). I just have the issue of a 2048x2048 4x texture, that results in a 2048x1024 2x 50% texture, and I have no clue why it's not 1024x1024. All assets are strictly 50% of the originals, and there is a huge wastage on the 2x now, and the layout of assets inside the atlas is completely different. What could be the reason? Is dicing also scaled accordingly?
Just to mention: I am now on the supported path of just using multiple of 2 graphic assets, I dropped my intentions of going for "uneven" platforms to not run into more unsupported issues.
Thanks, habitoti