disable asm in the software renderer for now. This will allow me to fix the

files one at a time and allow others to use software independent of asm usage
(even if a little slowly (~14% slower on my dual c450)).
This commit is contained in:
Bill Currie 2001-05-25 14:57:31 +00:00
parent 9788b579c5
commit 1038f88a64
32 changed files with 130 additions and 82 deletions

View file

@ -10,7 +10,8 @@ noinst_LTLIBRARIES = $(SW)
libsw_la_LDFLAGS = -version-info 1:0:0 libsw_la_LDFLAGS = -version-info 1:0:0
libsw_la_SOURCES = d_edge.c d_fill.c d_init.c d_modech.c d_part.c d_polyse.c \ libsw_la_SOURCES = d_edge.c d_fill.c d_init.c d_modech.c d_part.c d_polyse.c \
d_scan.c d_sky.c d_sprite.c d_surf.c d_vars.c d_zpoint.c draw.c screen.c \ d_scan.c d_sky.c d_sprite.c d_surf.c d_vars.c d_zpoint.c draw.c \
nonintel.c screen.c \
sw_graph.c sw_raclip.c sw_ralias.c sw_rbsp.c sw_rdraw.c sw_redge.c \ sw_graph.c sw_raclip.c sw_ralias.c sw_rbsp.c sw_rdraw.c sw_redge.c \
sw_rlight.c sw_rmain.c sw_rmisc.c sw_rsky.c sw_rsprite.c sw_rsurf.c \ sw_rlight.c sw_rmain.c sw_rmisc.c sw_rsky.c sw_rsprite.c sw_rsurf.c \
sw_skin.c \ sw_skin.c \

View file

@ -34,6 +34,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View file

@ -35,6 +35,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View file

@ -129,6 +129,8 @@ D_SetupFrame (void)
for (i = 0; i < (NUM_MIPS - 1); i++) for (i = 0; i < (NUM_MIPS - 1); i++)
d_scalemip[i] = basemip[i] * d_mipscale->value; d_scalemip[i] = basemip[i] * d_mipscale->value;
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
if (d_subdiv16->int_val) if (d_subdiv16->int_val)
d_drawspans = D_DrawSpans16; d_drawspans = D_DrawSpans16;

View file

