(svn r13602) -Codechange: little speedup for 8bpp-optimized blitter
authorsmatz
Sat, 21 Jun 2008 20:58:34 +0000
changeset 11046 b26cfd2a54f6
parent 11045 60c076d531f9
child 11047 f4e7290c23b9
(svn r13602) -Codechange: little speedup for 8bpp-optimized blitter
src/blitter/8bpp_optimized.cpp
--- a/src/blitter/8bpp_optimized.cpp	Sat Jun 21 18:59:15 2008 +0000
+++ b/src/blitter/8bpp_optimized.cpp	Sat Jun 21 20:58:34 2008 +0000
@@ -71,24 +71,28 @@
 			/* Skip transparent pixels */
 			dst += trans;
 			width -= trans;
-			if (width <= 0) continue;
+			if (width <= 0 || pixels == 0) continue;
 			pixels = min<uint>(pixels, (uint)width);
 			width -= pixels;
 
 			switch (mode) {
-				case BM_COLOUR_REMAP:
-					for (uint x = 0; x < pixels; x++) {
-						if (bp->remap[*src] != 0) *dst = bp->remap[*src];
+				case BM_COLOUR_REMAP: {
+					const uint8 *remap = bp->remap;
+					do {
+						uint m = remap[*src];
+						if (m != 0) *dst = m;
 						dst++; src++;
-					}
-					break;
+					} while (--pixels != 0);
+				} break;
 
-				case BM_TRANSPARENT:
-					for (uint x = 0; x < pixels; x++) {
-						*dst = bp->remap[*dst];
-						dst++; src++;
-					}
-					break;
+				case BM_TRANSPARENT: {
+					const uint8 *remap = bp->remap;
+					src += pixels;
+					do {
+						*dst = remap[*dst];
+						dst++;
+					} while (--pixels != 0);
+				} break;
 
 				default:
 					memcpy(dst, src, pixels);