From: Martin B. <Mar...@se...> - 2005-01-29 10:49:38
|
Hello, I am complete newbie to this mailing list and to programming of modern graphic HW, but have the following problem: I want to grab complete X window screen (eg. root window) reasonably fast. When I use standard way by XGetImage, I am able to grab about 1.5 screen (1280x1024x32) per second having CPU usage 100%. (Athlon XP 1.8 GHz, ATI Radeon QD (AGP), X.Org 6.8.1, on P4 1.7GHz, integrated SiS graphic chip it was about 2.5 grabs per sec.). It is too slow, so I mmap-ed /dev/mem and memcpy linear framebuffer. To my surprise a got only slightly better results. I am using kernel 2.6.9, on ATI DRI was enabled, on SiS it was not. I suppose such simple operation can be done pretty fast, but don't know how. Could somebody with better understanding of graphic HW and Linux, point me where to look to learn more about it? Or even better, give me some idea how to do it simply and fast? Is the DRI right place to look at? I was googling about it for a while but didn't got much. Some documentation is at http://dri.freedesktop.org/wiki/Documentation but nothing like detailed description or even tutorial. What I actualy need is not high rate of grabbing - 4 times per second would be ok, if the CPU usage remains low. The program has not to be portable between various graphic cards. It would be nice if it is just a normal user-space program, not a kernel or X Server module. Just last question - would the more up to date graphic card make a big difference in speed of naive XGetImage/memcpy approach? TIA Martin |