From d254f41817185146ccf89b6d0cc229976075d466 Mon Sep 17 00:00:00 2001 From: SarahW Date: Fri, 9 Oct 2020 17:20:25 +0100 Subject: [PATCH] Banshee/Voodoo 3 status returns busy when FIFO thread is busy, regardless of command/cmdfifo/render thread status. Fixes some 2D races where drivers start to write to framebuffer while (final) 2D blit command is still running. --- src/vid_voodoo_banshee.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vid_voodoo_banshee.c b/src/vid_voodoo_banshee.c index 5f10cea..fb0ca99 100644 --- a/src/vid_voodoo_banshee.c +++ b/src/vid_voodoo_banshee.c @@ -698,7 +698,10 @@ static uint32_t banshee_status(banshee_t *banshee) int fifo_size = 0xffff - fifo_entries; int swap_count = voodoo->swap_count; int written = voodoo->cmd_written + voodoo->cmd_written_fifo; - int busy = (written - voodoo->cmd_read) || (voodoo->cmdfifo_depth_rd != voodoo->cmdfifo_depth_wr) || voodoo->render_voodoo_busy[0] || voodoo->render_voodoo_busy[1]; + int busy = (written - voodoo->cmd_read) || (voodoo->cmdfifo_depth_rd != voodoo->cmdfifo_depth_wr) || + voodoo->render_voodoo_busy[0] || voodoo->render_voodoo_busy[1] || + voodoo->render_voodoo_busy[2] || voodoo->render_voodoo_busy[3] || + voodoo->voodoo_busy; uint32_t ret; ret = 0;