PCSX2 - The Playstation 2 Emulator
Go to file
cottonvibes 25e63c243d microVU:
- Fixed some logic for flag propagation. Its a 3% speedup in the titlescreen of GoW (68fps vs 66fps).
- Added a new mVU speedhack which should be very safe. Its a 7% speedup over the new code (73fps vs 68fps), so a 10% speedup over the last revision (73fps vs 66fps).

What the speedhack does:
The VUs have 3 separate flags: Status, Mac, and Clip flags.
Due to the VU's pipeline, there can be up to 4 live instances of these flags during emulation.
The tricky part arises when you're recompiling the end of a block (after a branch), then you must predict if another block will need older flag instances.
These can be accurately predicted in all cases except for indirect jumps, because the destination block is unknown at recompile time.
In this case mVU assumes the worst-case scenario, that all flag instances will be needed, so it performs some flag shuffling to prep the flag instances in such a way that the next block can read them nicely.
What the new "Block Hack" does, is it assumes that the old flag instances won't be needed, which eliminates a lot of flag shuffling causing a speedup.

Currently the Block Hack plays it very safe, in the case of the current block ending with an indirect jump, it still assumes the flag instances will be needed for the subsequent block, so it does nothing different there;
The times the speedhack actually does something is when your current block ends with a branch, and then the following block ends with an indirect jump (or similar cases). In these cases it would be very odd for future blocks to care about old flag instances from 2-blocks ago, which is why this speed hack should be very safe.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3298 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-06-25 06:28:23 +00:00
3rdparty [cmake]: 2010-06-22 13:30:36 +00:00
bin GameDB: 2010-06-25 02:54:54 +00:00
cmake [cmake] Fix a long standing typo 2010-06-23 15:45:05 +00:00
common Major header file house cleaning! Should speed up recompilation times by a few percents. 2010-06-25 02:35:27 +00:00
debian_unofficial [debian]: 2010-06-15 13:07:29 +00:00
fps2bios Removed all trailing whitespace in *.c *.cpp *.h because it irritates me. 2010-04-25 00:31:27 +00:00
nsis NSIS Installer: 2010-05-30 02:00:19 +00:00
pcsx2 microVU: 2010-06-25 06:28:23 +00:00
plugins GSdx and some other plugins no one cares about: remove ddraw.lib. 2010-06-25 02:36:21 +00:00
tools Removed from GSDX Build (VS2010 side) residues of CG/OpenGL/Glew etc... 2010-05-29 18:09:38 +00:00
CMakeLists.txt [cmake]: 2010-06-22 13:30:36 +00:00
build-plugins.sh Got rid of various obsolete files, and moved the codeblocks workspace file. 2009-09-09 10:02:12 +00:00
build.rb Fixed up the Linux build. A couple minor OnePad changes. 2009-07-11 17:21:23 +00:00
clean_msvc.cmd Minor fixes to selecting isos and changing cdvd source types. 2010-04-27 16:20:49 +00:00
detect_missing_file_in_cmake.sh cmake: Update some missing files. Compile Devel by default. 2010-05-22 05:07:07 +00:00
pcsx2-codeblocks.workspace Enable cpu detection in spu2-x. Link to the systems copy of zlib, rather then building a separate copy for pcsx2. 2010-05-12 11:25:30 +00:00
pcsx2_suite_2008.sln Screwed up my last i18n commit -- forgot that gettext/poedit needs explicit text literals to work from, so my pxE_* macros won't work. This version should be better. 2010-05-31 15:18:49 +00:00
pcsx2_suite_2010.sln Committing "blood's" work on building PCSX2 and plugins under msvc 2010. 2010-04-30 19:46:43 +00:00
rebuild.sh Correct the script, so that Linux is compilable. (If rebuild.sh is run before compiling.) 2009-09-07 00:50:36 +00:00