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_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_rlight.c sw_rmain.c sw_rmisc.c sw_rsky.c sw_rsprite.c sw_rsurf.c \
sw_skin.c \

View file

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

View file

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

View file

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

View file

@ -46,6 +46,8 @@ short *zspantable[MAXHEIGHT];
void
D_Patch (void)
{
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM
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
void
D_DrawParticle (particle_t *pparticle)

View file

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

View file

@ -34,6 +34,8 @@
#include "asm_draw.h"
#include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM
// !!! 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_PolysetScanLeftEdge (int height);
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM
void

View file

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

View file

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

View file

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

View file

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

View file

@ -26,14 +26,16 @@
$Id$
*/
#ifndef USE_INTEL_ASM
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#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
// to avoid cache conflicts.

View file

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

View file

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

View file

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

View file

@ -34,6 +34,8 @@
#include "quakeasm.h"
#include "asm_draw.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM
.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;
}
#undef USE_INTEL_ASM //XXX asm pic hack
#ifndef USE_INTEL_ASM

View file

@ -35,27 +35,40 @@
#include "asm_draw.h"
#include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM
.data
Ltemp0: .long 0
Ltemp1: .long 0
.text
#define pfv0 8+4
#define pfv1 8+8
#define out 8+12
#define temp0 0
#define temp1 4
#define point5 8
#define pfv0 12+8+4
#define pfv1 12+8+8
#define out 12+8+12
.globl C(R_Alias_clip_bottom)
C(R_Alias_clip_bottom):
pushl %esi
pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi
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:
@ -74,10 +87,10 @@ LDoForward:
subl %edx,%ecx
subl %edx,%eax
movl %ecx,Ltemp1
movl %eax,Ltemp0
fildl Ltemp1
fildl Ltemp0
movl %ecx,temp1(%esp)
movl %eax,temp0(%esp)
fildl temp1(%esp)
fildl temp0(%esp)
movl out(%esp),%edx
movl $2,%eax
@ -132,15 +145,15 @@ LDo3Forward:
fxch %st(1) // fv0v0+(fv1v0-fv0v0)*scale | scale |
// fv0v2+(fv1v2-fv0v2)*scale |
// fv0v1+(fv1v1-fv0v1)*scale
fadds float_point5
fadds point5(%esp)
fxch %st(3) // fv0v1+(fv1v1-fv0v1)*scale | scale |
// fv0v2+(fv1v2-fv0v2)*scale |
// fv0v0+(fv1v0-fv0v0)*scale
fadds float_point5
fadds point5(%esp)
fxch %st(2) // fv0v2+(fv1v2-fv0v2)*scale | scale |
// fv0v1+(fv1v1-fv0v1)*scale |
// fv0v0+(fv1v0-fv0v0)*scale
fadds float_point5
fadds point5(%esp)
fxch %st(3) // fv0v0+(fv1v0-fv0v0)*scale | scale |
// fv0v1+(fv1v1-fv0v1)*scale |
// fv0v2+(fv1v2-fv0v2)*scale
@ -157,6 +170,8 @@ LDo3Forward:
fstp %st(0)
addl $12,%esp
popl %edi
popl %esi
@ -168,10 +183,23 @@ C(R_Alias_clip_top):
pushl %esi
pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi
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
@ -181,10 +209,23 @@ C(R_Alias_clip_right):
pushl %esi
pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi
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:
@ -213,10 +254,23 @@ C(R_Alias_clip_left):
pushl %esi
pushl %edi
subl $12,%esp
movl pfv0(%esp),%esi
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

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
void
R_AliasTransformAndProjectFinalVerts (finalvert_t *fv, stvert_t *pstverts)

View file

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

View file

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

View file

@ -34,6 +34,8 @@
#include "asm_draw.h"
#include "d_ifacea.h"
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM
// !!! 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
/*

View file

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

View file

@ -171,6 +171,8 @@ R_Init (void)
r_refdef.yOrigin = YCENTERING;
// TODO: collect 386-specific code in one place
#undef USE_INTEL_ASM //XXX asm pic hack
#ifdef USE_INTEL_ASM
Sys_MakeCodeWriteable ((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
void

View file

@ -296,6 +296,7 @@ R_DrawSurface (void)
}
}
#undef USE_INTEL_ASM //XXX asm pic hack
#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 \
cl_parse.c cl_tent.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 \
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 \
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 \
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 \
wad.c cl_math.S $(syscl_SRC)