DVI will involve an I2C handshake, and then reading the R/G/B data lines whenever the clock line transitions to the right state.
Reading further into this, it's going to be a little tough. The pixel clock can run anywhere from 25-165MHz, and every clock cycle ten bits are transmitted through each of the three channels using low-voltage differential signaling (LVDS). Eight of these bits are meaningful, and the other two are not. At 25MHz, which is presumably a low resolution like 640x480, you would have to read bits at 250MHz x 3 lines. This pushes the boundary of my knowledge, but it seems to me you'd looking at a PLL driven by the pixel clock signal that tells the DMA to read the ten bits at the right frequency (which is 10x that clock.)
If you look at page 3 of
this datasheet, you can see some termination resistors and op-amps are required. Adafruit sells a breakout of that chip (TI TFP401) but the output is a 40-pin ribbon connector designed for driving LCD panels, and it doesn't seem like any provision is made anywhere on the board to pull the raw RGB data.
I think at a minimum you'd need termination resistors and op-amps. As to whether the MCU's DMA controller can drive three channels at that speed off a PLL (which would itself have to be driven by the clock line), I don't know. If that
is possible, you would have the ability to put something together without much external to the MCU.
It might be necessary to implement the PLL and three shift registers (the four blocks reading Latch, Latch, Latch, and PLL, just inside the left boundary on that page) with external chips, and then pump the output into three DMA channels.
Or, you can buy that chip on a breakout, and figure out how to pull the RGB channels off it. With the Adafruit breakout I guess you'd have to get a 40-pin ribbon connector and then figure out how to pull the signals off. I don't know if they would be in some funny flat panel-specific format, or if they would be literal RGB bitfields.
Someone with more knowledge of this stuff is welcome to chime in. To me it's an interesting problem, but I've never attempted anything of the sort.
Edit:
https://cdn-learn.adafruit.com/asse...al/adafruit_products_tfp401sch.png?1414183039
The Adafruit breakout gives you parallel RGB out on that 40-pin cable, so if you can figure out a way to get that into the Teensy fast enough (looks like three 8-bit shift registers to three DMA channels, or a 24-bit shift register to one DMA channel) you'd be set. Depending on resolution and framerate, three shift registers to three DMA channels might be necessary, because the transfer frequency will be quite high.
Edit 2: The output of this board is mentioned as TTL, meaning 5V, so if using with a 3.3V board you will need level shifters.