@ -46,6 +46,8 @@ short *zspantable[MAXHEIGHT];
void void
D_Patch (void) D_Patch (void)
{ {
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
static qboolean protectset8 = false; static qboolean protectset8 = false;

View file

@ -48,6 +48,8 @@ D_StartParticles (void)
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void
D_DrawParticle (particle_t *pparticle) D_DrawParticle (particle_t *pparticle)

View file

@ -34,6 +34,8 @@
#include "d_ifacea.h" #include "d_ifacea.h"
#include "asm_draw.h" #include "asm_draw.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View file

@ -34,6 +34,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
// !!! if this is changed, it must be changed in d_polyse.c too !!! // !!! if this is changed, it must be changed in d_polyse.c too !!!

View file

@ -127,6 +127,8 @@ void D_PolysetSetEdgeTable (void);
void D_RasterizeAliasPolySmooth (void); void D_RasterizeAliasPolySmooth (void);
void D_PolysetScanLeftEdge (int height); void D_PolysetScanLeftEdge (int height);
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void

View file

@ -94,6 +94,8 @@ D_WarpScreen (void)
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void
D_DrawTurbulent8Span (void) D_DrawTurbulent8Span (void)

View file

@ -34,6 +34,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
.data .data

View file

@ -33,6 +33,8 @@
#include "quakeasm.h" #include "quakeasm.h"
#include "asm_draw.h" #include "asm_draw.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View file

@ -38,6 +38,8 @@ static int minindex, maxindex;
static sspan_t *sprite_spans; static sspan_t *sprite_spans;
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void

View file

@ -26,14 +26,16 @@
$Id$ $Id$
*/ */
#ifndef USE_INTEL_ASM
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include "config.h" # include "config.h"
#endif #endif
#include "QF/qtypes.h" #include "QF/qtypes.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM
// all global and static refresh variables are collected in a contiguous block // all global and static refresh variables are collected in a contiguous block
// to avoid cache conflicts. // to avoid cache conflicts.

View file

@ -34,6 +34,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
.data .data

View file

@ -30,6 +30,8 @@
# include "config.h" # include "config.h"
#endif #endif
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
int r_bmodelactive; int r_bmodelactive;

View file

@ -33,6 +33,8 @@
#include "quakeasm.h" #include "quakeasm.h"
#include "asm_draw.h" #include "asm_draw.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View file

@ -34,6 +34,8 @@
#include "quakeasm.h" #include "quakeasm.h"
#include "asm_draw.h" #include "asm_draw.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
.data .data

View file

@ -98,6 +98,7 @@ R_Alias_clip_z (finalvert_t *pfv0, finalvert_t *pfv1, finalvert_t *out)
out->flags |= ALIAS_BOTTOM_CLIP; out->flags |= ALIAS_BOTTOM_CLIP;
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM

View file

@ -35,27 +35,40 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
.data
Ltemp0: .long 0
Ltemp1: .long 0
.text .text
#define temp0 0
#define pfv0 8+4 #define temp1 4
#define pfv1 8+8 #define point5 8
#define out 8+12 #define pfv0 12+8+4
#define pfv1 12+8+8
#define out 12+8+12
.globl C(R_Alias_clip_bottom) .globl C(R_Alias_clip_bottom)
C(R_Alias_clip_bottom): C(R_Alias_clip_bottom):
pushl %esi pushl %esi
pushl %edi pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi movl pfv0(%esp),%esi
movl pfv1(%esp),%edi movl pfv1(%esp),%edi
movl C(r_refdef)+rd_aliasvrectbottom,%eax #ifdef PIC
call .Lpic1
.Lpic1: popl %eax
addl $_GLOBAL_OFFSET_TABLE_+[.-.Lpic1],%eax
movl float_point5@GOTOFF(%eax),%edx
leal C(r_refdef)@GOTOFF(%eax),%eax
#else
leal C(r_refdef),%eax
movl float_point5,%edx
#endif
movl rd_aliasvrectbottom(%eax),%eax
movl %edx,point5(%esp)
LDoForwardOrBackward: LDoForwardOrBackward:
@ -74,10 +87,10 @@ LDoForward:
subl %edx,%ecx subl %edx,%ecx
subl %edx,%eax subl %edx,%eax
movl %ecx,Ltemp1 movl %ecx,temp1(%esp)
movl %eax,Ltemp0 movl %eax,temp0(%esp)
fildl Ltemp1 fildl temp1(%esp)
fildl Ltemp0 fildl temp0(%esp)
movl out(%esp),%edx movl out(%esp),%edx
movl $2,%eax movl $2,%eax
@ -132,15 +145,15 @@ LDo3Forward:
fxch %st(1) // fv0v0+(fv1v0-fv0v0)*scale | scale | fxch %st(1) // fv0v0+(fv1v0-fv0v0)*scale | scale |
// fv0v2+(fv1v2-fv0v2)*scale | // fv0v2+(fv1v2-fv0v2)*scale |
// fv0v1+(fv1v1-fv0v1)*scale // fv0v1+(fv1v1-fv0v1)*scale
fadds float_point5 fadds point5(%esp)
fxch %st(3) // fv0v1+(fv1v1-fv0v1)*scale | scale | fxch %st(3) // fv0v1+(fv1v1-fv0v1)*scale | scale |
// fv0v2+(fv1v2-fv0v2)*scale | // fv0v2+(fv1v2-fv0v2)*scale |
// fv0v0+(fv1v0-fv0v0)*scale // fv0v0+(fv1v0-fv0v0)*scale
fadds float_point5 fadds point5(%esp)
fxch %st(2) // fv0v2+(fv1v2-fv0v2)*scale | scale | fxch %st(2) // fv0v2+(fv1v2-fv0v2)*scale | scale |
// fv0v1+(fv1v1-fv0v1)*scale | // fv0v1+(fv1v1-fv0v1)*scale |
// fv0v0+(fv1v0-fv0v0)*scale // fv0v0+(fv1v0-fv0v0)*scale
fadds float_point5 fadds point5(%esp)
fxch %st(3) // fv0v0+(fv1v0-fv0v0)*scale | scale | fxch %st(3) // fv0v0+(fv1v0-fv0v0)*scale | scale |
// fv0v1+(fv1v1-fv0v1)*scale | // fv0v1+(fv1v1-fv0v1)*scale |
// fv0v2+(fv1v2-fv0v2)*scale // fv0v2+(fv1v2-fv0v2)*scale
@ -157,6 +170,8 @@ LDo3Forward:
fstp %st(0) fstp %st(0)
addl $12,%esp
popl %edi popl %edi
popl %esi popl %esi
@ -168,10 +183,23 @@ C(R_Alias_clip_top):
pushl %esi pushl %esi
pushl %edi pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi movl pfv0(%esp),%esi
movl pfv1(%esp),%edi movl pfv1(%esp),%edi
movl C(r_refdef)+rd_aliasvrect+4,%eax #ifdef PIC
call .Lpic2
.Lpic2: popl %eax
addl $_GLOBAL_OFFSET_TABLE_+[.-.Lpic2],%eax
movl float_point5@GOTOFF(%eax),%edx
leal C(r_refdef)@GOTOFF(%eax),%eax
#else
leal C(r_refdef),%eax
movl float_point5,%edx
#endif
movl rd_aliasvrect+4(%eax),%eax
movl %edx,point5(%esp)
jmp LDoForwardOrBackward jmp LDoForwardOrBackward
@ -181,10 +209,23 @@ C(R_Alias_clip_right):
pushl %esi pushl %esi
pushl %edi pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi movl pfv0(%esp),%esi
movl pfv1(%esp),%edi movl pfv1(%esp),%edi
movl C(r_refdef)+rd_aliasvrectright,%eax #ifdef PIC
call .Lpic3
.Lpic3: popl %eax
addl $_GLOBAL_OFFSET_TABLE_+[.-.Lpic3],%eax
movl float_point5@GOTOFF(%eax),%edx
leal C(r_refdef)@GOTOFF(%eax),%eax
#else
leal C(r_refdef),%eax
movl float_point5,%edx
#endif
movl rd_aliasvrectright(%eax),%eax
movl %edx,point5(%esp)
LRightLeftEntry: LRightLeftEntry:
@ -213,10 +254,23 @@ C(R_Alias_clip_left):
pushl %esi pushl %esi
pushl %edi pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi movl pfv0(%esp),%esi
movl pfv1(%esp),%edi movl pfv1(%esp),%edi
movl C(r_refdef)+rd_aliasvrect+0,%eax #ifdef PIC
call .Lpic4
.Lpic4: popl %eax
addl $_GLOBAL_OFFSET_TABLE_+[.-.Lpic4],%eax
movl float_point5@GOTOFF(%eax),%edx
leal C(r_refdef)@GOTOFF(%eax),%eax
#else
leal C(r_refdef),%eax
movl float_point5,%edx
#endif
movl rd_aliasvrect+0(%eax),%eax
movl %edx,point5(%esp)
jmp LRightLeftEntry jmp LRightLeftEntry

View file

@ -421,6 +421,8 @@ R_AliasTransformFinalVert (finalvert_t *fv, auxvert_t *av,
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void
R_AliasTransformAndProjectFinalVerts (finalvert_t *fv, stvert_t *pstverts) R_AliasTransformAndProjectFinalVerts (finalvert_t *fv, stvert_t *pstverts)

View file

@ -34,6 +34,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
.data .data

View file

@ -76,6 +76,8 @@ int r_ceilv1;
qboolean r_lastvertvalid; qboolean r_lastvertvalid;
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void

View file

@ -34,6 +34,8 @@
#include "asm_draw.h" #include "asm_draw.h"
#include "d_ifacea.h" #include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
// !!! if these are changed, they must be changed in r_draw.c too !!! // !!! if these are changed, they must be changed in r_draw.c too !!!

View file

@ -141,6 +141,8 @@ R_BeginEdgeFrame (void)
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
/* /*

View file

@ -33,6 +33,8 @@
#include "quakeasm.h" #include "quakeasm.h"
#include "asm_draw.h" #include "asm_draw.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
.data .data

View file

@ -171,6 +171,8 @@ R_Init (void)
r_refdef.yOrigin = YCENTERING; r_refdef.yOrigin = YCENTERING;
// TODO: collect 386-specific code in one place // TODO: collect 386-specific code in one place
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM #ifdef USE_INTEL_ASM
Sys_MakeCodeWriteable ((long) R_EdgeCodeStart, Sys_MakeCodeWriteable ((long) R_EdgeCodeStart,
(long) R_EdgeCodeEnd - (long) R_EdgeCodeStart); (long) R_EdgeCodeEnd - (long) R_EdgeCodeStart);

View file

@ -205,6 +205,7 @@ R_TransformFrustum (void)
} }
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM
void void

View file

@ -296,6 +296,7 @@ R_DrawSurface (void)
} }
} }
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM #ifndef USE_INTEL_ASM

View file

@ -72,7 +72,7 @@ client_LIB_DEPS= libqfnet.a $(qf_client_LIBS)
client_SOURCES= cl_cam.c cl_cmd.c cl_demo.c cl_input.c cl_main.c cl_screen.c \ client_SOURCES= cl_cam.c cl_cmd.c cl_demo.c cl_input.c cl_main.c cl_screen.c \
cl_parse.c cl_tent.c \ cl_parse.c cl_tent.c \
console.c keys.c sbar.c \ console.c keys.c sbar.c \
r_part.c r_view.c nonintel.c locs.c pcx.c tga.c r_part.c r_view.c locs.c pcx.c tga.c
server_SOURCES= host.c host_cmd.c pr_cmds.c sv_cvar.c sv_main.c \ server_SOURCES= host.c host_cmd.c pr_cmds.c sv_cvar.c sv_main.c \
sv_move.c sv_phys.c sv_progs.c sv_user.c sv_move.c sv_phys.c sv_progs.c sv_user.c

View file

@ -1,58 +0,0 @@
/*
nonintel.c
code for non-Intel processors only
Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA
$Id$
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#ifndef USE_INTEL_ASM
int r_bmodelactive;
void
R_Surf8Patch ()
{
// we only patch code on Intel
}
void
R_Surf16Patch ()
{
// we only patch code on Intel
}
void
R_SurfacePatch (void)
{
// we only patch code on Intel
}
#endif // USE_INTEL_ASM

View file

@ -97,7 +97,7 @@ client_LIB_DEPS= libqfnet.a $(qf_client_LIBS)
client_SOURCES= cl_cam.c cl_cmd.c cl_cvar.c cl_demo.c cl_ents.c cl_input.c \ client_SOURCES= cl_cam.c cl_cmd.c cl_cvar.c cl_demo.c cl_ents.c cl_input.c \
cl_main.c cl_misc.c cl_ngraph.c cl_parse.c cl_screen.c cl_pred.c \ cl_main.c cl_misc.c cl_ngraph.c cl_parse.c cl_screen.c cl_pred.c \
cl_skin.c cl_slist.c cl_tent.c \ cl_skin.c cl_slist.c cl_tent.c \
console.c keys.c locs.c nonintel.c pcx.c \ console.c keys.c locs.c pcx.c \
r_view.c sbar.c skin.c teamplay.c tga.c \ r_view.c sbar.c skin.c teamplay.c tga.c \
wad.c cl_math.S $(syscl_SRC) wad.c cl_math.S $(syscl_SRC)