From: Nathan K. <nat...@gm...> - 2006-06-29 20:20:34
|
Hi James, I can mmap it, but I found that using file operations to access it was about 2-3 times faster than accessing it through a mmap'ed buffer. Is it possible I'm doing that wrong? Here's my stuff for that: fbfd = open("/dev/fb0", O_RDONLY); fbp = (unsigned char *)mmap(0, screensize, PROT_READ, MAP_SHARED, fbfd, 0); Then I read from fbp with memcpy and memcmp. If I'm going against some long upheld programming convention feel free to throw things at me. Thanks, Nathan > > On Wed, 2006-06-28 at 18:08 -0600, Nathan King wrote: > > What's the preferred way to read a block of pixels from the screen? > > I'm developing something like a remote desktop app, and I haven't > > found a whole lot of documentation on this. Right now I'm opening > > the /dev/fb0 device and accessing it by means of lseek/read, file > > descriptor style. This seems reasonably fast but I feel there must be > > a better way. > > Can you mmap /dev/fb0? > > Regards, > James. |
From: Antonino A. D. <ad...@gm...> - 2006-06-29 20:48:33
|
Nathan King wrote: > Hi James, > > I can mmap it, but I found that using file operations to access it was > about 2-3 times faster than accessing it through a mmap'ed buffer. Is > it possible I'm doing that wrong? Here's my stuff for that: > Using the file accessors are actually more portable than using mmap. And if it's faster, then that's better. > fbfd = open("/dev/fb0", O_RDONLY); > fbp = (unsigned char *)mmap(0, screensize, PROT_READ, MAP_SHARED, fbfd, 0); > > Then I read from fbp with memcpy and memcmp. If I'm going against some > long upheld programming convention feel free to throw things at me. Looks okay. Reading from video RAM on PCI cards will always be slower than writes. > > Thanks, > Nathan > > >> On Wed, 2006-06-28 at 18:08 -0600, Nathan King wrote: >>> What's the preferred way to read a block of pixels from the screen? >>> I'm developing something like a remote desktop app, and I haven't >>> found a whole lot of documentation on this. Right now I'm opening >>> the /dev/fb0 device and accessing it by means of lseek/read, file >>> descriptor style. This seems reasonably fast but I feel there must be >>> a better way. Your only choices for the standard kernel are mmap and read/write. But if you can use an acceleration library (DirectFB www.directfb.org), that would be the best. Tony |