From c88fb61aab039c8c4a1121b5c2f0f71f0a745de6 Mon Sep 17 00:00:00 2001 From: SarahW Date: Sun, 11 Feb 2018 14:47:53 +0000 Subject: [PATCH] Fix SVGA decode mask for Trident TGUI9440. --- src/vid_tgui9440.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vid_tgui9440.c b/src/vid_tgui9440.c index 0014cc5..de748b0 100644 --- a/src/vid_tgui9440.c +++ b/src/vid_tgui9440.c @@ -311,6 +311,7 @@ void tgui_out(uint16_t addr, uint8_t val, void *p) { tgui->linear_base = ((val & 0xf) | ((val >> 2) & 0x30)) << 20; tgui->linear_size = (val & 0x10) ? 0x200000 : 0x100000; + tgui->svga.decode_mask = (val & 0x10) ? 0x1fffff : 0xfffff; } tgui_recalcmapping(tgui); } @@ -710,12 +711,14 @@ void tgui_pci_write(int func, int addr, uint8_t val, void *p) case 0x12: tgui->linear_base = (tgui->linear_base & 0xff000000) | ((val & 0xe0) << 16); tgui->linear_size = 2 << 20; + tgui->svga.decode_mask = 0x1fffff; svga->crtc[0x21] = (svga->crtc[0x21] & ~0xf) | (val >> 4); tgui_recalcmapping(tgui); break; case 0x13: tgui->linear_base = (tgui->linear_base & 0xe00000) | (val << 24); tgui->linear_size = 2 << 20; + tgui->svga.decode_mask = 0x1fffff; svga->crtc[0x21] = (svga->crtc[0x21] & ~0xc0) | (val >> 6); tgui_recalcmapping(tgui); break;