]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Do not force full refresh if only vblank interrupt status changed.
authorToni Wilen <twilen@winuae.net>
Sat, 31 Oct 2020 11:09:31 +0000 (13:09 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 31 Oct 2020 11:09:31 +0000 (13:09 +0200)
pcem/vid_cl5429.cpp
pcem/vid_s3.cpp
pcem/vid_s3_virge.cpp

index b86953f71deab333f7f8f5c6fae302248cc62ec4..f3763e0b70a51ae3865bd82acc2ccbf9b36df012 100644 (file)
@@ -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)
index ae648ada2c7daa7893b482e76d68f822a561a821..f5133388db5ca070fdf5f0f80917f0b1f6416b4a 100644 (file)
@@ -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:
index 0e9fa3206d87b45e6b69769fa3f7a61bedd71465..8fbf4df3e95ba15a2f286fae02e76263d4f5115c 100644 (file)
@@ -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);