mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-13 16:07:45 +00:00
- removed asm version of R_DrawFuzzColumn, because even on my 9 year old laptop this was significantly slower than the C version.
This commit is contained in:
parent
13efb34964
commit
c9caaf08c8
3 changed files with 3 additions and 149 deletions
|
@ -597,146 +597,6 @@ dmsdone add esp,8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;*----------------------------------------------------------------------
|
|
||||||
;*
|
|
||||||
;* R_DrawFuzzColumnP
|
|
||||||
;*
|
|
||||||
;*----------------------------------------------------------------------
|
|
||||||
|
|
||||||
GLOBAL @R_DrawFuzzColumnP_ASM@0
|
|
||||||
GLOBAL _R_DrawFuzzColumnP_ASM
|
|
||||||
GLOBAL R_DrawFuzzColumnP_ASM
|
|
||||||
|
|
||||||
align 16
|
|
||||||
|
|
||||||
R_DrawFuzzColumnP_ASM:
|
|
||||||
_R_DrawFuzzColumnP_ASM:
|
|
||||||
@R_DrawFuzzColumnP_ASM@0:
|
|
||||||
|
|
||||||
; Adjust borders. Low...
|
|
||||||
mov eax,[dc_yl]
|
|
||||||
push ebx
|
|
||||||
push esi
|
|
||||||
push edi
|
|
||||||
push ebp
|
|
||||||
|
|
||||||
cmp eax,0
|
|
||||||
jg .ylok
|
|
||||||
|
|
||||||
mov eax,1
|
|
||||||
nop
|
|
||||||
|
|
||||||
; ...and high.
|
|
||||||
.ylok mov edx,[fuzzviewheight]
|
|
||||||
mov esi,[dc_yh]
|
|
||||||
cmp esi,edx
|
|
||||||
jle .yhok
|
|
||||||
|
|
||||||
mov esi,edx
|
|
||||||
nop
|
|
||||||
|
|
||||||
.yhok mov edx,[dc_x]
|
|
||||||
sub esi,eax ; esi = count
|
|
||||||
js near .dfcdone ; Zero length (or less)
|
|
||||||
|
|
||||||
mov edi,[ylookup+eax*4]
|
|
||||||
mov ebx,edx
|
|
||||||
add edi,[dc_destorg]
|
|
||||||
mov eax,[NormalLight]
|
|
||||||
mov ecx,[fuzzpos]
|
|
||||||
add edi,ebx
|
|
||||||
add eax,256*6
|
|
||||||
inc esi
|
|
||||||
mov ebp,[dc_pitch]
|
|
||||||
mov edx,FUZZTABLE
|
|
||||||
test ecx,ecx
|
|
||||||
je .fuzz0
|
|
||||||
|
|
||||||
;
|
|
||||||
; esi = count
|
|
||||||
; edi = dest
|
|
||||||
; ecx = fuzzpos
|
|
||||||
; eax = colormap 6
|
|
||||||
;
|
|
||||||
|
|
||||||
; first loop: end with fuzzpos or count 0, whichever happens first
|
|
||||||
|
|
||||||
sub edx,ecx ; edx = # of entries left in fuzzoffset
|
|
||||||
mov ebx,esi
|
|
||||||
cmp esi,edx
|
|
||||||
jle .enuf
|
|
||||||
mov esi,edx
|
|
||||||
.enuf sub ebx,esi
|
|
||||||
mov edx,[fuzzoffset+ecx*4]
|
|
||||||
push ebx
|
|
||||||
xor ebx,ebx
|
|
||||||
|
|
||||||
.loop1 inc ecx
|
|
||||||
mov bl,[edi+edx]
|
|
||||||
dec esi
|
|
||||||
mov bl,[eax+ebx]
|
|
||||||
mov [edi],bl
|
|
||||||
lea edi,[edi+ebp]
|
|
||||||
mov edx,[fuzzoffset+ecx*4]
|
|
||||||
jnz .loop1
|
|
||||||
|
|
||||||
; second loop: Chunk it into groups of FUZZTABLE-sized spans and do those
|
|
||||||
|
|
||||||
pop esi
|
|
||||||
cmp ecx,FUZZTABLE
|
|
||||||
jl .savefuzzpos
|
|
||||||
xor ecx,ecx
|
|
||||||
nop
|
|
||||||
.fuzz0 cmp esi,FUZZTABLE
|
|
||||||
jl .chunked
|
|
||||||
|
|
||||||
.oloop lea edx,[esi-FUZZTABLE]
|
|
||||||
mov esi,FUZZTABLE
|
|
||||||
push edx
|
|
||||||
mov edx,[fuzzoffset+ecx*4]
|
|
||||||
|
|
||||||
.iloop inc ecx
|
|
||||||
mov bl,[edi+edx]
|
|
||||||
dec esi
|
|
||||||
mov bl,[eax+ebx]
|
|
||||||
mov [edi],bl
|
|
||||||
lea edi,[edi+ebp]
|
|
||||||
mov edx,[fuzzoffset+ecx*4]
|
|
||||||
jnz .iloop
|
|
||||||
|
|
||||||
pop esi
|
|
||||||
xor ecx,ecx
|
|
||||||
cmp esi,FUZZTABLE
|
|
||||||
jge .oloop
|
|
||||||
|
|
||||||
; third loop: Do whatever is left
|
|
||||||
|
|
||||||
.chunked:
|
|
||||||
test esi,esi
|
|
||||||
jle .savefuzzpos
|
|
||||||
mov edx,[fuzzoffset+ecx*4]
|
|
||||||
nop
|
|
||||||
|
|
||||||
.loop3 inc ecx
|
|
||||||
mov bl,[edi+edx]
|
|
||||||
dec esi
|
|
||||||
mov bl,[eax+ebx]
|
|
||||||
mov [edi],bl
|
|
||||||
lea edi,[edi+ebp]
|
|
||||||
mov edx,[fuzzoffset+ecx*4]
|
|
||||||
jnz .loop3
|
|
||||||
|
|
||||||
.savefuzzpos:
|
|
||||||
mov [fuzzpos],ecx
|
|
||||||
.dfcdone:
|
|
||||||
pop ebp
|
|
||||||
pop edi
|
|
||||||
pop esi
|
|
||||||
pop ebx
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;*----------------------------------------------------------------------
|
;*----------------------------------------------------------------------
|
||||||
;*
|
;*
|
||||||
;* rt_copy1col_asm
|
;* rt_copy1col_asm
|
||||||
|
|
|
@ -69,7 +69,6 @@ int scaledviewwidth;
|
||||||
// These get changed depending on the current
|
// These get changed depending on the current
|
||||||
// screen depth and asm/no asm.
|
// screen depth and asm/no asm.
|
||||||
void (*R_DrawColumnHoriz)(void);
|
void (*R_DrawColumnHoriz)(void);
|
||||||
void (*R_DrawFuzzColumn)(void);
|
|
||||||
void (*R_DrawTranslatedColumn)(void);
|
void (*R_DrawTranslatedColumn)(void);
|
||||||
void (*R_DrawShadedColumn)(void);
|
void (*R_DrawShadedColumn)(void);
|
||||||
void (*R_DrawSpan)(void);
|
void (*R_DrawSpan)(void);
|
||||||
|
@ -408,13 +407,12 @@ void R_InitFuzzTable (int fuzzoff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef X86_ASM
|
|
||||||
//
|
//
|
||||||
// Creates a fuzzy image by copying pixels from adjacent ones above and below.
|
// Creates a fuzzy image by copying pixels from adjacent ones above and below.
|
||||||
// Used with an all black colormap, this could create the SHADOW effect,
|
// Used with an all black colormap, this could create the SHADOW effect,
|
||||||
// i.e. spectres and invisible players.
|
// i.e. spectres and invisible players.
|
||||||
//
|
//
|
||||||
void R_DrawFuzzColumnP_C (void)
|
void R_DrawFuzzColumn (void)
|
||||||
{
|
{
|
||||||
int count;
|
int count;
|
||||||
BYTE *dest;
|
BYTE *dest;
|
||||||
|
@ -484,7 +482,6 @@ void R_DrawFuzzColumnP_C (void)
|
||||||
fuzzpos = fuzz;
|
fuzzpos = fuzz;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// R_DrawTranlucentColumn
|
// R_DrawTranlucentColumn
|
||||||
|
@ -2544,12 +2541,12 @@ const BYTE *R_GetColumn (FTexture *tex, int col)
|
||||||
return tex->GetColumn (col, NULL);
|
return tex->GetColumn (col, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// [RH] Initialize the column drawer pointers
|
// [RH] Initialize the column drawer pointers
|
||||||
void R_InitColumnDrawers ()
|
void R_InitColumnDrawers ()
|
||||||
{
|
{
|
||||||
#ifdef X86_ASM
|
#ifdef X86_ASM
|
||||||
R_DrawColumnHoriz = R_DrawColumnHorizP_C;
|
R_DrawColumnHoriz = R_DrawColumnHorizP_C;
|
||||||
R_DrawFuzzColumn = R_DrawFuzzColumnP_ASM;
|
|
||||||
R_DrawTranslatedColumn = R_DrawTranslatedColumnP_C;
|
R_DrawTranslatedColumn = R_DrawTranslatedColumnP_C;
|
||||||
R_DrawShadedColumn = R_DrawShadedColumnP_C;
|
R_DrawShadedColumn = R_DrawShadedColumnP_C;
|
||||||
R_DrawSpan = R_DrawSpanP_ASM;
|
R_DrawSpan = R_DrawSpanP_ASM;
|
||||||
|
@ -2564,7 +2561,6 @@ void R_InitColumnDrawers ()
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
R_DrawColumnHoriz = R_DrawColumnHorizP_C;
|
R_DrawColumnHoriz = R_DrawColumnHorizP_C;
|
||||||
R_DrawFuzzColumn = R_DrawFuzzColumnP_C;
|
|
||||||
R_DrawTranslatedColumn = R_DrawTranslatedColumnP_C;
|
R_DrawTranslatedColumn = R_DrawTranslatedColumnP_C;
|
||||||
R_DrawShadedColumn = R_DrawShadedColumnP_C;
|
R_DrawShadedColumn = R_DrawShadedColumnP_C;
|
||||||
R_DrawSpan = R_DrawSpanP_C;
|
R_DrawSpan = R_DrawSpanP_C;
|
||||||
|
|
|
@ -83,7 +83,7 @@ extern void setupmvline (int);
|
||||||
extern void setuptmvline (int);
|
extern void setuptmvline (int);
|
||||||
|
|
||||||
// The Spectre/Invisibility effect.
|
// The Spectre/Invisibility effect.
|
||||||
extern void (*R_DrawFuzzColumn)(void);
|
extern void R_DrawFuzzColumn(void);
|
||||||
|
|
||||||
// [RH] Draw shaded column
|
// [RH] Draw shaded column
|
||||||
extern void (*R_DrawShadedColumn)(void);
|
extern void (*R_DrawShadedColumn)(void);
|
||||||
|
@ -192,7 +192,6 @@ void R_DrawFogBoundary (int x1, int x2, short *uclip, short *dclip);
|
||||||
|
|
||||||
#ifdef X86_ASM
|
#ifdef X86_ASM
|
||||||
|
|
||||||
extern "C" void R_DrawFuzzColumnP_ASM (void);
|
|
||||||
void R_DrawShadedColumnP_C (void);
|
void R_DrawShadedColumnP_C (void);
|
||||||
extern "C" void R_DrawSpanP_ASM (void);
|
extern "C" void R_DrawSpanP_ASM (void);
|
||||||
extern "C" void R_DrawSpanMaskedP_ASM (void);
|
extern "C" void R_DrawSpanMaskedP_ASM (void);
|
||||||
|
@ -201,7 +200,6 @@ void R_DrawColumnHorizP_C(void);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
void R_DrawFuzzColumnP_C (void);
|
|
||||||
void R_DrawShadedColumnP_C (void);
|
void R_DrawShadedColumnP_C (void);
|
||||||
void R_DrawSpanP_C (void);
|
void R_DrawSpanP_C (void);
|
||||||
void R_DrawSpanMaskedP_C (void);
|
void R_DrawSpanMaskedP_C (void);
|
||||||
|
|
Loading…
Reference in a new issue