I would advise not using the viewport
stretch mode as it doesn't scale the rendering buffer like you'd expect it (resulting in pixelated graphics). I wouldn't recommend the 2d
stretch mode either, because it pretty much requires the use of a keep
aspect ratio mode (which means you'll often get black bars) and will dumbly rescale your GUI (which isn't always what you want, this is true especially for desktop games).
The best (and most involved) solution is likely to use disabled
scaling mode, and ignore
aspect ratio, and to handle GUI resizing yourself using control scaling and anchoring. To adjust the game zoom, you can use a camera. This way, you support most aspect ratios without any black bars.
Regardless of what scaling mode you use, properly handling hiDPI is still a problem, unfortunately Godot currently has no hiDPI facilities for games (it's only for the editor as of 2.1.2).