5457 Commits

Author SHA1 Message Date
Lioncash
aa92797f93 Merge pull request #1582 from Stevoisiak/newImprovedFormatting
More formatting and consistency fixes
2014-11-25 12:41:32 -05:00
James Cowgill
a93f86330e Port dolphin to SFML 2.1 2014-11-25 16:44:38 +00:00
comex
e631f68c1b Switch from deprecated Carbon idle tickling to Cocoa power assertions.
Also, this avoids keeping the system awake if a game is not being
played.

Frankly, I don't know what the point of precisely tracking these things
is, but that's how the API works.  Feel free to add analogous
functionality on other platforms.
2014-11-25 00:27:13 -05:00
Gabriel Corona
5b9aeaa686 Use CLI argument for Linux perf JIT support 2014-11-24 23:30:29 +01:00
Gabriel Corona
9722ae2a5d Move the JIT registration logic in its own file
Move the JITed function/basic-block registration logic out of the CPU
subsystem in order to add JIT registration to JITed DSP and
Video/VertexLoader code.

This necessary in order to add /tmp/perf-$pid.map support to other
JITed code as they need to write to the same file.
2014-11-24 23:18:18 +01:00
Gabriel Corona
cdce5ace25 Add Linux perf JIT support (/tmp/perf-$pid.map)
'perf' is the standard builtin tool for performance analysis on recent
Linux kernel. Its source code is shipped within the kernel repository.

'perf' has basic support for JIT. For each process, it can read a file
named /tmp/perf-$PID.map. This file contains mapping from address
range to function name in the format:

  41187e2a 1a EmuCode_804a33fc

with the following entries:

 1. beginning of the range (hexadecimal);
 2. size of the range (hexadecimal);
 3. name of the function.

We supply the PowerPC address of the basic block as function name.

Usage:

    DOLPHIN_PERF_DIR=/tmp dolphin-emu &
    perf record -F99 -p $(pgrep dolphin-emu) --call-graph dwarf
    perf script | stackcollapse-perf.pl | grep EmuCode__ | flamegraph.pl > profile.svg

Issue: perf does not have support for region invalidation. It reads
the file in postprocessing. It probably does not work very well if a
JIT region is reused for another basic block: wrong results should be
expected in this case. Currently, nothing is done to prevent this.
2014-11-24 23:18:18 +01:00
Stevoisiak
6da394a4d0 More formatting and consistency fixes 2014-11-24 17:16:59 -05:00
Rohit Nirmal
4d931c16ad Silence a few "zero as null pointer" warnings. 2014-11-24 12:36:46 -06:00
Jules Blok
6e62dd3415 Add stereoscopy hotkeys. 2014-11-23 14:30:12 +01:00
Ryan Houdek
e84999386b Merge pull request #1579 from Sonicadvance1/armv7-fastmem-rewrite
Rewrites ARMv7 fastmem entirely.
2014-11-21 14:54:05 -06:00
Ryan Houdek
bfbbddd76f Rewrites ARMv7 fastmem entirely.
This is a fairly lengthy change that can't be separated out to multiple commits well due to the nature of fastmem being a bit of an intertangled mess.
This makes my life easier for maintaining fastmem on ARMv7 because I now don't have to do any terrible instruction counting and NOP padding. Really
makes my brain stop hurting when working with it.

This enables fastmem for a whole bunch of new instructions, which basically means that all instructions now have fastmem working for them. This also
rewrites the floating point loadstores again because the last implementation was pretty crap when it comes to performance, even if they were the
cleanest implementation from my point of view.

This initially started with me rewriting the fastmem routines to work just like the previous/current implementation of floating loadstores. That was
when I noticed that the performance tanked and decided to rewrite all of it.

This also happens to implement gatherpipe optimizations alongside constant address optimization.

