From fa9ca41644cab36a6c2dee9bbf77a52f5ca9ee1f Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 31 Oct 2020 13:09:31 +0200 Subject: [PATCH] Do not force full refresh if only vblank interrupt status changed. --- pcem/vid_cl5429.cpp | 4 +++- pcem/vid_s3.cpp | 2 ++ pcem/vid_s3_virge.cpp | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pcem/vid_cl5429.cpp b/pcem/vid_cl5429.cpp index b86953f7..f3763e0b 100644 --- a/pcem/vid_cl5429.cpp +++ b/pcem/vid_cl5429.cpp @@ -151,7 +151,7 @@ static void ibm_gd5428_mapping_update(gd5429_t *gd5429); static int s3_vga_vsync_enabled(gd5429_t *gd5429) { - if (!(gd5429->svga.crtc[0x11] & 0x20) && (gd5429->svga.crtc[0x11] & 0x10) && (gd5429->type < !PCI || (gd5429->svga.gdcreg[0x17] & 4))) + if (!(gd5429->svga.crtc[0x11] & 0x20) && (gd5429->svga.crtc[0x11] & 0x10) && (gd5429->type < PCI || (gd5429->svga.gdcreg[0x17] & 4))) return 1; return 0; } @@ -774,6 +774,8 @@ void gd5429_out(uint16_t addr, uint8_t val, void *p) gd5429->vblank_irq = 0; } gd5429_update_irqs(gd5429); + if ((val & ~0x30) == (old & ~0x30)) + old = val; } if (old != val) diff --git a/pcem/vid_s3.cpp b/pcem/vid_s3.cpp index ae648ada..f5133388 100644 --- a/pcem/vid_s3.cpp +++ b/pcem/vid_s3.cpp @@ -1026,6 +1026,8 @@ void s3_out(uint16_t addr, uint8_t val, void *p) if (!(val & 0x10)) s3->subsys_stat &= ~INT_VSY; s3_update_irqs(s3); + if ((val & ~0x30) == (old & ~0x30)) + old = val; break; case 0x31: diff --git a/pcem/vid_s3_virge.cpp b/pcem/vid_s3_virge.cpp index 0e9fa320..8fbf4df3 100644 --- a/pcem/vid_s3_virge.cpp +++ b/pcem/vid_s3_virge.cpp @@ -381,6 +381,8 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p) virge->vblank_irq = 0; } s3_virge_update_irqs(virge); + if ((val & ~0x30) == (old & ~0x30)) + old = val; break; case 0x31: virge->ma_ext = (virge->ma_ext & 0x1c) | ((val & 0x30) >> 4); -- 2.47.3