Ignore:
Timestamp:
02/25/14 22:46:21 (10 years ago)
Author:
obi
Message:

mipsel optimize framebuffer and enable double buffering

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/mipselport.h

    r26464 r26471  
    1515int g_manual_blit = 0;
    1616struct fb_fix_screeninfo fix_screeninfo;
     17struct fb_var_screeninfo var_screeninfo;
    1718
    1819int setmixer(struct dvbdev* node, int left, int right)
     
    6364        if(newnode != NULL)
    6465                newnode->varfbsize = 1920 * 1080 * newnode->colbytes;
     66//              newnode->varfbsize = 1920 * 1080 * (newnode->colbytes * 8);
     67
    6568}
    6669
     
    8184        else
    8285                g_manual_blit = 0;
     86}
     87
     88void blit()
     89{
     90        if (g_manual_blit == 1) {
     91                if (ioctl(fb->fd, FBIO_BLIT) < 0)
     92                        perror("FBIO_BLIT");
     93        }
    8394}
    8495
     
    117128        var_screeninfo.yoffset = 0;
    118129        var_screeninfo.bits_per_pixel = fb->colbytes * 8;
    119 
     130       
    120131        switch(fb->colbytes)
    121132        {
     
    142153        }
    143154       
     155        debug(100, "FB: line_length %d", fix_screeninfo.line_length);
     156        debug(100, "FB: var_screeninfo.xres %d", var_screeninfo.xres);
     157        debug(100, "FB: var_screeninfo.yres %d", var_screeninfo.yres);
     158        debug(100, "FB: var_screeninfo.xres_virt %d", var_screeninfo.xres_virtual);
     159        debug(100, "FB: var_screeninfo.yres_virt %d", var_screeninfo.yres_virtual);
     160        debug(100, "FB: var_screeninfo.xoffset %d", var_screeninfo.xoffset);
     161        debug(100, "FB: var_screeninfo.yoffset %d", var_screeninfo.yoffset);
     162        debug(100, "FB: var_screeninfo.bits_per_pixel %d", var_screeninfo.bits_per_pixel);
     163        debug(100, "FB: var_screeninfo.grayscale %d", var_screeninfo.grayscale);
    144164
    145165        if(ioctl(fb->fd, FBIOPUT_VSCREENINFO, &var_screeninfo) < 0)
     
    150170                        perr("FBIOPUT_VSCREENINFO");
    151171                }
    152         }
    153 
    154         if (g_manual_blit == 1) {
    155                 if (ioctl(fb->fd, FBIO_BLIT) < 0)
    156                         perr("FBIO_BLIT");
    157         }
    158 
     172                debug(100, "FB: double buffering not available");
     173        }
     174        else
     175        {
     176                debug(100, "FB: double buffering available!");
     177        }
     178
     179        ioctl(fb->fd, FBIOGET_VSCREENINFO, &var_screeninfo);
     180//      if ((var_screeninfo.xres!=fb->width) && (var_screeninfo.yres!=fb->height) && (var_screeninfo.bits_per_pixel!=fb->colbytes))
     181//      {
     182                debug(100, "SetMode failed: wanted: %dx%dx%d, got %dx%dx%d",
     183                        fb->width, fb->height, fb->colbytes,
     184                        var_screeninfo.xres, var_screeninfo.yres, var_screeninfo.bits_per_pixel);
     185//      }
     186/*     
     187        int xRes, yRes, stride, bpp;
     188       
     189        xRes=var_screeninfo.xres;
     190        yRes=var_screeninfo.yres;
     191        bpp=var_screeninfo.bits_per_pixel;
     192//      fb_fix_screeninfo fix;
     193//      struct fb_fix_screeninfo fix_screeninfo;
     194        if (ioctl(fb->fd, FBIOGET_FSCREENINFO, &fix_screeninfo)<0)
     195        {
     196                perror("FBIOGET_FSCREENINFO");
     197                printf("fb failed\n");
     198        }
     199        stride=fix_screeninfo.line_length;
     200        memset(lfb, 0, stride*yRes);
     201*/
     202        blit();
     203       
    159204/*
    160205        int i = 0, max = 1, wstep = 0, hstep = 0, ret = 0;
Note: See TracChangeset for help on using the changeset viewer.