summaryrefslogtreecommitdiff
path: root/firmware/drivers/lcd-16bit-common.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2012-02-22 21:18:05 +1100
committerJonathan Gordon <rockbox@jdgordon.info>2012-02-28 11:44:59 +1100
commitb37e6bc8c119289aca8740dd5e3b60d72f9d6b40 (patch)
tree7ee9d491811c950943f0fc068d2e2b460ff05c6d /firmware/drivers/lcd-16bit-common.c
parent15c69b8bafc3e89e1a825b5bbefef4a97f0001b1 (diff)
downloadrockbox-b37e6bc8c119289aca8740dd5e3b60d72f9d6b40.tar.gz
rockbox-b37e6bc8c119289aca8740dd5e3b60d72f9d6b40.zip
lcd drivers: Convert lcd_[remote_]framebuffer to a pointer
Change all lcd drivers to using a pointer to the static framebuffer instead of directly accessing the static array. This will let us later do fun things like dynamic framebuffer sizes (RaaA) or ability to use different buffers for different layers (dynamic skin backdrops!) Change-Id: I0a4d58a9d7b55e6c932131b929e5d4c9f9414b06
Diffstat (limited to 'firmware/drivers/lcd-16bit-common.c')
-rw-r--r--firmware/drivers/lcd-16bit-common.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/firmware/drivers/lcd-16bit-common.c b/firmware/drivers/lcd-16bit-common.c
index 1a845675ad..c9e88b2137 100644
--- a/firmware/drivers/lcd-16bit-common.c
+++ b/firmware/drivers/lcd-16bit-common.c
@@ -35,9 +35,9 @@ enum fill_opt {
35}; 35};
36 36
37/*** globals ***/ 37/*** globals ***/
38fb_data lcd_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH] 38fb_data lcd_static_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH]
39 IRAM_LCDFRAMEBUFFER CACHEALIGN_AT_LEAST_ATTR(16); 39 IRAM_LCDFRAMEBUFFER CACHEALIGN_AT_LEAST_ATTR(16);
40 40fb_data *lcd_framebuffer = &lcd_static_framebuffer[0][0];
41 41
42static fb_data* lcd_backdrop = NULL; 42static fb_data* lcd_backdrop = NULL;
43static long lcd_backdrop_offset IDATA_ATTR = 0; 43static long lcd_backdrop_offset IDATA_ATTR = 0;
@@ -234,7 +234,7 @@ void lcd_set_backdrop(fb_data* backdrop)
234 lcd_backdrop = backdrop; 234 lcd_backdrop = backdrop;
235 if (backdrop) 235 if (backdrop)
236 { 236 {
237 lcd_backdrop_offset = (long)backdrop - (long)&lcd_framebuffer[0][0]; 237 lcd_backdrop_offset = (long)backdrop - (long)lcd_framebuffer;
238 lcd_fastpixelfuncs = lcd_fastpixelfuncs_backdrop; 238 lcd_fastpixelfuncs = lcd_fastpixelfuncs_backdrop;
239 } 239 }
240 else 240 else
@@ -271,7 +271,7 @@ void lcd_drawpixel(int x, int y)
271 && ((unsigned)y < (unsigned)LCD_HEIGHT) 271 && ((unsigned)y < (unsigned)LCD_HEIGHT)
272#endif 272#endif
273 ) 273 )
274 lcd_fastpixelfuncs[current_vp->drawmode](LCDADDR(current_vp->x+x, current_vp->y+y)); 274 lcd_fastpixelfuncs[current_vp->drawmode](FBADDR(current_vp->x+x, current_vp->y+y));
275} 275}
276 276
277/* Draw a line */ 277/* Draw a line */
@@ -346,7 +346,7 @@ void lcd_drawline(int x1, int y1, int x2, int y2)
346 && ((unsigned)y < (unsigned)LCD_HEIGHT) 346 && ((unsigned)y < (unsigned)LCD_HEIGHT)
347#endif 347#endif
348 ) 348 )
349 pfunc(LCDADDR(x + current_vp->x, y + current_vp->y)); 349 pfunc(FBADDR(x + current_vp->x, y + current_vp->y));
350 350
351 if (d < 0) 351 if (d < 0)
352 { 352 {
@@ -459,7 +459,7 @@ void ICODE_ATTR lcd_mono_bitmap_part(const unsigned char *src, int src_x,
459 src += stride * (src_y >> 3) + src_x; /* move starting point */ 459 src += stride * (src_y >> 3) + src_x; /* move starting point */
460 src_y &= 7; 460 src_y &= 7;
461 src_end = src + width; 461 src_end = src + width;
462 dst_col = LCDADDR(x, y); 462 dst_col = FBADDR(x, y);
463 463
464 464
465 if (drmode & DRMODE_INVERSEVID) 465 if (drmode & DRMODE_INVERSEVID)
@@ -747,7 +747,7 @@ static void ICODE_ATTR lcd_alpha_bitmap_part_mix(const fb_data* image,
747 dmask = ~dmask; 747 dmask = ~dmask;
748 } 748 }
749 749
750 dst_row = LCDADDR(x, y); 750 dst_row = FBADDR(x, y);
751 751
752 int col, row = height; 752 int col, row = height;
753 unsigned data, pixels; 753 unsigned data, pixels;
@@ -1020,10 +1020,10 @@ void lcd_blit_yuv(unsigned char * const src[3],
1020 linecounter = height >> 1; 1020 linecounter = height >> 1;
1021 1021
1022#if LCD_WIDTH >= LCD_HEIGHT 1022#if LCD_WIDTH >= LCD_HEIGHT
1023 dst = &lcd_framebuffer[y][x]; 1023 dst = FBADDR(x, y);
1024 row_end = dst + width; 1024 row_end = dst + width;
1025#else 1025#else
1026 dst = &lcd_framebuffer[x][LCD_WIDTH - y - 1]; 1026 dst = FBADDR(LCD_WIDTH - y - 1, x);
1027 row_end = dst + LCD_WIDTH * width; 1027 row_end = dst + LCD_WIDTH * width;
1028#endif 1028#endif
1029 1029