diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-22 21:18:05 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-28 11:44:59 +1100 |
commit | b37e6bc8c119289aca8740dd5e3b60d72f9d6b40 (patch) | |
tree | 7ee9d491811c950943f0fc068d2e2b460ff05c6d /firmware/drivers/lcd-16bit-common.c | |
parent | 15c69b8bafc3e89e1a825b5bbefef4a97f0001b1 (diff) | |
download | rockbox-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.c | 18 |
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 ***/ |
38 | fb_data lcd_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH] | 38 | fb_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 | 40 | fb_data *lcd_framebuffer = &lcd_static_framebuffer[0][0]; | |
41 | 41 | ||
42 | static fb_data* lcd_backdrop = NULL; | 42 | static fb_data* lcd_backdrop = NULL; |
43 | static long lcd_backdrop_offset IDATA_ATTR = 0; | 43 | static 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 | ||