glScale wont change the resolution of the canvas itself, it will just make everything bigger, rendering to a texture sounds costly.. I guess the best idea is to change the screen resolution ala xrandr, thought there would be a simpler way..
That's not true. You're just changing the transformation matrix that already gets applied to every single draw call, and textures are almost always going to be drawn at relatively arbitrary (i.e. not original) sizes, at least in my experience.
If you're noticing a performance hit from calling glScale once then you've got other issues.
One problem of course can be the textures looking like crap because they're getting scaled, but if you just turn on nearest neighbor scaling it will look exactly like if it's a a lower resolution
You can't magically change the resolution of a single window on the screen. If you think you're doing that, you're not. You can either go into full screen mode and actually change the resolution of the entire screen via the display mode, or you can simulate it through various means, a glScale call being the simplest method.