Skip to contentSkip to conversation

fix widescreen resolution issues (v2)

PATCH In review Andreas Winkelbauer 4 participants 6 messages Feb 22, 2008 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix widescreen resolution issues (v2)

hi,

I found out what crashed kvm when I increased VGA_RAM_SIZE in pc.h. The crash was caused by a really _dirty_ hack in a kvm specific part of vga.c (it took me at least an hour to find this amazing piece of code... at least the "HACK ALERT" was a good hint ;-) ).

I've attached the patch. It works for me (tested with windows xp as guest os @ 1680x1050). As always, please test the patch. I'd highly appreciate it if somebody could test it with linux as guest os.

@Arne: Could you please test the patch with your setup? I hope it works this time...

cheers,
Andi

qemu/hw/vga.c +1 -1
@@ -1438,7 +1438,7 @@
     long page0, page1, page_min, page_max;
     vga_draw_line_func *vga_draw_line;
     /* HACK ALERT */
-#define VGA_BITMAP_SIZE ((8*1024*1024) / 4096 / 8 / sizeof(long))
+#define VGA_BITMAP_SIZE ((VGA_RAM_SIZE) / 4096 / 8 / sizeof(long))
     unsigned long bitmap[VGA_BITMAP_SIZE];
 #ifndef TARGET_IA64
     int r;
qemu/hw/vga_int.h +2 -2
@@ -30,8 +30,8 @@
 /* bochs VBE support */
 #define CONFIG_BOCHS_VBE
 
-#define VBE_DISPI_MAX_XRES              1600
-#define VBE_DISPI_MAX_YRES              1200
+#define VBE_DISPI_MAX_XRES              2560
+#define VBE_DISPI_MAX_YRES              1600
 #define VBE_DISPI_MAX_BPP               32
 
 #define VBE_DISPI_INDEX_ID              0x0
vgabios/vbetables-gen.c +22 -13
@@ -2,7 +2,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8
+#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 16
 
 typedef struct {
     int width;
@@ -55,18 +55,27 @@
 { 1152, 864, 16                      , 0x14a},
 { 1152, 864, 24                      , 0x14b},
 { 1152, 864, 32                      , 0x14c},
-{ 1280, 800, 24                      , 0x178},
-{ 1280, 800, 32                      , 0x179},
-{ 1280, 960, 24                      , 0x180},
-{ 1280, 960, 32                      , 0x181},
-{ 1280, 960, 24                      , 0x182},
-{ 1280, 960, 32                      , 0x183},
-{ 1440, 900, 24                      , 0x184},
-{ 1440, 900, 32                      , 0x185},
-{ 1400, 1050, 24                     , 0x186},
-{ 1400, 1050, 32                     , 0x187},
-{ 1680, 1050, 24                     , 0x188},
-{ 1680, 1050, 32                     , 0x189},
+{ 1280, 800, 16                      , 0x178},
+{ 1280, 800, 24                      , 0x179},
+{ 1280, 800, 32                      , 0x17a},
+{ 1280, 960, 16                      , 0x17b},
+{ 1280, 960, 24                      , 0x17c},
+{ 1280, 960, 32                      , 0x17d},
+{ 1440, 900, 16                      , 0x17e},
+{ 1440, 900, 24                      , 0x17f},
+{ 1440, 900, 32                      , 0x180},
+{ 1400, 1050, 16                     , 0x181},
+{ 1400, 1050, 24                     , 0x182},
+{ 1400, 1050, 32                     , 0x183},
+{ 1680, 1050, 16                     , 0x184},
+{ 1680, 1050, 24                     , 0x185},
+{ 1680, 1050, 32                     , 0x186},
+{ 1920, 1200, 16                     , 0x187},
+{ 1920, 1200, 24                     , 0x188},
+{ 1920, 1200, 32                     , 0x189},
+{ 2560, 1600, 16                     , 0x18a},
+{ 2560, 1600, 24                     , 0x18b},
+{ 2560, 1600, 32                     , 0x18c},
 { 0, },
 };
 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

#1 lore raw
Quoted 12 lines · Andreas Winkelbauer <andreas.winkelbauer <at> gmx.at> writes:

hi,

I found out what crashed kvm when I increased VGA_RAM_SIZE in pc.h. The crash was caused by a really _dirty_ hack in a kvm specific part of vga.c (it took me at least an hour to find this amazing piece of code... at least the "HACK ALERT" was a good hint ).

I've attached the patch. It works for me (tested with windows xp as guest os @ 1680x1050). As always, please test the patch. I'd highly appreciate it if somebody could test it with linux as guest os.

Patches get me running up to 1920 x 1200 using WinXP guest!

Now that I can run higher resolutions I am seeing a screen corruption issue on resolutions greater than 1600x1200. Property dialogs are the easiest way to see the issue, a set of thin horizontal bands through the dialog with the desktop visible. On certain areas of the screen the mouse pointer will also show banding.

Les

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

