Automatic scale factor on resizable/virtual monitors
Hi,
With a few patches to spice & qemu, the guest is informed of the physical resolution of the associated display window.
I tested it with a 4k monitor, which has 160dpi. My preference is to set some scaling (2 for now). Unfortunately, on resize (hotplug event with new EDID), calculate_scale()
gives a scale of 1, and somehow my preference is lost (presumably because the monitor configuration changed).
Maybe we could have a logic to stick with the scaling preference when resizing a virtual monitor?
Here is an example of QEMU EDID with a virtio-gpu:
edid-decode /sys/class/drm/card0-Virtual-1/e
edid-decode (hex):
00 ff ff ff ff ff ff 00 49 14 34 12 00 00 00 00
2a 18 01 04 a5 28 1a 78 06 ee 91 a3 54 4c 99 26
0f 50 54 21 08 00 e1 c0 d1 c0 01 01 01 01 01 01
01 01 01 01 01 01 8b aa ba 67 93 8a 3a 60 6e 4a
88 80 92 06 11 00 00 18 00 00 00 fd 00 32 7d 1e
a0 78 01 0a 20 20 20 20 20 20 00 00 00 fc 00 51
45 4d 55 20 4d 6f 6e 69 74 6f 72 0a 00 00 00 f7
00 0a 00 4a a2 24 29 20 00 00 00 00 00 00 01 40
02 03 0a 00 45 7d 65 60 59 1f 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2
----------------
Block 0, Base EDID:
EDID Structure Version & Revision: 1.4
Vendor & Product Identification:
Manufacturer: RHT
Model: 4660
Made in: week 42 of 2014
Basic Display Parameters & Features:
Digital display
Bits per primary color channel: 8
DisplayPort interface
Maximum image size: 40 cm x 26 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4
Default (sRGB) color space is primary color space
First detailed timing includes the native pixel format and preferred refresh rate
Color Characteristics:
Red : 0.6396, 0.3300
Green: 0.2998, 0.5996
Blue : 0.1503, 0.0595
White: 0.3125, 0.3291
Established Timings I & II:
DMT 0x04: 640x480 59.940 Hz 4:3 31.469 kHz 25.175 MHz
DMT 0x09: 800x600 60.317 Hz 4:3 37.879 kHz 40.000 MHz
DMT 0x10: 1024x768 60.004 Hz 4:3 48.363 kHz 65.000 MHz
Standard Timings:
DMT 0x54: 2048x1152 60.000 Hz 16:9 72.000 kHz 162.000 MHz (RB)
DMT 0x52: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz
Detailed Timing Descriptors:
DTD 1: 2490x1674 74.999 Hz 415:279 129.899 kHz 436.590 MHz (402 mm x 262 mm)
Hfront 622 Hsync 74 Hback 175 Hpol N
Vfront 8 Vsync 8 Vback 42 Vpol N
Display Range Limits:
Monitor ranges (Bare Limits): 50-125 Hz V, 30-160 kHz H, max dotclock 1200 MHz
Display Product Name: 'QEMU Monitor'
Established timings III:
DMT 0x17: 1280x768 59.870 Hz 5:3 47.776 kHz 79.500 MHz
DMT 0x20: 1280x960 60.000 Hz 4:3 60.000 kHz 108.000 MHz
DMT 0x23: 1280x1024 60.020 Hz 5:4 63.981 kHz 108.000 MHz
DMT 0x27: 1360x768 60.015 Hz 85:48 47.712 kHz 85.500 MHz
DMT 0x2f: 1440x900 59.887 Hz 16:10 55.935 kHz 106.500 MHz
DMT 0x2a: 1400x1050 59.978 Hz 4:3 65.317 kHz 121.750 MHz
DMT 0x3a: 1680x1050 59.954 Hz 16:10 65.290 kHz 146.250 MHz
DMT 0x33: 1600x1200 60.000 Hz 4:3 75.000 kHz 162.000 MHz
DMT 0x3e: 1792x1344 60.000 Hz 4:3 83.640 kHz 204.750 MHz
DMT 0x41: 1856x1392 59.995 Hz 4:3 86.333 kHz 218.250 MHz
DMT 0x45: 1920x1200 59.885 Hz 16:10 74.556 kHz 193.250 MHz
DMT 0x49: 1920x1440 60.000 Hz 4:3 90.000 kHz 234.000 MHz
Extension blocks: 1
Checksum: 0x40
----------------
Block 1, CTA-861 Extension Block:
Revision: 3
Native detailed modes: 0
Video Data Block:
VIC 125: 5120x2160 50.000 Hz 64:27 112.500 kHz 742.500 MHz
VIC 101: 4096x2160 50.000 Hz 256:135 112.500 kHz 594.000 MHz
VIC 96: 3840x2160 50.000 Hz 16:9 112.500 kHz 594.000 MHz
VIC 89: 2560x1080 50.000 Hz 64:27 56.250 kHz 185.625 MHz
VIC 31: 1920x1080 50.000 Hz 16:9 56.250 kHz 148.500 MHz
Checksum: 0xf2