[Scummvm-cvs-logs] CVS: scummvm/common scaler.cpp,1.9,1.10

Max Horn fingolfin at users.sourceforge.net
Fri Mar 28 11:15:02 CET 2003


Update of /cvsroot/scummvm/scummvm/common
In directory sc8-pr-cvs1:/tmp/cvs-serv19292

Modified Files:
	scaler.cpp 
Log Message:
small optimization (do three memory reads instead of five)

Index: scaler.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- scaler.cpp	6 Mar 2003 21:45:26 -0000	1.9
+++ scaler.cpp	28 Mar 2003 19:13:59 -0000	1.10
@@ -719,31 +719,34 @@
 
 void AdvMame2x(uint8 *srcPtr, uint32 srcPitch, uint8 *null, uint8 *dstPtr, uint32 dstPitch,
 							 int width, int height) {
-	unsigned int nextlineSrc = srcPitch / sizeof(short);
-	short *p = (short *)srcPtr;
+	unsigned int nextlineSrc = srcPitch / sizeof(uint16);
+	uint16 *p = (uint16 *)srcPtr;
 
-	unsigned int nextlineDst = dstPitch / sizeof(short);
-	short *q = (short *)dstPtr;
+	unsigned int nextlineDst = dstPitch / sizeof(uint16);
+	uint16 *q = (uint16 *)dstPtr;
+	
+	uint16 A, B, C;
+	uint16 D, E, F;
+	uint16 G, H, I;
 
 	while (height--) {
+		B = C = *(p - nextlineSrc);
+		E = F = *(p);
+		H = I = *(p + nextlineSrc);
 		for (int i = 0; i < width; ++i) {
-			// short A = *(p + i - nextlineSrc - 1);
-			short B = *(p + i - nextlineSrc);
-			// short C = *(p + i - nextlineSrc + 1);
-			short D = *(p + i - 1);
-			short E = *(p + i);
-			short F = *(p + i + 1);
-			// short G = *(p + i + nextlineSrc - 1);
-			short H = *(p + i + nextlineSrc);
-			// short I = *(p + i + nextlineSrc + 1);
+			p++;
+			A = B; B = C; C = *(p - nextlineSrc);
+			D = E; E = F; F = *(p);
+			G = H; H = I; I = *(p + nextlineSrc);
 
-			*(q + (i << 1)) = D == B && B != F && D != H ? D : E;
-			*(q + (i << 1) + 1) = B == F && B != D && F != H ? F : E;
-			*(q + (i << 1) + nextlineDst) = D == H && D != B && H != F ? D : E;
-			*(q + (i << 1) + nextlineDst + 1) = H == F && D != H && B != F ? F : E;
+			*(q) = D == B && B != F && D != H ? D : E;
+			*(q + 1) = B == F && B != D && F != H ? F : E;
+			*(q + nextlineDst) = D == H && D != B && H != F ? D : E;
+			*(q + nextlineDst + 1) = H == F && D != H && B != F ? F : E;
+			q += 2;
 		}
-		p += nextlineSrc;
-		q += nextlineDst << 1;
+		p += nextlineSrc - width;
+		q += (nextlineDst - width) << 1;
 	}
 }
 





More information about the Scummvm-git-logs mailing list