mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 14:51:46 +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
|
||||
|
|
|
@ -69,7 +69,6 @@ int scaledviewwidth;
|
|||
// These get changed depending on the current
|
||||
// screen depth and asm/no asm.
|
||||
void (*R_DrawColumnHoriz)(void);
|
||||
void (*R_DrawFuzzColumn)(void);
|
||||
void (*R_DrawTranslatedColumn)(void);
|
||||
void (*R_DrawShadedColumn)(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.
|
||||
// Used with an all black colormap, this could create the SHADOW effect,
|
||||
// i.e. spectres and invisible players.
|
||||
//
|
||||
void R_DrawFuzzColumnP_C (void)
|
||||
void R_DrawFuzzColumn (void)
|
||||
{
|
||||
int count;
|
||||
BYTE *dest;
|
||||
|
@ -484,7 +482,6 @@ void R_DrawFuzzColumnP_C (void)
|
|||
fuzzpos = fuzz;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// R_DrawTranlucentColumn
|
||||
|
@ -2544,12 +2541,12 @@ const BYTE *R_GetColumn (FTexture *tex, int col)
|
|||
return tex->GetColumn (col, NULL);
|
||||
}
|
||||
|
||||
|
||||
// [RH] Initialize the column drawer pointers
|
||||
void R_InitColumnDrawers ()
|
||||
{
|
||||
#ifdef X86_ASM
|
||||
R_DrawColumnHoriz = R_DrawColumnHorizP_C;
|
||||
R_DrawFuzzColumn = R_DrawFuzzColumnP_ASM;
|
||||
R_DrawTranslatedColumn = R_DrawTranslatedColumnP_C;
|
||||
R_DrawShadedColumn = R_DrawShadedColumnP_C;
|
||||
R_DrawSpan = R_DrawSpanP_ASM;
|
||||
|
@ -2564,7 +2561,6 @@ void R_InitColumnDrawers ()
|
|||
}
|
||||
#else
|
||||
R_DrawColumnHoriz = R_DrawColumnHorizP_C;
|
||||
R_DrawFuzzColumn = R_DrawFuzzColumnP_C;
|
||||
R_DrawTranslatedColumn = R_DrawTranslatedColumnP_C;
|
||||
R_DrawShadedColumn = R_DrawShadedColumnP_C;
|
||||
R_DrawSpan = R_DrawSpanP_C;
|
||||
|
|
|
@ -83,7 +83,7 @@ extern void setupmvline (int);
|
|||
extern void setuptmvline (int);
|
||||
|
||||
// The Spectre/Invisibility effect.
|
||||
extern void (*R_DrawFuzzColumn)(void);
|
||||
extern void R_DrawFuzzColumn(void);
|
||||
|
||||
// [RH] Draw shaded column
|
||||
extern void (*R_DrawShadedColumn)(void);
|
||||
|
@ -192,7 +192,6 @@ void R_DrawFogBoundary (int x1, int x2, short *uclip, short *dclip);
|
|||
|
||||
#ifdef X86_ASM
|
||||
|
||||
extern "C" void R_DrawFuzzColumnP_ASM (void);
|
||||
void R_DrawShadedColumnP_C (void);
|
||||
extern "C" void R_DrawSpanP_ASM (void);
|
||||
extern "C" void R_DrawSpanMaskedP_ASM (void);
|
||||
|
@ -201,7 +200,6 @@ void R_DrawColumnHorizP_C(void);
|
|||
|
||||
#else
|
||||
|
||||
void R_DrawFuzzColumnP_C (void);
|
||||
void R_DrawShadedColumnP_C (void);
|
||||
void R_DrawSpanP_C (void);
|
||||
void R_DrawSpanMaskedP_C (void);
|
||||
|
|
Loading…
Reference in a new issue