As told by neobain, ARB_viewport_array introduced float viewports. They must be supported on OGL4.1+, but it's usually also implemented on 3.3 GPUs.