Pierre Bourdon 3990002250 Optimize JitCache::InvalidateICache by maintaining a "valid blocks" bitset
Most of the InvalidateICache calls are for a 32 bytes block: this is the
number of bytes invalidated by PowerPC dcb*/icb* instructions. Profiling
shows that a lot of CPU time is spent checking if there are any JIT blocks
covered by these 32 bytes (using std::map::lower_bound).

This patch adds a bitset containing the state of every 32 bytes block in
RAM (JIT cached/not JIT cached). Using that, a 32 bytes InvalidateICache
can check in the bitset if any JIT block might be invalidated. A bitset
check is a lot faster than an std::map::lower_bound operation, improving
performance of JitCache::InvalidateICache by more than 100%.

Some practical numbers:

* Xenoblade Chronicles (PAL)
  56.04FPS -> 59.28FPS (+5.78%)
* The Last Story (PAL)
  30.9FPS -> 32.83FPS (+6.25%)
* Super Mario Galaxy (PAL)
  59.76FPS -> 62.46FPS (+4.52%)

This function still takes more time than it should - more optimization in
this area might be possible (specializing for 32 bytes blocks to avoid
useless memcpy, for example).
2012-10-06 01:49:09 +02:00
2012-03-25 12:55:02 -07:00
2012-06-26 20:05:11 -05:00
Hg:
2010-06-09 01:37:08 +00:00
2008-12-01 09:49:24 +00:00

Dolphin-emu - The Gamecube / Wii Emulator
==========================================
Homesite: http://dolphin-emulator.com/
Project Site: http://code.google.com/p/dolphin-emu

Dolphin-emu is a emulator for Gamecube, Wii, Triforce that lets
you run Wii/GCN/Tri games on your Windows/Linux/Mac PC system.

Open Source Release under GPL 2

Project Leaders: F|RES, ector

Team members: http://code.google.com/p/dolphin-emu/people/

Please read the FAQ before use:

http://code.google.com/p/dolphin-emu/wiki/Facts_And_Questions

System Requirements:
* OS: Microsoft Windows (2000/XP/Vista or higher) or Linux or Apple Mac OS X.
* Processor: Fast CPU with SSE2 supported (recommended at least 2Ghz).
  Dual Core for speed boost.
* Graphics: Any graphics card that supports Direct3D 9 or OpenGL 2.1.

[Command line usage]
Usage: Dolphin [-h] [-d] [-l] [-e <str>] [-b] [-V <str>] [-A <str>]
  -h, --help                	Show this help message
  -d, --debugger            	Opens the debugger
  -l, --logger              	Opens the logger
  -e, --exec=<str>          	Loads the specified file (DOL,ELF,WAD,GCM,ISO)
  -b, --batch             	Exit Dolphin with emulator
  -V, --video_backend=<str>  	Specify a video plugin
  -A, --audio_emulation=<str>  	Low level (LLE) or high level (HLE) audio

[Libraries]
Cg: Cg Shading API (http://developer.nvidia.com/object/cg_toolkit.html)
*.pdb = Program Debug Database (use these symbols with a program debugger)

[DSP Plugins]
Plugin_DSP_HLE: High Level DSP Emulation
Plugin_DSP_LLE: Low Level DSP Emulation

[Video Backends]
Direct3D9: Render with Direct3D 9
Direct3D11: Render with Direct3D 11
OpenGL: Render with OpenGL + Cg Shader Language

[Sys Files]
totaldb.dsy: Database of symbols (for devs only)
font_ansi.bin/font_sjis.bin: font dumps
setting-usa/jpn/usa.txt: config files for Wii

[Support Folders]
Cache: used to cache the ISO list
Config: emulator configuration files
Dump: anything dumped from dolphin will go here
GC: Gamecube memory cards
GameConfig: holds the INI game config files
Load: high resolution textures
Logs: logs go here
Maps: symbol tables go here (dev only)
OpenCL: OpenCL code
ScreenShots: screenshots are saved here
Shaders: post-processing shaders
StateSaves: save states are stored here
Wii: Wii saves and config is stored here
Description
Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.
Readme 1.8 GiB
Languages
C++ 88.6%
Kotlin 4.9%
C 2.3%
CMake 1.2%
Objective-C++ 1%
Other 1.7%