• Sam Lantinga's avatar
    Fixed bug #15 · 3c69f946
    Sam Lantinga authored
    SDL_blit_A.mmx-speed.patch.txt --
            Speed improvements and a bugfix for the current GCC inline mmx
            asm code:
            - Changed some ops and removed some resulting useless ones.
            - Added some instruction parallelism (some gain)
            The resulting speed on my Xeon improved upto 35% depending on
            the function (measured in fps).
            - Fixed a bug where BlitRGBtoRGBSurfaceAlphaMMX() was
            setting the alpha component on the destination surfaces (to
            opaque-alpha) even when the surface had none.
    
    SDL_blit_A.mmx-msvc.patch.txt --
            MSVC mmx intrinsics version of the same GCC asm code.
            MSVC compiler tries to parallelize the code and to avoid
            register stalls, but does not always do a very good job.
            Per-surface blending MSVC functions run quite a bit faster
            than their pure-asm counterparts (upto 55% faster for 16bit
            ones), but the per-pixel blending runs somewhat slower than asm.
    
    - BlitRGBtoRGBSurfaceAlphaMMX and BlitRGBtoRGBPixelAlphaMMX (and all
    variants) can now also handle formats other than (A)RGB8888. Formats
    like RGBA8888 and some quite exotic ones are allowed -- like
    RAGB8888, or actually anything having channels aligned on 8bit
    boundary and full 8bit alpha (for per-pixel alpha blending).
    The performance cost of this change is virtually 0 for per-surface
    alpha blending (no extra ops inside the loop) and a single non-MMX
    op inside the loop for per-pixel blending. In testing, the per-pixel
    alpha blending takes a ~2% performance hit, but it still runs much
    faster than the current code in CVS. If necessary, a separate function
    with this functionality can be made.
    
    This code requires Processor Pack for VC6.
    
    --HG--
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401546
    3c69f946
Name
Last commit
Last update
build-scripts Loading commit data...
docs Loading commit data...
include Loading commit data...
src Loading commit data...
test Loading commit data...
.cvsignore Loading commit data...
BUGS Loading commit data...
Borland.html Loading commit data...
Borland.zip Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
CWprojects.sea.bin Loading commit data...
EpocBuildFiles.zip Loading commit data...
INSTALL Loading commit data...
MPWmake.sea.bin Loading commit data...
Makefile.dc Loading commit data...
Makefile.in Loading commit data...
Makefile.minimal Loading commit data...
PBProjects.tar.gz Loading commit data...
README Loading commit data...
README-SDL.txt Loading commit data...
README.AmigaOS Loading commit data...
README.BeOS Loading commit data...
README.CVS Loading commit data...
README.DC Loading commit data...
README.Epoc Loading commit data...
README.MacOS Loading commit data...
README.MacOSX Loading commit data...
README.MiNT Loading commit data...
README.NanoX Loading commit data...
README.OS2 Loading commit data...
README.PicoGUI Loading commit data...
README.Porting Loading commit data...
README.QNX Loading commit data...
README.Qtopia Loading commit data...
README.RISCOS Loading commit data...
README.WinCE Loading commit data...
README.wscons Loading commit data...
SDL.qpg.in Loading commit data...
SDL.spec.in Loading commit data...
TODO Loading commit data...
VisualC.html Loading commit data...
VisualC.zip Loading commit data...
VisualCE.zip Loading commit data...
Watcom-OS2.zip Loading commit data...
WhatsNew Loading commit data...
acinclude.m4 Loading commit data...
autogen.sh Loading commit data...
configure.in Loading commit data...
docs.html Loading commit data...
sdl-config.in Loading commit data...
sdl.m4 Loading commit data...