From eee4ec9f878ff95a675036e317faac1a6c709825 Mon Sep 17 00:00:00 2001 From: AITUS95 <48457684+AITUS95@users.noreply.github.com> Date: Wed, 26 Nov 2025 19:40:51 +0100 Subject: [PATCH] voodoo1: apply higher CMDFIFO wake threshold only for Voodoo1 --- src/video/vid_voodoo.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/video/vid_voodoo.c b/src/video/vid_voodoo.c index c17f8bc32..47c59a0ff 100644 --- a/src/video/vid_voodoo.c +++ b/src/video/vid_voodoo.c @@ -427,18 +427,27 @@ voodoo_writel(uint32_t addr, uint32_t val, void *priv) voodoo_queue_command(voodoo, addr | FIFO_WRITEL_FB, val); } else if ((addr & 0x200000) && (voodoo->fbiInit7 & FBIINIT7_CMDFIFO_ENABLE)) { #if 0 - voodoo_log("Write CMDFIFO %08x(%08x) %08x %08x\n", addr, voodoo->cmdfifo_base + (addr & 0x3fffc), val, (voodoo->cmdfifo_base + (addr & 0x3fffc)) & voodoo->fb_mask); + voodoo_log("Write CMDFIFO %08x(%08x) %08x %08x\n", addr, (voodoo->cmdfifo_base + (addr & 0x3fffc)) & voodoo->fb_mask, val, (voodoo->cmdfifo_base + (addr & 0x3fffc)) & voodoo->fb_mask); #endif *(uint32_t *) &voodoo->fb_mem[(voodoo->cmdfifo_base + (addr & 0x3fffc)) & voodoo->fb_mask] = val; voodoo->cmdfifo_depth_wr++; - if ((voodoo->cmdfifo_depth_wr - voodoo->cmdfifo_depth_rd) > (voodoo->type == VOODOO_1 ? 300 : 20)) - voodoo_wake_fifo_thread(voodoo); + + /* Voodoo1: use higher CMDFIFO threshold to reduce wake frequency */ + if (voodoo->type == VOODOO_1) { + if ((voodoo->cmdfifo_depth_wr - voodoo->cmdfifo_depth_rd) > 300) + voodoo_wake_fifo_thread(voodoo); + } + /* Other cards (Voodoo2, Banshee, Voodoo3, ...) keep the original behavior */ + else { + if ((voodoo->cmdfifo_depth_wr - voodoo->cmdfifo_depth_rd) < 20) + voodoo_wake_fifo_thread(voodoo); + } } else switch (addr & 0x3fc) { case SST_intrCtrl: fatal("intrCtrl write %08x\n", val); break; - + case SST_userIntrCMD: fatal("userIntrCMD write %08x\n", val); break;