[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/9] edid: prefer standard timings
From: |
Gerd Hoffmann |
Subject: |
[PATCH 5/9] edid: prefer standard timings |
Date: |
Tue, 16 Mar 2021 15:38:08 +0100 |
Windows guests using the "Basic Display Adapter" don't parse the
"Established timings III" block. They also don't parse any edid
extension.
So prefer the "Standard Timings" block to store the display resolutions
in edid_fill_modes(). Also reorder the mode list, so more exotic
resolutions (specifically the ones which are not supported by vgabios)
are moved down and the remaining ones have a better chance to get one of
the eight slots in the "Standard Timings" block.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/display/edid-generate.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/hw/display/edid-generate.c b/hw/display/edid-generate.c
index 489532c3bc5f..42a130f0ff5c 100644
--- a/hw/display/edid-generate.c
+++ b/hw/display/edid-generate.c
@@ -25,19 +25,20 @@ static const struct edid_mode {
{ .xres = 1920, .yres = 1080, .dta = 31 },
/* additional standard timings 3 (all @ 60Hz) */
- { .xres = 1920, .yres = 1440, .xtra3 = 11, .bit = 5 },
{ .xres = 1920, .yres = 1200, .xtra3 = 10, .bit = 0 },
- { .xres = 1856, .yres = 1392, .xtra3 = 10, .bit = 3 },
- { .xres = 1792, .yres = 1344, .xtra3 = 10, .bit = 5 },
{ .xres = 1600, .yres = 1200, .xtra3 = 9, .bit = 2 },
{ .xres = 1680, .yres = 1050, .xtra3 = 9, .bit = 5 },
- { .xres = 1440, .yres = 1050, .xtra3 = 8, .bit = 1 },
{ .xres = 1440, .yres = 900, .xtra3 = 8, .bit = 5 },
- { .xres = 1360, .yres = 768, .xtra3 = 8, .bit = 7 },
{ .xres = 1280, .yres = 1024, .xtra3 = 7, .bit = 1 },
{ .xres = 1280, .yres = 960, .xtra3 = 7, .bit = 3 },
{ .xres = 1280, .yres = 768, .xtra3 = 7, .bit = 6 },
+ { .xres = 1920, .yres = 1440, .xtra3 = 11, .bit = 5 },
+ { .xres = 1856, .yres = 1392, .xtra3 = 10, .bit = 3 },
+ { .xres = 1792, .yres = 1344, .xtra3 = 10, .bit = 5 },
+ { .xres = 1440, .yres = 1050, .xtra3 = 8, .bit = 1 },
+ { .xres = 1360, .yres = 768, .xtra3 = 8, .bit = 7 },
+
/* established timings (all @ 60Hz) */
{ .xres = 1024, .yres = 768, .byte = 36, .bit = 3 },
{ .xres = 800, .yres = 600, .byte = 35, .bit = 0 },
@@ -109,13 +110,13 @@ static void edid_fill_modes(uint8_t *edid, uint8_t
*xtra3, uint8_t *dta,
if (mode->byte) {
edid[mode->byte] |= (1 << mode->bit);
- } else if (mode->xtra3 && xtra3) {
- xtra3[mode->xtra3] |= (1 << mode->bit);
} else if (std < 54) {
rc = edid_std_mode(edid + std, mode->xres, mode->yres);
if (rc == 0) {
std += 2;
}
+ } else if (mode->xtra3 && xtra3) {
+ xtra3[mode->xtra3] |= (1 << mode->bit);
}
if (dta && mode->dta) {
--
2.30.2
- [PATCH 0/9] edid: windows fixes, Gerd Hoffmann, 2021/03/16
- [PATCH 3/9] edid: move xtra3 descriptor, Gerd Hoffmann, 2021/03/16
- [PATCH 4/9] edid: use dta extension block descriptors, Gerd Hoffmann, 2021/03/16
- [PATCH 2/9] edid: edid_desc_next, Gerd Hoffmann, 2021/03/16
- [PATCH 8/9] edid: allow arbitrary-length checksums, Gerd Hoffmann, 2021/03/16
- [PATCH 1/9] qemu-edid: use qemu_edid_size(), Gerd Hoffmann, 2021/03/16
- [PATCH 9/9] edid: add support for DisplayID extension (5k resolution), Gerd Hoffmann, 2021/03/16
- [PATCH 5/9] edid: prefer standard timings,
Gerd Hoffmann <=
- [PATCH 6/9] edid: Make refresh rate configurable, Gerd Hoffmann, 2021/03/16
- [PATCH 7/9] edid: move timing generation into a separate function, Gerd Hoffmann, 2021/03/16
- Re: [PATCH 0/9] edid: windows fixes, no-reply, 2021/03/16