VOGONS


Voodoo 4 M4800

Topic actions

First post, by sdz

User metadata
Rank Member
Rank
Member

MXM3.0/3.1 TYPE A VSA-100 video card, for finally making a laptop with 3dfx graphics. I'll document it here as I think it will be quite interesting, it's not that straightforward shoving a VSA-100 into a laptop.

S1.jpg
Filename
S1.jpg
File size
389.21 KiB
Views
76098 views
File license
Public domain
S2.jpg
Filename
S2.jpg
File size
401.54 KiB
Views
76098 views
File license
Public domain
S3A.png
Filename
S3A.png
File size
1.02 MiB
Views
76098 views
File license
Public domain

The PCBs arrived yesterday, and they look great:

S4.jpg
Filename
S4.jpg
File size
1.56 MiB
Views
76098 views
File license
Public domain
S6.jpg
Filename
S6.jpg
File size
1.84 MiB
Views
76098 views
File license
Public domain

Reply 1 of 36, by sdz

User metadata
Rank Member
Rank
Member

Laptops with MXM slots, want a video card with an MXM BIOS. Obviously, the usual V4 BIOS isn't MXM compatible. Also, the system BIOS would probably need to be edited to add the VSA ID to the whitelist. I don't want to mess with the system BIOS, or to attempt to make the VSA BIOS MXM compatible.
This means two things:
1. The laptop will not execute the BIOS on the video card. In the case of the VSA-100 it's not that bad. Many registers can be set with hardware straps, but not all. In this case, two important registers are not set to the value that is needed for such an application, vidInFormat[8] and vidInFormat[22] . Because of this, the digital RGB interface of the VSA will output scrambled Chrontel instead of unscrambled Brooktree format.

S7.jpg
Filename
S7.jpg
File size
129.63 KiB
Views
76085 views
File license
Public domain

And this is how DVI looks with in such a setup (V5 5500 DVI):

S8.jpg
Filename
S8.jpg
File size
28.95 KiB
Views
76085 views
File license
Public domain
S9.jpg
Filename
S9.jpg
File size
42.12 KiB
Views
76085 views
File license
Public domain

On the V4 M4800 the usual TMDS encoder was replaced with an FPGA.

2. The laptop will behave as it doesn't have a video card plugged in. Because of this, if it's a laptop with an integrated GPU, it will not toggle the muxes to switch to the video signal coming from the MXM slot.
I intend to use the card in a Dell Precision M4800, which has the LVDS connector close to the MXM slot, so for keeping the solution as much as plug and play possible, I added an LVDS connector on the MXM card. Otherwise, some traces need to be cut on the motherboard. With this also goes backlight control via keyboard, but it may be possible to implement a workaround for this. More on that later.

Another important point is that a laptop screen has a fixed resolution. If the GPU is set to render at a resolution lower than the native resolution of the panel, the GPU will upscale that image so that the panel is always fed with it's native resolution. The VSA-100 will do no such scaling.
Also the panel wants to receive dual channel LVDS/OpenLDI/FPDLIK-I signal. Because of this, the card has a Realtek scaler, that takes the HDMI signal from the FPGA, upscales it if needed, and outputs LVDS to the panel. This is basically what's inside a PC monitor, added on the MXM card.

Reply 3 of 36, by sdz

User metadata
Rank Member
Rank
Member

It is a bit crammed, as it's basically a 64MB V4, plus PCIe to PCI bridge, FPGA, the scaler that's usually inside a PC monitor, a microcontroler, power supplies, various flash ICs/EEPROMs etc. The size of the board is 7x8cm.

