AMD HD3D + shutterglasses on a 3D Vision monitor

(formerly: DVI Sync Extractor)

Similar projects worth following
This is a sub-project of trying to build a universal DIY 3D glasses kit using active shutterglasses.

There are plenty of 3rd party shutter glasses for sale that will synchronize on the VSYNC of a VGA connection, but many fast monitors/projectors that do frame-sequential 3D rely on a DVI connection.

That is trickier: DVI doesn't have an "easy" VSYNC signal to extract, and instead encodes VSYNC into a high-speed digital TMDS data stream.

Luckily, there are many chips on the market that deserialize DVI data into parallel pixel data - including the VSYNC.

The goal of this project is to build a little pass-through adapter that can sit on the output of a graphics card, and extract the VSYNC from the DVI signal. A circuit for VGA may be added as well to make it more universal.

The application for 3D glasses can mean becoming somewhat independent of all the different stereoscopic shutterglass 3D solutions out there.

There are a whole bunch of different 3D active shutterglass solutions out there. They typically use VGA connections to sync on, or sync internally with a graphics card driver.

The sync signal reaches the glasses via a special connector on some graphics cards, or an IR transmitter in the display or in a USB dongle (like NVidia 3D Vision).

Lately, the use of special displays or proprietary dongles is the most common since VGA is not used for most 3D display solutions anymore. 

With this project, all you need on the software side is a driver (this could be a 3rd party one like Tridef/IZ3D or a proprietary one like NVidia 3D Vision) that can drive a suitably fast LCD/CRT/projector/whatever in frame-sequential mode. Then, using this sync extractor and a suitable set of shutter glasses, you can handle everything else yourself.

  • 1 × Texas Instruments TFP401A DVI Deserializer - typically used in display panels
  • 1 × Analog Devices ADV3003 DVI Equalizer/Buffer - used here to transform impedance

  • HD3D Overlay done

    SanderV03/16/2015 at 19:31 2 comments

    So the project has moved into a very different direction... but it is a successful one!

    There I am working on a driver that intercepts Direct3D 9 calls from applications/games, and detects when they go into AMD's HD3D display mode. If so, it will render a small shutter mark over the application window in the corner of the screen.

    The first version is already working. I have tested this with various games and Tridef's 3D driver, including their media player.

    This can be used to hook up a phototransistor and get sync to the refresh times of the monitor, which can then be used to trigger shutterglasses on. I had a circuit lying around for this for a long time (a small box that allows the user to program a certain offset and eye opening time from a sync signal), which worked great with this.

    This means I am happily gaming in Stereo 3D using an AMD card, NVidia 3D vision screen, and no proprietary glasses system but my own. It's satisfying!

    In the time ahead I will be aiming to professionalize this driver, add DirectX 10/11 support (maybe 64-bit too), etc.

  • Another idea

    SanderV03/10/2015 at 18:11 0 comments

    Opening up the monitor to find a VSync is arguably a kind of lame solution - not very generic so nobody else would have any point reading this anymore. Not to mention I might kill my monitor in the process! There may be another way.

    My personal goal for this project was to have 3D movies and gaming on my Samsung Nvidia 3D Vision-compatible screen, hooked up to my AMD graphics-powered rig, with some custom shutterglasses. I have succeeded so far in using AMD's HD3D feature to drive the screen in "3D mode" (a special low-ghosting 120Hz setting) - if you are interested to know how, let me know!

    3D gaming is often done using a third-party driver that hooks into the game's render queue and adds a second camera (I use Tridef Iginition). When IZ3D was still around, I used to use their "marked shutter mode", which displays a small square in a corner of the screen. During left-eye frames, the square is black and during right-eye frames the square is white. It allowed me to hook up a phototransistor on this corner to measure the sync straight from the source. Worked great for what it was worth, but the option has disappeared for me now because of using the HD3D mode and IZ3D's quitting business.

    So why not re-create this marked shutter mode, allowing me to dig up my old phototransistor setup? I will have a look into AMD HD3D's SDK and see if I can create an app which writes this alternating square to the HD3D quad buffer, overlaying any game Tridef is playing. If it works, it might help out others too!

    Stay tuned :)

  • Different direction

    SanderV03/09/2015 at 11:39 0 comments

    Unfortunately, aforementioned PCB's have not produced any meaningful result. The fact that the PCB's only consist of a handful of parts, which have everything integrated inside, means I can't really do anything to fix it - most likely there are high-frequency signal problems, which are though to fix without very (very) expensive scopes!

    So I have decided to give up on this direction, and try something new.

    It will no longer be a "DVI sync extractor", but a "monitor sync extractor"; in other words, I will try to look inside my monitor and find a V-Sync signal somewhere on the monitor's PCB! That means this project failed as a generic project, but hardcore hackers might still find it useful as an example for doing the same to their own monitors.

    Stay tuned! :)

  • Trouble

    SanderV12/01/2014 at 13:05 3 comments

    The PCBs came in and I tried hooking them up, but have not succeeded in making them work properly. The Vsync output seems to just switch every couple of seconds, and the signal to the monitor gets visibly degraded.

    Hopefully I can find what's wrong.

  • PCB designed and ordered

    SanderV08/01/2014 at 15:17 0 comments

    I did a PCB design for a small extractor board and ordered. Also the components have arrived already - I just have to wait on the boards to arrive to actually start trying cable configurations out.

    Having played around in Simetrix with transmission lines and stubs, I'm now convinced that it is crucial to keep the stub lines to the extractor very, very short. I am not a great PCB designer and all I managed is to keep the DVI tracks to the chip under a centimeter (but probably they have wrong characteristic impedances). This will be hit or miss without any way to measure the signals directly... Fingers crossed!

    If it doesn't work I can always still opt for a 50/50 power splitter solution that limits the main cable's length, or a complete DVI repeater (expensive).

    When the boards do arrive and have been tested, I will publish the PCB design here also.

  • ESD Protection

    SanderV06/25/2014 at 00:15 0 comments

    Just noticed the ADV3003, where I could do a trick to disable 50 Ohm termination, also has its ESD protection on the same line. So disabling the termination would mean disabling the ESD as well.

    Considering adding a TI TPD12S520 ESD chip as well to have external ESD instead.

  • Impedance termination

    SanderV06/23/2014 at 20:50 0 comments

    One of the challenges is that DVI is a 50 Ohm terminated signal that is quite sensitive to reflections and such: it is typically not a good idea to try to split or branch a DVI cable to two receivers because they will get half the signal power each.

    I'm trying to design the "VSYNC sniffer" to be high-impadance input, which is normally a bad move for DVI as it causes reflections. But, if we put this sniffer right at the source (the graphics card), reflections shouldn't be much of a problem. That way, the signal going to the monitor/beamer shouldn't be degraded much by adding this sniffer in.

  • Component Selection

    SanderV06/23/2014 at 20:45 0 comments

    We want a high-impedance (un-terminated) receiver, which is hard to find. All chips I've found that are designed specifically for DVI have internal termination resistors that can't be turned off during operation.

    The Analog Devices ADV3003 seems to come to the rescue though. It's a DVI equalizer/buffer that passes through the raw DVI signals with some quality improvement. Like the others, it has internal 50 Ohm termination resistors - however these are connected to an independent power supply pin. So I should be able to just leave that supply unconnected, making this device act like an impedance transformer of sorts.

    For the actual deserializing of the data stream I've chosen the Texas Instruments TFP401A chip. It's nice and simple - unlike some others it doesn't need to be controlled by a I2C bus but simply works standalone. It has a VSYNC output.

    The next step is to combine these two parts and the necessary supplies and output buffering into a neat little PCB design.

