A lot of the problems getting smooth, quality, TV output from the Trident have revolved around the fact that television timing is interlaced. It looks as though no-one has really tried to use the Trident Xv driver in an interlaced mode.
The problems I’ve had are:
Initially all video was stretched out vertically to twice the correct height. After some digging I found a register bit named
MC Interlace Display, that fixed that.
To actually get the lines from the odd field spaced evenly from the lines of the even fields, I had to fiddle, trial-and-error style, with the values in an
Interlaced Vsync Adjust Value register.
Full screen video worked OK, but video in smaller windows than the full screen would be weirdly offset from the top of the window, and lopped off at the bottom of the window. I’ve just traced that to the fact the the controller takes video overlay window positions in terms of the number of lines after the vertical sync position; since we are interlaced, these positions needed to be halved.
The remaining problem I have is that randomly at startup of the X server, overlay video for the remainder of that X session will bounce up and down, by one line, at the frame rate (25Hz). This is fairly disturbing to watch. I haven’t been able to determine what the random factor is; uninitialized variable, timing, who knows. The one good thing is that I’ve found that if I set the
Anti-Flicker Removal bits to shift odd fields up, the problem can be counteracted. Since I also don’t know how to test for the condition programmatically, I can’t set those bits automatically yet.