I just finished assembly (I'll wash the board better later).

Here it is next to a standard Voodoo 4:

S10.jpg
Filename
S10.jpg
File size
1.55 MiB
Views
76031 views
File license
Public domain

More photos:

S11.jpg
Filename
S11.jpg
File size
1.48 MiB
Views
76031 views
File license
Public domain
S12.jpg
Filename
S12.jpg
File size
1.75 MiB
Views
76031 views
File license
Public domain
S13.jpg
Filename
S13.jpg
File size
1.87 MiB
Views
76031 views
File license
Public domain
S14.jpg
Filename
S14.jpg
File size
1.73 MiB
Views
76031 views
File license
Public domain

Reply 4 of 36, by sdz

User metadata
Rank Member
Rank
Member
S15.jpg
Filename
S15.jpg
File size
1.79 MiB
Views
76029 views
File license
Public domain
S16.jpg
Filename
S16.jpg
File size
1.87 MiB
Views
76029 views
File license
Public domain
S17.jpg
Filename
S17.jpg
File size
1.65 MiB
Views
76029 views
File license
Public domain
S18.jpg
Filename
S18.jpg
File size
1.77 MiB
Views
76029 views
File license
Public domain

Reply 5 of 36, by sdz

User metadata
Rank Member
Rank
Member

Also made an MXM carrier, so I can bring-up the board in a normal PC:

S19.jpg
Filename
S19.jpg
File size
1.4 MiB
Views
76029 views
File license
Public domain

This looks absolutely ridiculous:

S20.jpg
Filename
S20.jpg
File size
1.91 MiB
Views
76029 views
File license
Public domain
S21.jpg
Filename
S21.jpg
File size
1.35 MiB
Views
76020 views
File license
Public domain
S22.jpg
Filename
S22.jpg
File size
1.35 MiB
Views
76020 views
File license
Public domain

Reply 7 of 36, by sdz

User metadata
Rank Member
Rank
Member

Probably not, but I'll opensource the design.

Some good news, the card works 😀
Here's it running in a PC, with VGA output:
https://youtu.be/MKRf2rdHCFA?si=6mj1gPLrcQtiUlNY

Next step is getting the HDMI output from the FPGA working. There is a mux on the board, and the HDMI can be routed to the onboard scaler or the MXM connector. This will probably take a while.

Reply 9 of 36, by DrAnthony

User metadata
Rank Newbie
Rank
Newbie

Well done dude! Looks like you've been really busy in the Voodoo lab lately. I know this has some shortcomings that look like a pretty major hill to climb to be a bit more universal, but do you think some outside of the box thinking might be able to improve things? I'm just spitballing here as I don't really tinker with laptops, but would you be able to integrate this into a little box and use thunderbolt for an external GPU? Or does that run headfirst back into the BIOS issues?

Reply 10 of 36, by sdz

User metadata
Rank Member
Rank
Member

@supercordo
That's actually something that I want to do at some point.

@DrAnthony
Thanks! Pretty busy indeed, another board will arrive in a week or so 😀
Using the card via Thunderbolt might actually be OK regarding the BIOS, however:
-last time I wanted to develop a thunderbolt device with Intel's ICs, to get access to the documentation/tools, one would need to describe to Intel what's the application, and get their blessing.
-there would be no way (at least no reasonable way) of getting the image on the laptop's screen. One would need to use an external monitor. At that point it's better just to use a PC.

A couple of updates regarding the V4 M4800:

I got HDMI working through the FPGA:

20240602_123557.jpg
Filename
20240602_123557.jpg
File size
1.44 MiB
Views
75564 views
File license
Public domain

https://youtu.be/MiMey5aXpYw?si=z9vBNY-1vv89CKvE

The following resolutions (all 60Hz) work fine:

640x480
800x600
960x720
1024x768
1152x864
1280x720
1280x1024
1360x768
1600x900
1600x1024

1280x960 displays a black screen via HDMI, but it's the same on a V5 5500 DVI card, so it's a driver/VSA issue.

1920x1080 works but there are some timing issues to resolve inside the FPGA. I will work on this later, as 1080p is already problematic.
On a regular V5 5500, with the timings provided by Dolenc here The Changeling 3dfx Voodoo 5 5500 , 1080p works only on an Alienware AW3423DWF. I tested with about 5 different other displays, and none work with those timings. First I need to other fix that somehow, or ensure that the scaler accepts those timings. After that, I'll fix the FPGA issue for that resolution.

At the moment, everything works as intended, except the scaler, which is the last part to solve.

M4800_DG1.png
Filename
M4800_DG1.png
File size
84.82 KiB
Views
75564 views
File license
Public domain

I made this small board with just the scaler, so I can work on this easier:

20240531_192019.jpg
Filename
20240531_192019.jpg
File size
1.67 MiB
Views
75564 views
File license
Public domain

I ran a couple of benchmarks, 3DMark2001SE, XP SP3, SFFT1.9, default settings, 1024x768, 32bpp, and got the following results:

32MB RAM (2.8V VCORE):
166MHz: 1694
183MHz: 1872
192MHz: 1955

64MB RAM (2.8V VCORE):
192MHz: 2035

Reply 12 of 36, by sdz

User metadata
Rank Member
Rank
Member

@amadeus777999 Thank you!

I got the cursed scaler working.

It takes 16:9 resolutions and upscales them to 16:9 1920x1080

20240603_221030.jpg
Filename
20240603_221030.jpg
File size
1.43 MiB
Views
75417 views
File license
Public domain

And 4:3 resolutions, adds black borders, and upscales them to 16:9 1920x1080

20240603_221059.jpg
Filename
20240603_221059.jpg
File size
1.41 MiB
Views
75417 views
File license
Public domain

Everything mostly works, I fixed a ton of issues (wasted hours trying to "fix" the panel's timings until finally figuring out that a cropped image is not a timing issue (obviously), but overscan). It's not yet ready for the M4800 card. The scaler has two TMDS inputs, and I got only one working. Obviously not the same one I used on the VSA-100 M4800 card.

Reply 13 of 36, by sdz

User metadata
Rank Member
Rank
Member

Got the other TMDS input working, and programmed the scaler on the VSA-100 card:

20240604_124648.jpg
Filename
20240604_124648.jpg
File size
1.94 MiB
Views
75358 views
File license
Public domain
20240604_124705.jpg
Filename
20240604_124705.jpg
File size
1.61 MiB
Views
75358 views
File license
Public domain

https://www.youtube.com/watch?v=yuj_HG3H74w

Next is to change the FPGA code a bit, for the messed up video format that the VSA-100 will output when plugged into a laptop.

Reply 14 of 36, by sdz

User metadata
Rank Member
Rank
Member

Here it is, world's first 3dfx powered laptop 😁

20240604_150929.jpg
Filename
20240604_150929.jpg
File size
1.71 MiB
Views
75338 views
File license
Public domain
20240604_150325.jpg
Filename
20240604_150325.jpg
File size
1.83 MiB
Views
75338 views
File license
Public domain
20240604_150320.jpg
Filename
20240604_150320.jpg
File size
1.65 MiB
Views
75338 views
File license
Public domain
20240604_150201.jpg
Filename
20240604_150201.jpg
File size
1.8 MiB
Views
75338 views
File license
Public domain
20240604_150208.jpg
Filename
20240604_150208.jpg
File size
1.52 MiB
Views
75338 views
File license
Public domain

https://youtu.be/f1h572CyArk?si=btRd7BH3IB-1CR8d

There are still a few things to do, fix brightness/contrast, figure out why the image is shifted right by about 5 pixels and fix it, read temperature sensors, control fan, send shutdown signal to host in case of overtemperature, and maybe figure out a way of controlling the panel's backlight from the OS. But the card works perfectly 😀

Reply 15 of 36, by DrAnthony

User metadata
Rank Newbie
Rank
Newbie

Wow, wow, wow, wow,WOW! Thanks for sharing this along with your insights. I'm sure we've all got a display sitting somewhere in house that's got some pesky overscan setting. Mine just so happens to be a 2008 vintage Sony TV in my basement, but the pain is there nonetheless.

Reply 16 of 36, by sdz

User metadata
Rank Member
Rank
Member

@DrAnthony No problem 😀 .

I managed to fix the scaler brightness/contrast bug, and set them to some decent values (I'll tweak it to "perfection" later). Now the display looks so much better:

20240605_192327.jpg
Filename
20240605_192327.jpg
File size
1.34 MiB
Views
75137 views
File license
Public domain

Also measured VRMs temperature, as these are not covered at all by the existing heatsink.

IMG_20220101_051228.jpg
Filename
IMG_20220101_051228.jpg
File size
508.54 KiB
Views
75137 views
File license
Public domain
IMG_20220101_051231.jpg
Filename
IMG_20220101_051231.jpg
File size
467.07 KiB
Views
75137 views
File license
Public domain

At 2.5V VCORE, 166MHz core/memory frequency, idle: 85.9C, load: 87.6C. This is well within spec, the VRM ICs are rated to operate at 125C. If it ever gets beyond that, the MCU will immediately shut down the power rails and issue an overtemperature event that will shutdown the laptop. This way nothing will ever get damaged.
VSA temperature is good, I can't yet say exactly what it is yet, but the cooling system works really well.

There is a temperature sensor right underneath the VSA, but it's not currently read by the MCU:

Screenshot 2024-06-05 194516.jpg
Filename
Screenshot 2024-06-05 194516.jpg
File size
288.25 KiB
Views
75137 views
File license
Public domain
Screenshot 2024-06-05 194534.jpg
Filename
Screenshot 2024-06-05 194534.jpg
File size
494.75 KiB
Views
75137 views
File license
Public domain

When doing the VRM temperature measurements, I found a bug.

When I tested the card plugged into a PC, I was able to overclock it just fine with V.ctrl or VSA100 OC.
However, when I do the same thing with the card plugged into the laptop, the new clocks apply, but, as soon as a Glide or D3D application is started, the card clocks change back to the default 166MHz.
Either something is messed up in that system, or this is somehow caused by the lack of VSA BIOS.

Found some other issues as well. While the VSA-FPGA-HDMI works fine for 640x480,800x600,960x720,1024x768,1152x864,1280x720,1280x1024,1360x768,1600x900,1600x1024, and the HDMI-SCALER-LVDS works fine for those resolutions as well, when doing VSA-FPGA-SCALER-PANEL there are quite a few resolutions with major issues. I suspect most of this is caused by my FPGA code, as well as the whole image shifted to the right by about 5 pixels.

Last edited by sdz on 2024-06-06, 13:36. Edited 1 time in total.

Reply 17 of 36, by sdz

User metadata
Rank Member
Rank
Member

I changed the panel backlight control to the scaler instead of the MCU (the board was design to permit both, with a resistor position change). Now, when the system is on, but the screen should be off, it's black with no backlight, instead of black with backlight on. Also tweaked/fixed various other scaler related things, now the scaler does pretty much all what I wanted it to do.

While I didn't manage to overlock the card with V.ctrl or VSA100 OC (in the laptop), it works with Voodoo 5 Overclocker 1.0. I managed to push the card from the stock 166MHz to 200MHz, at 2.9V VCORE. Not bad considering it's a 220 revision VSA-100 and 166MHz rated RAM.
I have a couple of VSA-100 320 rev ICs, and I'll try to source 200MHz rated RAM. After that it should go higher.

With the card installed in the laptop, 64MB RAM, 200MHz core/mem clock, XP SP3, SFFT1.9, 3DMark2001SE default settings, 1024x768 32bpp, no tweaked LOD: 2148 3D Marks.

20240606_144858.jpg
Filename
20240606_144858.jpg
File size
1.81 MiB
Views
74848 views
File license
Public domain

Reply 18 of 36, by progman.exe

User metadata
Rank Member
Rank
Member

EDIT:I wrote and posted this before reading you'd got it OC'd with another program. Another reason to basically ignore it 😀
---------------------------------

sdz wrote on 2024-06-05, 17:30:
When doing the VRM temperature measurements, I found a bug. […]
Show full quote

When doing the VRM temperature measurements, I found a bug.

When I tested the card plugged into a PC, I was able to overclock it just fine with V.ctrl or VSA100 OC.

However, when I do the same thing with the card plugged into the laptop, the new clocks apply, but, as soon as a Glide or D3D application is started, the card clocks change back to the default 166MHz.
Either something is messed up in that system, or this is somehow caused by the lack of VSA BIOS.

Staggering work. I showed a nerd-mate your website, he tried to be "lol retro why", but the still-gaming-nerd in him knew what he was looking at, and he ended up being impressed.

All I can suggest is bodges: What about something like have a program sleep for 30 seconds, then run a program that turns up the clock. In that 30 seconds, you start your Glide/D3D program, and the overclock is applied in the background?

Or is that recipe to insta-crash the drivers or program?

Otherwise, can you use the FPGA to also hold a copy of the VSA BIOS? Just adding this idea to make it clear I don't know what I am actually looking at 😀

Keep up the good work sdz!

Reply 19 of 36, by EriolGaurhoth

User metadata
Rank Newbie
Rank
Newbie

I've dreamed of this thing, pretty much my entire life: a proper 3Dfx-powered laptop! I just discovered this today while posting to an old thread about my desire for one of these things, haha!

Re: Hardware experts, are we ever going to see replica 3D GPU's?