View all 8 project logs

Enjoy this project?



SanderV wrote 06/24/2014 at 08:52 point
This project kind of flowed from an old one:

That used the IZ3D driver, which had a special mode to display a block of pixels in the corner of the screen that would change color (black/white) with the left/right eye images. Picked it up with a phototransistor and synced the glasses on that.

It worked quite well, but IZ3D since then has gone out of business, and the other main 3rd party drivers don't have the pixel feature... and it wasn't a very elegant solution!

  Are you sure? yes | no

SanderV wrote 06/24/2014 at 08:48 point
Hi Adam, thanks!

That would depend on the display, but I think most devices should work. Like you said, there can be any delay as long as it is consistent. This project would pair up with a little box that drives the glasses at some fixed delay to compensate.

CRT's use the DVI as they would use a VGA signal: the timings are directly translated to scan lines on the screen, so they would be fine.
Most LCD's I think would be fine too, although a standard LCD would probably not give a very nice 3D effect (you would get lots of crosstalk between left and right). But this should work well with a display that has a mode especially for 3D (like the ones designed for NVidia 3D Vision). I have a Samsung 2233RZ, which is what I aim to get this working on.
DLP beamers tend to be good at this stuff too, although it depends again on the model: I had a beamer that could do 85Hz, but for some reason skipped a frame once in a while... that lead to eyes switching.

  Are you sure? yes | no

Adam Fabio wrote 06/24/2014 at 06:06 point
Very Cool project SanderV! One question I have is how does delay imposed by the TV/Monitor's electronics impact the glasses? Is it consistent enough that it can be calibrated out?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates