summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/grey_scroll.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2008-01-09 23:48:26 +0000
committerJens Arnold <amiconn@rockbox.org>2008-01-09 23:48:26 +0000
commit6a56c14e17f6ba113ec0d4d40e75bffd61b293cc (patch)
tree64bcdd8d5d4afa2ca6dd1aa0976cdafa9a346b26 /apps/plugins/lib/grey_scroll.c
parent75380fd27d175bab1818ef35a9100e74fc6a461b (diff)
downloadrockbox-6a56c14e17f6ba113ec0d4d40e75bffd61b293cc.zip
rockbox-6a56c14e17f6ba113ec0d4d40e75bffd61b293cc.tar.gz
rockbox-6a56c14e17f6ba113ec0d4d40e75bffd61b293cc.tar.bz2
rockbox-6a56c14e17f6ba113ec0d4d40e75bffd61b293cc.tar.xz
Greyscale library: Changed the internal data format once more (separated pixel values and phases), allowing for further optimisation of drawing, scrolling etc. * Optimised grey phase blitting in the core reduces CPU load on all architectures, most significantly on coldfire. Previous version was too slow to keep up at 45MHz, leading to unwanted graininess (update frequency was halved). Also fixed screendump on 2bpp targets with vertical pixel packing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16043 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib/grey_scroll.c')
-rw-r--r--apps/plugins/lib/grey_scroll.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/apps/plugins/lib/grey_scroll.c b/apps/plugins/lib/grey_scroll.c
index 80496e7..4a18d7d 100644
--- a/apps/plugins/lib/grey_scroll.c
+++ b/apps/plugins/lib/grey_scroll.c
@@ -169,7 +169,7 @@ void grey_ub_scroll_left(int count)
idx = _GREY_MULUQ(_grey_info.width, y & ~3) + (~y & 3);
#endif
#endif /* LCD_PIXELFORMAT */
- dst = &_grey_info.data[idx].value;
+ dst = _grey_info.values + idx;
src = dst + count * _GREY_X_ADVANCE;
end = dst + _grey_info.width * _GREY_X_ADVANCE;
@@ -213,7 +213,7 @@ void grey_ub_scroll_right(int count)
idx = _GREY_MULUQ(_grey_info.width, y & ~3) + (~y & 3);
#endif
#endif /* LCD_PIXELFORMAT */
- start = &_grey_info.data[idx].value;
+ start = _grey_info.values + idx;
dst = start + _grey_info.width * _GREY_X_ADVANCE;
src = dst - count * _GREY_X_ADVANCE;
@@ -259,8 +259,8 @@ void grey_ub_scroll_up(int count)
is = _GREY_MULUQ(_grey_info.width, ys & ~3) + (~ys & 3);
#endif
#endif /* LCD_PIXELFORMAT */
- dst = &_grey_info.data[id].value;
- src = &_grey_info.data[is].value;
+ dst = _grey_info.values + id;
+ src = _grey_info.values + is;
dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
do
@@ -282,7 +282,7 @@ void grey_ub_scroll_up(int count)
id = _GREY_MULUQ(_grey_info.width, yd & ~3) + (~yd & 3);
#endif
#endif /* LCD_PIXELFORMAT */
- dst = &_grey_info.data[id].value;
+ dst = _grey_info.values + id;
dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
do
@@ -320,8 +320,8 @@ void grey_ub_scroll_down(int count)
is = _GREY_MULUQ(_grey_info.width, ys & ~3) + (~ys & 3);
#endif
#endif /* LCD_PIXELFORMAT */
- dst = &_grey_info.data[id].value;
- src = &_grey_info.data[is].value;
+ dst = _grey_info.values + id;
+ src = _grey_info.values + is;
dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
do
@@ -343,7 +343,7 @@ void grey_ub_scroll_down(int count)
id = _GREY_MULUQ(_grey_info.width, yd & ~3) + (~yd & 3);
#endif
#endif /* LCD_PIXELFORMAT */
- dst = &_grey_info.data[id].value;
+ dst = _grey_info.values + id;
dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
do