I think its better to keep offscreen rendering the special case since we also have render_upside_down as the special case.Btw, note that the surface being offscreen is the common case, and
onscreen surfaces are the exception. Maybe surface_is_onscreen() makes
more sense, but I'll leave that up to you.