I'm an artist specifically focussing on glitches and errors and I'm currently trying to find a way to create images like this that were made by taking screenshots of what is currently in vram. Is it possible to do this in Linux/Ubuntu? If so, how?
I'm an artist specifically focussing on glitches and errors and I'm currently trying to find a way to create images like this that were made by taking screenshots of what is currently in vram. Is it possible to do this in Linux/Ubuntu? If so, how?
Dumping the VRAM content should not work from userland. It would need support from the driver in the kernel. If you are lucky, your driver might contain triggers to dump the memory, but they may only be available if you compile certain debugging options.
I've noticed an interesting glitch on my machine that produces aesthetically pleasing glitch art results, though it is not as direct or useful as a raw VRAM capture.
I use gnome-mplayer - though any mplayer-derived software should do - with the vdpau hardware accelerated video output module for (relatively recent) nvidia graphics hardware. I had to get a vdpau-capable version of mplayer from a PPA with 10.04 but I think it works out-of-the-box in 10.10.
The glitch occurs when you enter or leave fullscreen with a video paused. The window will be full of wonderful garbage, random bits of whatever was recently in video memory recently: video, bits of UI, 3D graphics if you were playing a game. It gets dumped into the window whatever size it is.
Once you start playing the video, it goes away because the window's contents are continually refreshed. But I've taken several screenshots of when it does something particularly interesting.
I'm no expert on graphics programming, but it seems like it would be pretty trivial to write an OpenGL program that (mis)uses pointers to get a bunch of junk from video ram and then render it out to screen or an image on disk.
If you'd like, I can dig up some examples I captured when I get home.