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.tar.gz
rockbox-6a56c14e17f6ba113ec0d4d40e75bffd61b293cc.zip
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 80496e7706..4a18d7d29e 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)
169 idx = _GREY_MULUQ(_grey_info.width, y & ~3) + (~y & 3); 169 idx = _GREY_MULUQ(_grey_info.width, y & ~3) + (~y & 3);
170#endif 170#endif
171#endif /* LCD_PIXELFORMAT */ 171#endif /* LCD_PIXELFORMAT */
172 dst = &_grey_info.data[idx].value; 172 dst = _grey_info.values + idx;
173 src = dst + count * _GREY_X_ADVANCE; 173 src = dst + count * _GREY_X_ADVANCE;
174 end = dst + _grey_info.width * _GREY_X_ADVANCE; 174 end = dst + _grey_info.width * _GREY_X_ADVANCE;
175 175
@@ -213,7 +213,7 @@ void grey_ub_scroll_right(int count)
213 idx = _GREY_MULUQ(_grey_info.width, y & ~3) + (~y & 3); 213 idx = _GREY_MULUQ(_grey_info.width, y & ~3) + (~y & 3);
214#endif 214#endif
215#endif /* LCD_PIXELFORMAT */ 215#endif /* LCD_PIXELFORMAT */
216 start = &_grey_info.data[idx].value; 216 start = _grey_info.values + idx;
217 dst = start + _grey_info.width * _GREY_X_ADVANCE; 217 dst = start + _grey_info.width * _GREY_X_ADVANCE;
218 src = dst - count * _GREY_X_ADVANCE; 218 src = dst - count * _GREY_X_ADVANCE;
219 219
@@ -259,8 +259,8 @@ void grey_ub_scroll_up(int count)
259 is = _GREY_MULUQ(_grey_info.width, ys & ~3) + (~ys & 3); 259 is = _GREY_MULUQ(_grey_info.width, ys & ~3) + (~ys & 3);
260#endif 260#endif
261#endif /* LCD_PIXELFORMAT */ 261#endif /* LCD_PIXELFORMAT */
262 dst = &_grey_info.data[id].value; 262 dst = _grey_info.values + id;
263 src = &_grey_info.data[is].value; 263 src = _grey_info.values + is;
264 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE; 264 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
265 265
266 do 266 do
@@ -282,7 +282,7 @@ void grey_ub_scroll_up(int count)
282 id = _GREY_MULUQ(_grey_info.width, yd & ~3) + (~yd & 3); 282 id = _GREY_MULUQ(_grey_info.width, yd & ~3) + (~yd & 3);
283#endif 283#endif
284#endif /* LCD_PIXELFORMAT */ 284#endif /* LCD_PIXELFORMAT */
285 dst = &_grey_info.data[id].value; 285 dst = _grey_info.values + id;
286 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE; 286 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
287 287
288 do 288 do
@@ -320,8 +320,8 @@ void grey_ub_scroll_down(int count)
320 is = _GREY_MULUQ(_grey_info.width, ys & ~3) + (~ys & 3); 320 is = _GREY_MULUQ(_grey_info.width, ys & ~3) + (~ys & 3);
321#endif 321#endif
322#endif /* LCD_PIXELFORMAT */ 322#endif /* LCD_PIXELFORMAT */
323 dst = &_grey_info.data[id].value; 323 dst = _grey_info.values + id;
324 src = &_grey_info.data[is].value; 324 src = _grey_info.values + is;
325 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE; 325 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
326 326
327 do 327 do
@@ -343,7 +343,7 @@ void grey_ub_scroll_down(int count)
343 id = _GREY_MULUQ(_grey_info.width, yd & ~3) + (~yd & 3); 343 id = _GREY_MULUQ(_grey_info.width, yd & ~3) + (~yd & 3);
344#endif 344#endif
345#endif /* LCD_PIXELFORMAT */ 345#endif /* LCD_PIXELFORMAT */
346 dst = &_grey_info.data[id].value; 346 dst = _grey_info.values + id;
347 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE; 347 dst_end = dst + _grey_info.width * _GREY_X_ADVANCE;
348 348
349 do 349 do