Skip to content

Instantly share code, notes, and snippets.

Created May 21, 2012 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/2762521 to your computer and use it in GitHub Desktop.
Save anonymous/2762521 to your computer and use it in GitHub Desktop.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define TRUE 1
#define FALSE 0
// Read framebuffer info into fix and var, return TRUE on success or FALSE on failure
int get_screen_info(int fb, struct fb_fix_screeninfo *fix, struct fb_var_screeninfo *var)
{
int ior = ioctl(fb, FBIOGET_FSCREENINFO, fix);
printf("being get info\n");
if (ior == -1)
{
fprintf(stderr, "ERROR: Failed to get fixed screen info: %s\n", strerror(errno));
return FALSE;
}
printf("got info\n");
ior = ioctl(fb, FBIOGET_VSCREENINFO, var);
if (ior == -1)
{
fprintf(stderr, "ERROR: Failed to get variable screen info: %s\n", strerror(errno));
return FALSE;
}
printf("framebuffer id: %s\n", fix->id);
printf(" mem start: %x (%d)\n", fix->smem_start, fix->smem_start);
printf(" mem length: %x (%d)\n", fix->smem_len, fix->smem_len);
printf(" mmio start: %x (%d)\n", fix->mmio_start, fix->mmio_start);
printf(" mmio length: %x (%d)\n", fix->mmio_len, fix->mmio_len);
printf(" line length: %d\n", fix->line_length);
printf(" type: %d\n", fix->type);
printf(" visual: %d\n", fix->visual);
printf(" accel: %d\n", fix->accel);
printf(" xres: %d\n", var->xres);
printf(" yres: %d\n", var->yres);
printf(" xres_virtual: %d\n", var->xres_virtual);
printf(" yres_virtual: %d\n", var->yres_virtual);
printf(" bits_pp: %d\n", var->bits_per_pixel);
//printf(" accel: %d\n", fix->accel);
//printf(" accel: %d\n", fix->accel);
//printf(" accel: %d\n", fix->accel);
}
int main(int argc, char **argv)
{
int fb = open("/dev/fb0", O_RDWR);
if (fb == -1)
{
fprintf(stderr, "Failed to open framebuffer\n");
exit(1);
}
// Read out screen info (for framebuffer size etc)
struct fb_fix_screeninfo fsi;
struct fb_var_screeninfo vsi;
if (!get_screen_info(fb, &fsi, &vsi))
exit(1);
char *fbmem = mmap(NULL, fsi.smem_len, PROT_READ|PROT_WRITE, MAP_SHARED, fb, 0);
if (!fbmem)
{
fprintf(stderr, "ERROR: Failed to mmap framebuffer\n");
exit(1);
}
int i;
int z = 0;
while (1)
{
z++;
//for (i = 0; i < fsi.smem_len; i++) fbmem[i] = z;
//for (i = 0; i < fsi.smem_len; i++) fbmem[i] = z*z;
//for (i = 0; i < fsi.smem_len; i++) fbmem[i] = i*z+(i%200);
//for (i = 0; i < fsi.smem_len; i++) fbmem[i] = i*i*z+(i%3000);
for (i = 0; i < fsi.smem_len; i++) fbmem[i] = i*i*z;
//for (i = 0; i < fsi.smem_len; i++) fbmem[i] = i+i*z;
//for (i = 0; i < fsi.smem_len; i++) fbmem[i] = i+i*z+z;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment