The issue is really only with this line:
write = (u8 *)finalBuf;

In this case that we use the PSP RAM directly, we don't want to munge its texture data.  That's the only thing that needs to be skipped really.  But yes, that's pre-existing.  Still, gl_extensions.EXT_unpack_subimage means we can always use PSP RAM directly.

-[Unknown]