That said... I kind of wonder if we could avoid it by just not passing vs_out as an input parameter? Since it's a global variable, do we even need to do that in the first place?
Ah, because we compile the setup_vs_output() function as a separate GL shader for sm3 (and only sm3). That's annoying, maybe we could stop doing that? Or would that end up being too expensive...