[Scummvm-cvs-logs] CVS: scummvm/common/scaler hq2x_i386.asm,1.1,1.2 hq3x_i386.asm,1.1,1.2
Eugene Sandulenko
sev at users.sourceforge.net
Sun May 30 15:18:01 CEST 2004
Update of /cvsroot/scummvm/scummvm/common/scaler
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19690
Modified Files:
hq2x_i386.asm hq3x_i386.asm
Log Message:
Applied patch submitted by cyx to bug #961365 (Assembly versions of HQ2x and HQ3x scalers), off-by-one error.
Index: hq2x_i386.asm
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler/hq2x_i386.asm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- hq2x_i386.asm 21 May 2004 02:08:47 -0000 1.1
+++ hq2x_i386.asm 30 May 2004 22:16:59 -0000 1.2
@@ -488,39 +488,14 @@
sub dword[moduloDst],ecx
shl dword[moduloDst],1
mov ebx,[ebp+srcPitch]
- mov dword[prevline],0
mov dword[nextline],ebx
mov dword[moduloSrc],ebx
sub dword[moduloSrc],ecx
+ neg ebx
+ mov dword[prevline],ebx
.loopy
mov ecx,[ebp+Xres]
- sub ecx,2 ; x={Xres-2, Xres-1} are special cases.
mov dword[xcounter],ecx
- ; x=0 - special case
- mov ebx,[prevline]
- movq mm5,[esi+ebx]
- movq mm6,[esi]
- mov ebx,[nextline]
- movq mm7,[esi+ebx]
- movd eax,mm5
- movzx edx,ax
- mov [w1],edx
- mov [w2],edx
- shr eax,16
- mov [w3],eax
- movd eax,mm6
- movzx edx,ax
- mov [w4],edx
- mov [w5],edx
- shr eax,16
- mov [w6],eax
- movd eax,mm7
- movzx edx,ax
- mov [w7],edx
- mov [w8],edx
- shr eax,16
- mov [w9],eax
- jmp .flags
.loopx
mov ebx,[prevline]
movq mm5,[esi+ebx-2]
@@ -1805,92 +1780,18 @@
add esi,2
add edi,4
dec dword[xcounter]
- jle .xres_2
+ jz .nexty
jmp .loopx
-.xres_2
- ; x=Xres-2 - special case
- jl .xres_1
- mov ebx,[prevline]
- movq mm5,[esi+ebx-4]
- movq mm6,[esi-4]
- mov ebx,[nextline]
- movq mm7,[esi+ebx-4]
- psrlq mm5,16
- psrlq mm6,16
- psrlq mm7,16
- movd eax,mm5
- movzx edx,ax
- mov [w1],edx
- shr eax,16
- mov [w2],eax
- psrlq mm5,32
- movd eax,mm5
- mov [w3],eax
- movd eax,mm6
- movzx edx,ax
- mov [w4],edx
- shr eax,16
- mov [w5],eax
- psrlq mm6,32
- movd eax,mm6
- mov [w6],eax
- movd eax,mm7
- movzx edx,ax
- mov [w7],edx
- shr eax,16
- mov [w8],eax
- psrlq mm7,32
- movd eax,mm7
- mov [w9],eax
- jmp .flags
-.xres_1
- cmp dword[xcounter],-1
- jl .nexty
- ; x=Xres-1 - special case
- mov ebx,[prevline]
- movq mm5,[esi+ebx-6]
- movq mm6,[esi-6]
- mov ebx,[nextline]
- movq mm7,[esi+ebx-6]
- psrlq mm5,32
- psrlq mm6,32
- psrlq mm7,32
- movd eax,mm5
- movzx edx,ax
- mov [w1],edx
- shr eax,16
- mov [w2],eax
- mov [w3],eax
- movd eax,mm6
- movzx edx,ax
- mov [w4],edx
- shr eax,16
- mov [w5],eax
- mov [w6],eax
- movd eax,mm7
- movzx edx,ax
- mov [w7],edx
- shr eax,16
- mov [w8],eax
- mov [w9],eax
- jmp .flags
.nexty
add esi,dword[moduloSrc]
add edi,dword[moduloDst]
dec dword[linesleft]
jz .fin
mov ebx,[ebp+srcPitch]
- cmp dword[linesleft],1
- je .lastline
mov dword[nextline],ebx
neg ebx
mov dword[prevline],ebx
jmp .loopy
-.lastline
- mov dword[nextline],0
- neg ebx
- mov dword[prevline],ebx
- jmp .loopy
.fin
emms
popad
Index: hq3x_i386.asm
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler/hq3x_i386.asm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- hq3x_i386.asm 21 May 2004 02:08:47 -0000 1.1
+++ hq3x_i386.asm 30 May 2004 22:16:59 -0000 1.2
@@ -426,39 +426,14 @@
mov ecx,[ebp+Xres]
shl ecx,1
mov ebx,[ebp+srcPitch]
- mov dword[prevline],0
mov dword[nextline],ebx
mov dword[moduloSrc],ebx
sub dword[moduloSrc],ecx
+ neg ebx
+ mov dword[prevline],ebx
.loopy
mov ecx,[ebp+Xres]
- sub ecx,2 ; x={Xres-2, Xres-1} are special cases.
mov dword[xcounter],ecx
- ; x=0 - special case
- mov ebx,[prevline]
- movq mm5,[esi+ebx]
- movq mm6,[esi]
- mov ebx,[nextline]
- movq mm7,[esi+ebx]
- movd eax,mm5
- movzx edx,ax
- mov [w1],edx
- mov [w2],edx
- shr eax,16
- mov [w3],eax
- movd eax,mm6
- movzx edx,ax
- mov [w4],edx
- mov [w5],edx
- shr eax,16
- mov [w6],eax
- movd eax,mm7
- movzx edx,ax
- mov [w7],edx
- mov [w8],edx
- shr eax,16
- mov [w9],eax
- jmp .flags
.loopx
mov ebx,[prevline]
movq mm5,[esi+ebx-2]
@@ -2397,92 +2372,18 @@
add esi,2
add edi,6
dec dword[xcounter]
- jle .xres_2
+ jz .nexty
jmp .loopx
-.xres_2
- ; x=Xres-2 - special case
- jl .xres_1
- mov ebx,[prevline]
- movq mm5,[esi+ebx-4]
- movq mm6,[esi-4]
- mov ebx,[nextline]
- movq mm7,[esi+ebx-4]
- psrlq mm5,16
- psrlq mm6,16
- psrlq mm7,16
- movd eax,mm5
- movzx edx,ax
- mov [w1],edx
- shr eax,16
- mov [w2],eax
- psrlq mm5,32
- movd eax,mm5
- mov [w3],eax
- movd eax,mm6
- movzx edx,ax
- mov [w4],edx
- shr eax,16
- mov [w5],eax
- psrlq mm6,32
- movd eax,mm6
- mov [w6],eax
- movd eax,mm7
- movzx edx,ax
- mov [w7],edx
- shr eax,16
- mov [w8],eax
- psrlq mm7,32
- movd eax,mm7
- mov [w9],eax
- jmp .flags
-.xres_1
- cmp dword[xcounter],-1
- jl .nexty
- ; x=Xres-1 - special case
- mov ebx,[prevline]
- movq mm5,[esi+ebx-6]
- movq mm6,[esi-6]
- mov ebx,[nextline]
- movq mm7,[esi+ebx-6]
- psrlq mm5,32
- psrlq mm6,32
- psrlq mm7,32
- movd eax,mm5
- movzx edx,ax
- mov [w1],edx
- shr eax,16
- mov [w2],eax
- mov [w3],eax
- movd eax,mm6
- movzx edx,ax
- mov [w4],edx
- shr eax,16
- mov [w5],eax
- mov [w6],eax
- movd eax,mm7
- movzx edx,ax
- mov [w7],edx
- shr eax,16
- mov [w8],eax
- mov [w9],eax
- jmp .flags
.nexty
add esi,dword[moduloSrc]
add edi,dword[moduloDst]
dec dword[linesleft]
jz .fin
mov ebx,[ebp+srcPitch]
- cmp dword[linesleft],1
- je .lastline
mov dword[nextline],ebx
neg ebx
mov dword[prevline],ebx
jmp .loopy
-.lastline
- mov dword[nextline],0
- neg ebx
- mov dword[prevline],ebx
- jmp .loopy
.fin
emms
popad
More information about the Scummvm-git-logs
mailing list