#2 lore raw
In reply to Andreas Winkelbauer
Quoted 7 lines · Andreas Winkelbauer

hi,

I found out what crashed kvm when I increased VGA_RAM_SIZE in pc.h. The crash was caused by a really _dirty_ hack in a kvm specific part of vga.c (it took me at least an hour to find this amazing piece of code... at least the "HACK ALERT" was a good hint ;-) ).

Quoted 7 lines

I've attached the patch. It works for me (tested with windows xp as guest os @ 1680x1050). As always, please test the patch. I'd highly appreciate it if somebody could test it with linux as guest os.

@Arne: Could you please test the patch with your setup? I hope it works this time...

The patch doesn't include the change to VGA_RAM_SIZE! How can this work?

Please send separate patches for the bios and qemu.

Signature · 7 lines
Do not meddle in the internals of kernels, for they are subtle and quick to panic.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
#3 lore raw
In reply to Andreas Winkelbauer

Hi all,

Quoted 4 lines · Andreas Winkelbauer

I found out what crashed kvm when I increased VGA_RAM_SIZE in pc.h. The crash was caused by a really _dirty_ hack in a kvm specific part of vga.c (it took me at least an hour to find this amazing piece of code... at least the "HACK ALERT" was a good hint ;-) ).

Ow, that really does qualify as a dirty hack. :) Thanks for finding that! I currently don't have the time to skim through pages of code, so sorry for my non-involvement on this issue...

Quoted 2 lines

@Arne: Could you please test the patch with your setup? I hope it works this time...

Yesno. It does (at least kvm does not crash), but it shows the same dialog problems as reported by Leslie:

Quoted 3 lines

I've attached the patch. It works for me (tested with windows xp as guest os @ 1680x1050). As always, please test the patch. I'd highly appreciate it if somebody could test it with linux as guest os.

BTW, Leslie: Which patch did you use? I attached a second patch as Andreas forgot to include the changes in hw/pc.h.

Cheers & Good morning to the europeans ;)
Arne

qemu/hw/pc.h +2 -2
diff -Naur kvm-61.orig/qemu/hw/pc.h kvm-61/qemu/hw/pc.h
@@ -108,9 +108,9 @@
 /* vga.c */
 
 #ifndef TARGET_SPARC
-#define VGA_RAM_SIZE (8192 * 1024)
+#define VGA_RAM_SIZE (16 * 1024 * 1024)
 #else
-#define VGA_RAM_SIZE (9 * 1024 * 1024)
+#define VGA_RAM_SIZE (17 * 1024 * 1024)
 #endif
 
 int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base,
qemu/hw/vga.c +1 -1
diff -Naur kvm-61.orig/qemu/hw/vga.c kvm-61/qemu/hw/vga.c
@@ -1438,7 +1438,7 @@
     long page0, page1, page_min, page_max;
     vga_draw_line_func *vga_draw_line;
     /* HACK ALERT */
-#define VGA_BITMAP_SIZE ((8*1024*1024) / 4096 / 8 / sizeof(long))
+#define VGA_BITMAP_SIZE ((VGA_RAM_SIZE) / 4096 / 8 / sizeof(long))
     unsigned long bitmap[VGA_BITMAP_SIZE];
 #ifndef TARGET_IA64
     int r;
qemu/hw/vga_int.h +2 -2
diff -Naur kvm-61.orig/qemu/hw/vga_int.h kvm-61/qemu/hw/vga_int.h
@@ -30,8 +30,8 @@
 /* bochs VBE support */
 #define CONFIG_BOCHS_VBE
 
-#define VBE_DISPI_MAX_XRES              1600
-#define VBE_DISPI_MAX_YRES              1200
+#define VBE_DISPI_MAX_XRES              2560
+#define VBE_DISPI_MAX_YRES              1600
 #define VBE_DISPI_MAX_BPP               32
 
 #define VBE_DISPI_INDEX_ID              0x0
vgabios/vbetables-gen.c +52 -43

119 lines not on this page · raw message

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

#4 lore raw

hi,

Quoted 4 lines
Quoted 2 lines

@Arne: Could you please test the patch with your setup? I hope it works this time...

Yesno. It does (at least kvm does not crash), but it shows the same dialog problems as reported by Leslie:

I'm quite sure that this issue isn't related to the widescreen fixes. This "visual bug" seems to be around since kvm-60 or so and has been verified by some guys (including me) also at lower resolutions like 1400x1050.

See this post:
http://article.gmane.org/gmane.comp.emulators.kvm.devel/13409

You could try using -no-kvm or an older kvm release for testing.

cheers,
Andi

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

#5 lore raw
In reply to Arne Brutschy
Quoted 4 lines · Arne Brutschy <arne.brutschy <at> ulb.ac.be> writes:

BTW, Leslie: Which patch did you use? I attached a second patch as Andreas forgot to include the changes in hw/pc.h.

All provided along with an edit to hw/pc.h, same as your second patch.

Les

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/