This MR improves driver support for scaled HiDPI displays, by respecting the application/window DPI.
Since we don't support per-monitor DPI information and awareness modes yet, the user should set the Wine system DPI to match the DPI/scale of the display the app will be running on, for best results.
Here is how things look with a few scenarios:
1. Screen scaled at 2x, application at 96dpi (e.g., dpi unaware apps) => the compositor automatically scales the surface: ![wine-wayland-2x-96dpi](/uploads/712bf2e64991889c91861d63dfd4fd60/wine-wayland-2x-96dpi.png)
2. Screen scaled at 2x, application at 192dpi (dpi matches compositor scale) => no compositor scaling: ![wine-wayland-2x-192dpi](/uploads/85c1201e1208f8b7e1c63804c7f83d1c/wine-wayland-2x-192dpi.png)
3. Screen scaled at 1x, application at 96dpi (dpi matches compositor scale) => no compositor scaling: ![wine-wayland-1x-96dpi](/uploads/8dfaaff1fc62defdb26f57c78cf9a427/wine-wayland-1x-96dpi.png)
4. Screen scaled at 1x, application at 192dpi, not typically used, just wanted to show what happens with such a mismatch: ![wine-wayland-1x-192dpi](/uploads/bb035140dd9c91ee3a22832c7280ab1b/wine-wayland-1x-192dpi.png)
Thanks!
-- v4: winewayland.drv: Ignore spurious size hints. winewayland.drv: Present cursors with the correct scale. winewayland.drv: Refactor cursor code to prepare for scaling support. winewayland.drv: Present surfaces with the correct scale. winewayland.drv: Prepare to handle different coordinate spaces.