diff --git a/glide2x/h3/glide/src/makefile.linux b/glide2x/h3/glide/src/makefile.linux index b951e7c..09434a3 100644 --- a/glide2x/h3/glide/src/makefile.linux +++ b/glide2x/h3/glide/src/makefile.linux @@ -112,6 +112,8 @@ override USE_FIFO = 1 ifeq ($(USE_X86),1) CDEFS += -DGLIDE_DISPATCH_SETUP=1 -DGLIDE_DISPATCH_DOWNLOAD=1 override USE_FIFO = 1 +CDEFS += -DHAVE_XDRAWTRI_ASM=1 +override USE_DRAWTRI_ASM = 1 else CDEFS += -DGLIDE_USE_C_TRISETUP=1 endif @@ -192,14 +194,15 @@ GLIDE_OBJECTS = \ cpuid.o \ xtexdl_def.o +ifeq ($(USE_DRAWTRI_ASM),1) +GLIDE_OBJECTS += xdrawtri.o +endif ifeq ($(USE_X86),1) GLIDE_OBJECTS += \ - xdraw2_def.o \ - xdraw3_def.o + xdraw2_def.o ifeq ($(USE_3DNOW),1) GLIDE_OBJECTS += \ xdraw2_3dnow.o \ - xdraw3_3dnow.o \ xtexdl_3dnow.o endif else @@ -267,14 +270,12 @@ cpuid.o: cpudtect.asm $(AS) -o $@ $(ASFLAGS) $< xdraw2_def.o: xdraw2.asm $(AS) -o $@ $(ASFLAGS) $< -xdraw3_def.o: xdraw3.asm - $(AS) -o $@ $(ASFLAGS) $< xdraw2_3dnow.o: xdraw2.asm $(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $< -xdraw3_3dnow.o: xdraw3.asm - $(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $< xtexdl_3dnow.o: xtexdl.asm $(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $< +xdrawtri.o: xdrawtri.asm + $(AS) -o $@ $(ASFLAGS) $< cpuid.lo: cpuid.o $(CP) $< $@ @@ -288,6 +289,8 @@ xdraw3_3dnow.lo: xdraw3_3dnow.o $(CP) $< $@ xtexdl_3dnow.lo: xtexdl_3dnow.o $(CP) $< $@ +xdrawtri.lo: xdrawtri.o + $(CP) $< $@ $(GLIDE_OBJECTS): fxinline.h fxgasm.h diff --git a/glide2x/h3/glide/src/xdrawtri.S b/glide2x/h3/glide/src/xdrawtri.S new file mode 100644 index 0000000..ffc4a7a --- /dev/null +++ b/glide2x/h3/glide/src/xdrawtri.S @@ -0,0 +1,38 @@ +/* + * THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY + * PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT + * TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX + * INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE + * DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com). + * THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A + * FULL TEXT OF THE NON-WARRANTY PROVISIONS. + * + * USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO + * RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN + * TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013, + * AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR + * SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF + * THE UNITED STATES. + * + * COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED + */ + +/* Adapted from gdraw.c:grDrawTriangle() for gas */ + +#include "fxgasm.h" + +.extern _GlideRoot + +.text + +.p2align 4,,15 +.globl grDrawTriangle +.type grDrawTriangle,@function +grDrawTriangle: +/*movl (_GlideRoot+curGC),%edx + movl kTriProcOffset(%edx),%eax*/ + movl (_GlideRoot + curGC),%eax + jmp *kTriProcOffset(%eax) + +.p2align 4,,15 diff --git a/glide2x/h3/glide/src/xdrawtri.asm b/glide2x/h3/glide/src/xdrawtri.asm new file mode 100644 index 0000000..767f417 --- /dev/null +++ b/glide2x/h3/glide/src/xdrawtri.asm @@ -0,0 +1,46 @@ +;; THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY +;; PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT +;; TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX +;; INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE +;; DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com). +;; THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +;; EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A +;; FULL TEXT OF THE NON-WARRANTY PROVISIONS. +;; +;; USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO +;; RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN +;; TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013, +;; AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR +;; SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF +;; THE UNITED STATES. +;; +;; COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED + +;; Adapted from gdraw.c:grDrawTriangle() for nasm + +%include "xos.inc" + +%include "fxgasm.h" + +extrn _GlideRoot + +segment SEG_TEXT + +align 16 +proc grDrawTriangle, 12 + +;;mov edx, dword [_GlideRoot+curGC] +;;mov eax, dword [edx+kTriProcOffset] + mov eax, dword [_GlideRoot+curGC] + jmp [eax + kTriProcOffset] +endp + align 16 + +%if XOS == XOS_WIN32 +%ifdef __MINGW32__ +; GNU LD fails with '_' prefix +export grDrawTriangle@12 +%else +export _grDrawTriangle@12 +%endif +%endif ; _WIN32