Overall this comment brings a fairly large speedboost when using fastmem.
2014-11-21 05:21:57 -06:00
Matthew Parlane
1f7dbbef07 Merge pull request #1567 from comex/remove-android-ndk-hack
Remove Android <ucontext.h> hack.
2014-11-21 19:56:28 +13:00
Matthew Parlane
21e4e035cc Merge pull request #1281 from Stevoisiak/RenameEuRGB60
Renamed EuRGB to PAL60
2014-11-21 19:09:42 +13:00
skidau
15e7a8c247 Merge pull request #1573 from kamiyo/fix-wiimote-speaker
Fix wiimotespeaker emulation affecting real wiimote
2014-11-21 13:13:21 +11:00
skidau
2968cb138c Fixed the fast disc speed option (immediately service the interrupt instead of going through the scheduler). 2014-11-20 18:23:05 +11:00
skidau
ba1a8d2ef3 Merge pull request #1517 from JosJuice/cav-disc-drive
DVDInterface: Timing accuracy improvements
2014-11-20 13:30:02 +11:00
Lioncash
ccebac8bcc Merge pull request #1456 from Stevoisiak/AddCountries
Additional Country Filters
2014-11-19 19:21:59 -05:00
Lioncash
19dabee326 Merge pull request #1568 from rohit-n/android-warnings
Android: Silence a few warnings.
2014-11-19 12:17:13 -05:00
kamiyo
e76e3b7390 Added condition so that function to mix wiimote-speaker data into the master mixer is called only if wiimote is emulated. 2014-11-19 01:28:11 -05:00
skidau
f5aed3d6c6 Merge pull request #1548 from skidau/region-australia
Added Australia to the list of valid PAL regions
2014-11-19 16:59:08 +11:00
Steven Vascellaro
695bbac36a Removed SDK flag
SDK is not an official Nintendo country code, and is not actually used
by any official software.
2014-11-18 19:44:17 -05:00
Stevoisiak
f1a26ff654 Various country flag improvements
* Added country flags for games from Netherlands and Spain
* Added separate category for Region Free games (Uses European flag as placeholder)
* Added missing country filter options in "show regions" menu
* Rearranged country filters for readability
* Incremented CACHE_REVISION

Also fixed various country filters not showing up as options in the "Show regions" menu.
2014-11-18 19:44:16 -05:00
Stevoisiak
e7a82c4ded Renamed EuRGB60 to PAL60 2014-11-18 16:51:21 -05:00
skidau
2affe25191 Merge pull request #1559 from Sonicadvance1/armv7-minor-optimizations
ARMv7 block profiling + minor optimization
2014-11-18 12:51:03 +11:00
Dolphin Bot
dced84d440 Merge pull request #1564 from RachelBryk/freelook
Make freelook hotkeys configurable.
2014-11-17 20:44:48 +01:00
Rohit Nirmal
8ec791c4f3 Android: Silence a few warnings. 2014-11-17 19:21:38 +00:00
Lioncash
f78600ec9e Merge pull request #1562 from lioncash/host
Host: Kill off GetRenderWindowSize
2014-11-17 13:51:40 -05:00
Lioncash
b94dbca160 Host: Kill off GetRenderWindowSize 2014-11-17 13:44:49 -05:00
comex
c5a25d56e0 Remove Android <ucontext.h> hack.
There was a longstanding hack that defined ucontext_t manually to work
around the lack of this header on the Android NDK.  However, it looks
like newer NDK versions now have it like good little POSIX boys, and my
recent header reshuffle broke the build on those versions, presumably
because the real and fake definitions of ucontext_t end up included in
the same file where they weren't under the old organization.

Rather than try to revert the conflict, this commit just removes the
hack.  The buildbot's NDK will need to be upgraded.
2014-11-17 13:29:04 -05:00
Ryan Houdek
f9208dcc13 Fixes ARMv7 FP loadstores using fastmem when not enabled. 2014-11-16 21:12:11 -06:00
Rachel Bryk
ea11c446c2 Make freelook hotkeys configurable. 2014-11-16 22:00:56 -05:00
JosJuice
091db36162 DVDInterface: Add a delay for commands other than regular reads
Behavior inspired by WII_IPC_HLE_Device_DI.
2014-11-16 21:29:40 +01:00
JosJuice
c6e695b245 DVDInterface: CAV disc drive
Changes the read speed of GC discs from 3 MiB/s to 2-3.3 MiB/s,
depending on the location of the data. I also attempted to change the
speeds for Wii discs, but it has very little effect right now because
Wii games use IPC_HLE instead of DVDInterface. It does affect Wii
homebrew that reads Wii discs, though.
2014-11-16 20:57:26 +01:00
comex
aa2fc1f66b Merge pull request #1449 from comex/memtools-merge
Reorganize faulting stuff.  Differentiate between arch- and OS-specific defines.
2014-11-16 13:46:33 -05:00
Ryan Houdek
30e1749d00 Implements block time profiling on ARMv7.
This was interesting implementing.
Our generic QueryPerformanceCounter function on ARMv7 was so slow that profiling a block was impossible.
I waited about five minutes and I couldn't even get a single frame to output.
This instead uses ARMv7's PMU to get cycle counts, which are a relatively minor performance drop in my testing.
One disadvantage of this method is that the kernel can lock us out of using these co-processor registers, but it seems to work on my Jetson board.
Another disadvantage is that we aren't having block times in "real" time but cycles instead, not too big of a deal.

