Mercurial > hg > Game > Cerium
diff Renderer/Engine/fb.h @ 895:b662e9dd26b0 draft
add alignment of classes in SPU
width and height are automatically set in frame buffer API
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 16 Jul 2010 17:23:49 +0900 |
parents | 3bc98f6d31ff |
children | f3530a4100bf |
line wrap: on
line diff
--- a/Renderer/Engine/fb.h Fri Jul 16 00:13:45 2010 +0900 +++ b/Renderer/Engine/fb.h Fri Jul 16 17:23:49 2010 +0900 @@ -14,8 +14,6 @@ #include <iostream> using namespace std; -#define DEVICE_NAME "/dev/fb0" -#define DIV_BYTE 8 /* function prototype */ void send_current_error_msg(const char *ptr); @@ -24,78 +22,15 @@ /* Don't put real function in a header... */ - -int get_fbdev_addr(void) -{ - int fd_framebuffer ; - struct fb_var_screeninfo vinfo; - struct fb_fix_screeninfo finfo; - long int screensize ; - //long int location; - char *fbptr ; - char tmp[DIV_BYTE*10]; - - //int x , y ; +typedef struct screen_info { int xres,yres,vbpp,line_len; - //unsigned short tcolor ; - - /* 読み書き用にファイルを開く */ - fd_framebuffer = open( DEVICE_NAME , O_RDWR); - if ( !fd_framebuffer ) { - send_current_error_msg("Framebuffer device open error !"); - exit(1); - } - send_current_information("The framebuffer device was opened !"); - - /* 固定スクリーン情報取得 */ - if ( ioctl( fd_framebuffer , FBIOGET_FSCREENINFO , &finfo ) ) { - send_current_error_msg("Fixed information not gotton !"); - exit(2); - } + char *fbptr; +} ScreenInfo , *ScreenInfoPtr; - /* 変動スクリーン情報取得 */ - if ( ioctl( fd_framebuffer , FBIOGET_VSCREENINFO , &vinfo ) ) { - send_current_error_msg("Variable information not gotton !"); - exit(3); - } - xres = vinfo.xres ; - yres = vinfo.yres ; - vbpp = vinfo.bits_per_pixel ; - line_len = finfo.line_length ; - sprintf( tmp , "%d(pixel)x%d(line), %dbpp(bits per pixel)",xres,yres,vbpp); - send_current_information( tmp ); - /* バイト単位でのスクリーンのサイズを計算 */ - screensize = xres * yres * vbpp / DIV_BYTE ; - - /* デバイスをメモリにマップする */ - fbptr = (char *)mmap(0,screensize,PROT_READ | PROT_WRITE,MAP_SHARED,fd_framebuffer,0); - if ( (int)fbptr == -1 ) { - send_current_error_msg("Don't get framebuffer device to memory !"); - exit(4); - } - send_current_information("The framebuffer device was mapped !"); - - printf("fb: 0x%x \n", (unsigned int)fbptr); - return (int)fbptr; - //munmap(fbptr,screensize); - //close(fd_framebuffer); - //return 0; -} - -void send_current_error_msg(const char *ptr) -{ - fprintf( stderr , "%s\n" , ptr ); -} - -void send_current_information(const char *ptr) -{ - fprintf( stdout , "%s\n" , ptr ); -} -#else /* !defined(__linux__) */ -int get_fbdev_addr(void) {return 0;} -#endif /* defined(__linux__) */ - -extern int get_fbdev_addr(void); #endif + +extern ScreenInfo get_fbdev_addr(void); + +#endif