Image Correction

Jas's latest homography is pretty good. It takes us from this:

To this:

I still need to implement mouse remapping support and make it read the homography out of a file. Currently, I have to recompile it to change the homography (I did only get it working 2 hours before checkoff). It is possible for me to pull Jas's entire OpenCV homography generation code into the plugin's startup code as well. These are all ideas for the coming week.



I've spent all of my lab time since discovering the bug mention in my last post trying to resolve it. I've tried all of the interesting Nvidia xorg.conf settings, all of the interesting settings from their config tool, several Xgl settings, and turning on Twinview. I haven't tried *permutations* of all these yet (ich), but I don't think it would help since I have observed no difference in Xgl's behavior. I am good at reproducing the bug, however.

Of course spending the last 30 hours troubleshooting it is time away from the plugin. I *need* to be able to run Compiz across all the video outputs for display correction to work as I've written it so far. Anything else would be a bit of an architecture shift.

Therefore, I'm suggesting we perhaps return the 9800 GTs I picked up and order a couple of these to run with one of Renau's cards.

It is a box that will split a single vga or dvi input into 3 dvi outputs. It does whatever hardware magic needs to happen to simple present one high-resolution screen to the PC. With two of them, we could drive 6 projectors from one videocard using one framebuffer which avoids the problem I'm having now.

The downside is the price: $600. On the other hand, we are doing OK on our budget right? And I did drop $120 x 3 on videocards this weekend so it isn't too extreme. Also, the whole setup tops out at 6 projectors I think.. unless we can daisy chain them..

The upside is that display correction will work and it liberates our software stack a lot. Using one card, there is no longer a dependency on Xinerama and therefore on Xgl and therefore on an older X server. Not using Xgl yields better performances, as does not using Xinerama -- graphics data does not have to be copied between cards. Not having to run an older X server lets us run with newer distros, and even better, with MPX.

Obviously it is a bit late now to realize all of those improvements. Just getting display correction working will be enough for now.

I remember talking about the triplehead2go boxes near the beginning of the quarter, and we did balk at them being pricy. I think more of what happened though is that I became focused on a certain approach because of the cards Renau gave us initially, and I did not realize when I stopped using the cards that the design could change in this way. There is probably some Ideo design pattern I should have been remembering in order to avoid that trap.



I spent the entire night trying to debug a showstopper bug I came across.

I put all those videocards into our computer, and noticed that windows would smear or draw incorrectly when moved across GPUs. I don't remember noticing it before when I had set up the GX2s back in the corner, but I can't recall having observed it being *correct* in these cases either. Although using it more while debugging, it is super annoying so I think I would have noticed.

I posted about it on Nvidia's forums, and linked them a video (had to host on my own because Google doesn't want me to put files over 11mb in the locker). I hope someone has a solution. If not, then the display side is kind of screwed.

It seems possible that it could be a bug in Xgl, but again, I am surprised I did not notice sooner. When I run a window manager on the display Xgl draws into, I can kind of manipulate the glitch by causing Xgl to redraw sometimes myself. That would kind of imply it is a problem with Xgl and/or (maybe) Damage, but the fact that it primarily occurs across gpus points back to Nvidia.

It figures something like this would take me down a notch right after I get a proof of concept going for the display correction.