Thread (6 messages) flat view 6 messages, 4 authors, 2008-07-04

Enabling Hardware acceleration in existing framebuffer driver

From: Keith Williams <hidden>
Date: 2008-07-04 15:56:28

Hi, all,

I have an embedded board with a s1d13506 epson display chip.  There is a 
s1d13xxxfb driver that was written for the '806 that generally works 
well for the '506.

The '506 does have some 2D hardware acceleration capabilities.  Last 
night I wrote a fillrect routine as an initial test of how much 
performance improvement I could potentially see from enabling acceleration.

However, neither DirectFB nor fbset is picking up on the enabled 
acceleration.  I'm not sure if there is something more that I need to do.

Below are portions of the driver that I modified:

        info->par = default_par;
        info->fbops = &s1d13xxxfb_fbops;
        info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | 
FBINFO_HWACCEL_FILLRECT;

--The above should set the fb_info flags to show that fillrect 
acceleration is available


void s1d13xxxfb_fillrect (struct fb_info *p, const struct fb_fillrect *rect)
{
        u32 destination_address;
        struct s1d13xxxfb_par *par = p->par;

        if (p->state != FBINFO_STATE_RUNNING)
                return;

        destination_address = (((rect->dy)*480*2)+(rect->dx)*2);

                s1d13xxxfb_writereg(par, S1DREG_BBLT_DST_START0, 
(destination_address & 0xff));
                s1d13xxxfb_writereg(par, S1DREG_BBLT_DST_START1, 
((destination_address >> 8) & 0xff));
                s1d13xxxfb_writereg(par, S1DREG_BBLT_DST_START2, 
((destination_address >> 16) & 0xff));

/// SNIP ///

--This is the beginning of the fillrect acceleration routine (right now 
just hardcoded for my particular set-up)



/* framebuffer information structures */

static struct fb_ops s1d13xxxfb_fbops = {
        .owner          = THIS_MODULE,
        .fb_set_par     = s1d13xxxfb_set_par,
        .fb_setcolreg   = s1d13xxxfb_setcolreg,
        .fb_blank       = s1d13xxxfb_blank,

        .fb_pan_display = s1d13xxxfb_pan_display,

        /* to be replaced by any acceleration we can */
        .fb_fillrect    = s1d13xxxfb_fillrect,
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
};

--This is I've added the s1d13xxxfb_fillrect to the fb_ops structure.

Is there anything else that I need to do?

Thanks for any insight.

Keith



-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help