This also removes instruction run counts from profiling because that's just annoying and we don't expose an interface for even getting those results
from our UI.
2014-11-16 09:29:27 +00:00
Ryan Houdek
6683b194ff ARMv7 register cache optimizations.
Enable support for not loading a destination register on FPR cache.
Dump registers if they won't be used later in the block. Stolen from Fiora.
2014-11-16 09:29:22 +00:00
Lioncash
3eab75bc9c Core: Join some variable declarations and assignments 2014-11-15 20:21:35 -05:00
Ryan Houdek
181f16c5f0 Reimplements fastmem for ARMv7 floating point loadstores.
This implements a new system for fastmem backpatching on ARMv7 that is less of a mindfsck to deal with.
This also implements stfs under the default loadstore path as well, not sure why it was by itself in the first place.

I'll be moving the rest of the loadstore methods over to this new way in a few days.
2014-11-15 21:17:50 +00:00
skidau
99141a2698 Added Australia to the list of valid PAL regions 2014-11-15 16:16:37 +11:00
comex
0cf8ab175b Fix UCodes.cpp to use UTF-8 encoding. 2014-11-14 11:53:56 -05:00
Ryan Houdek
b0becf7af8 Enables the ARMv7 FPR cache.
The problem instructions with the FPR are disabled in the previous commit. This can now be reenabled for fairly large performance gains.
2014-11-14 15:14:10 +00:00
Ryan Houdek
69c3e6516c Disables NEON optimized instructions.
These are causing issues in games. In particular you get pink on the screen in Animal Crossing.
Disable until fully investigated.

This also disables fastmem on floating point loadstore instructions which are horribly broken and won't actually backpatch when an invalid read/write
is encountered.
2014-11-14 15:13:13 +00:00
Stevoisiak
b25e1a2eb4 Various formatting and consistency fixes 2014-11-13 22:42:18 -05:00
skidau
b1f8974db8 Merge pull request #1527 from FioraAeterna/mftbfix
JIT: revert accuracy improvement to mftb
2014-11-13 12:11:13 +11:00
skidau
1095d3fc33 Merge pull request #1523 from FioraAeterna/fifo64
JIT: add 64-bit write support to FIFO functions and fix immediates
2014-11-12 12:12:16 +11:00
skidau
0cb9dcb5fc Merge pull request #1520 from JosJuice/dvdinterface-init
DVDInterface: Initialize variables
2014-11-12 12:11:03 +11:00
Fiora
4b105ed0e4 JIT: revert accuracy improvement to mftb
Fixes a few games (e.g. Karaoke Revolution Party) for reasons explained in the
comments.
2014-11-10 20:31:07 -08:00
Fiora
6603f98d04 JIT: add 64-bit write support to FIFO functions
Also fix 64-bit values passed to CallAC and otherwise correct immediate
handling in FIFO writes.
Fixes 007 Nightfire.
2014-11-09 21:24:30 -08:00
JosJuice
519d851bf8 DVDInterface: Initialize variables 2014-11-09 11:54:04 +01:00
skidau
c34c231df1 Merge pull request #1508 from skidau/emu-wiimote-speaker-sample-rate-zero
Ignore the emulated wiimotes speaker data if the sample rate is set at 0hz
2014-11-09 17:58:34 +11:00