Commit graph pcem/src/vid_voodoo_banshee.c
Author SHA1 Message Date
SarahW
e27e37179f Guard fatal()s in Banshee/V3 code in !RELEASE_BUILD 2020-12-01 16:04:19 +00:00
SarahW
cd7b41f73a Correct Banshee subsystem ID. 2020-11-30 22:29:51 +00:00
SarahW
15fd983fa9 Don't fatal() on unknown Banshee/V3 3D reg read. Fixes Spearhead. 2020-11-26 08:29:14 +00:00
SarahW
81a8873d59 Fix Banshee/V3 cursor vertical clipping. 2020-11-22 17:11:13 +00:00
SarahW
e518b4312b Handle unaligned LFB reads/writes on Banshee/V3. Fixes UI glitches in
Red Alert 2.
2020-11-22 14:28:57 +00:00
SarahW
87524de18b Implement Voodoo CMDFIFO JSR/RET. Fixed "Bad CMDFIFO0" seen sometimes,
particularly when running OpenGL games windowed.
2020-11-21 09:44:46 +00:00
SarahW
6b96f56632 Fix off-by-one issue on Banshee/V3 RGB565 overlay render. 2020-11-19 19:46:49 +00:00
SarahW
49ba35733e Implement Banshee/V3 CLUT lookup on 16-bit RGB overlay. 2020-11-19 19:38:34 +00:00
SarahW
088354f607 Mask off source address correctly for Banshee/V3 RGB565 tiled overlay 2020-11-18 20:00:55 +00:00
SarahW
035f6b348c Fix horizontal scaling of unfiltered Banshee/V3 overlay. 2020-11-18 19:49:58 +00:00
SarahW
aef6ea93e6 More changes to Banshee/V3 half mode. 2020-11-18 19:48:37 +00:00
SarahW
8cfb60608e Increase size of Voodoo dirty_line array to 2048 lines, and add some
bounds checking before accessing. Fixes crash running 3DMark 2001 on
Voodoo 3.
2020-11-17 08:32:12 +00:00
SarahW
5c20fe7c57 Implement Banshee half mode on non-tiled surfaces. Fixes low res VESA
modes.
2020-11-16 20:05:44 +00:00
SarahW
5ae201b7e7 Disable Banshee lazy overlay update when vertical scaling enabled. Fixes
artifacts in low resolution modes (where the lazy update has little
benefit anyway).
2020-11-14 19:34:00 +00:00
SarahW
49bdd9534f Add X11 cursor mode to Banshee/V3. 2020-11-14 19:34:00 +00:00
SarahW
ed37bc4e24 Fix Banshee/V3 mappings following write of PCI command register. Fixes hang
following monitor suspend/wakeup.
2020-11-14 19:33:59 +00:00
SarahW
86a5b13f46 Add dirty updating for Voodoo Banshee/3 overlay. 2020-11-14 19:33:59 +00:00
SarahW
a366d977aa Added Voodoo Banshee/3 screen filter. Patch from leilei. 2020-11-14 19:33:59 +00:00
SarahW
91e165a6d6 Reduce level of Voodoo Banshee/3 logging. 2020-11-14 19:33:59 +00:00
SarahW
c598f88f67 Implement Banshee/V3 vidProcCfg half mode. Fixes low res 16 bpp modes. 2020-11-14 19:33:58 +00:00
SarahW
193645a426 Add mutex to protect Voodoo swap count and pending. Should fix hangs
sometimes changing video mode on Voodoo 3.
2020-11-14 19:33:57 +00:00
SarahW
f705fd8261 Change Voodoo 3 PCI revision from 3 to 1. 2020-11-14 19:33:55 +00:00
SarahW
5eb6f4d168 Implement plug and play monitor support on Voodoo Banshee & 3. 2020-11-14 19:33:54 +00:00
SarahW
c9891895da Implement Voodoo CMDFIFO enable bit. 2020-11-14 19:33:54 +00:00
SarahW
d254f41817 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.
2020-11-14 19:33:53 +00:00
SarahW
086287809b Mark Banshee/Voodoo 3 cards as PCI. 2020-11-14 19:33:53 +00:00
SarahW
6df66c59fb Add Voodoo 3 emulation. 2020-11-14 19:33:53 +00:00
SarahW
2415d8ad50 Mask Banshee desktop start address correctly. 2020-11-14 19:33:52 +00:00
SarahW
52a79fbb57 Add option for Voodoo to use 4 render threads. 2020-11-14 19:33:52 +00:00
SarahW
f6406c77e5 Add fast path in Banshee overlay render; if overlay is unfiltered and
unscaled then just write straight to destination buffer.
2020-11-14 19:33:51 +00:00
SarahW
2cf57ab8b2 If Banshee video overlay is full screen (as would be the case for
full screen 3D), don't bother rendering the desktop behind it.
2020-11-14 19:33:51 +00:00
SarahW
3e5e519d10 Implement dirty updating on Banshee 16bpp tiled modes 2020-11-14 19:33:51 +00:00
SarahW
e761045e40 Remove unused variables in Banshee. 2020-11-14 19:33:51 +00:00
SarahW
1900499ace Fix "effective clockspeed" display when using Banshee. 2020-11-14 19:33:51 +00:00
SarahW
1915149391 Increase Banshee revision to 3, matching my real CL Banshee card. Removes
the need for any fogTable hack, which is in any case inconsistently applied
by drivers and I think may only be needed on pre-production devices.
2020-11-14 19:33:49 +00:00
SarahW
95ccdcae5c Implement bilinear filtering on Banshee video overlay. 2020-11-14 19:33:49 +00:00
SarahW
9adb36ece3 Banshee status now returns busy when either of the render threads is
busy. Fixed HUD in Jedi Knight.
2020-11-14 19:33:49 +00:00
SarahW
c9bf81f599 Fix Banshee CMDFIFO base address mask. 2020-11-14 19:33:49 +00:00
SarahW
fccd59ba92 Add Banshee RGB565 undithered overlay format. Currently dithered and
undithered are handled the same.
2020-11-14 19:33:49 +00:00
SarahW
870a19f537 Don't fatal() on unknown Banshee port read/write. Fixes Windows 95
hardware detection.
2020-11-14 19:33:48 +00:00
SarahW
93c0bc85c7 Mark Banshee mappings as external. Banshee cards now work on GA-686BX. 2020-11-14 19:33:48 +00:00
SarahW
a85f315daf The existing A-Trend Banshee card is AGP, which is not currently emulated.
Replaced with a reference SGRAM PCI card, and added a Creative SDRAM card.
2020-11-14 19:33:48 +00:00
SarahW
2212b9a470 Implement out-of-order CMDFIFO handling on Banshee. 2020-11-14 19:33:31 +00:00
SarahW
06a07cfcbc Fix off-by-one size error with Banshee overlay. 2020-11-14 19:33:30 +00:00
SarahW
d1f17cd8ae Don't flush Banshee pipeline when reading clipping registers. Fixes
severe slowdown in 3dMark2000 fill rate test.
2020-11-14 19:33:29 +00:00
SarahW
133f19fe39 Implement Banshee tiled surfaces 2020-11-14 19:33:29 +00:00
SarahW
19a5dfa579 Added Voodoo Banshee emulation.
Known issues :
- Tiled framebuffer layout is not yet implemented. This causes horizontal
  offsets in some 2D 16bpp stuff (eg FMV in Tomb Raider 2, UI in Expendable)
- Fog is broken and currently disabled for Banshee
- Possibly at least 1 race in 2D blitter emulation
- A few things not yet emulated - overlay filters, some (rarely used) 2D
  blitter functions
2020-11-14 19:33:28 +00:00