VOGONS


First post, by sdz

User metadata
Rank Member
Rank
Member

A bit of a weird question, but I'm trying to get 1920x1080p DVI output out of the VSA 100.

If a resolution above 1600x1200 is set, the image looks weird. At first I thought it's a limitation of the TMDS encoder used on these cards, SIL164, which states UXGA as the maximum resolution.
I replaced the SIL164 with the "PIN COMPATIBLE" TFP410 endoder (which does 1920x1080p just fine), and the image looks exactly the same. After that I checked the actual video output, and every time the horizontal resolution is greated than 1600 pixels, it just halves the output.

example:
if 1920x1080p is set, it internally renders at 1920x1080, the VGA outputs 1920x1080, the DVI outputs 960x1080.

Setting a resolution that results in a bandwidth lower than 1600x1200, but has more than 1600 horizontal resolution, results in the same behaviour, the horizontal output is halved.

If the Napalm databook is to be believed, the VSA 100 has a 12bit DDR 100MHz data bus to the TMDS encoder, which should be enough for 1920x1080p.

I also spent a couple of hours looking at the driver source code, but could not find anything relevant as of yet.

The only possible relevant thing I've found so far is this:

S1.png
Filename
S1.png
File size
58.97 KiB
Views
226 views
File license
Public domain

Maybe this scaling bit is related.

Any clues/hints?

Reply 1 of 2, by Dolenc

User metadata
Rank Member
Rank
Member

Their timings are off for 1920x1080 and digital out.

Their timings table is read from the registry.
"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Display\0000\TIMINGS\"

For 1080p@60hz, one that works, is:
@ = "2048,1960,1992,1232,1141,1144,4,151390000,6000,8,30668"

Not sure if its "ultimatly" correct, but it can run 1080p@84hz fine.

Thats how they calculate it

1: Horizontal Whole line (in pixels)
2: H Visible area + H Front porch (in pixels)
3: H Visible area + H Front porch + H Sync pulse (in pixels)
4: Vertical Whole frame (in lines)
5: V Visible area + V Front porch (in lines)
6: V Visible area + V Front porch + V Sync pulse (in lines)
7: Flags (+1: scan line double, +2 interlace, +4 negative hsync, +8 negative vsync)
8: Pixel freq. (*1000000)
9: Screen refresh rate (*100) (field not actually used?)
10: Char Width (Always 8?)
11: Checksum (all proceeding numbers added together, but ignoring last 4 zeros of pixel frequency).

You can find some more here

Reply 2 of 2, by sdz

User metadata
Rank Member
Rank
Member

@Dolenc

Bless you!

I first changed the timings from [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\3dfxvs\Device0\TIMINGS\1920,1080\60Hz] to the ones you provided, and it behaved the same, the output was 960x1080p.
After I changed the timings for DEVICE1/2/3, and it works!

20240129_202302(1).jpg
Filename
20240129_202302(1).jpg
File size
746.01 KiB
Views
169 views
File license
Public domain

Edit:
This is how it looked before:

20240129_204207.jpg
Filename
20240129_204207.jpg
File size
1.14 MiB
Views
154 views
File license
Public domain