Commit Graph

12642 Commits

Author SHA1 Message Date
comex f0131c2e09 Mechanical changes to move most CP state to a struct rather than separate globals.
The next commit will add a separate copy of the struct and the ability
for LoadCPReg to work on it.
2014-09-28 21:23:29 -04:00
comex 90638c6806 Switch to an unordered_map as a micro-optimization. 2014-09-28 21:23:29 -04:00
comex f8452ff501 Fix threading issue with vertex loader JIT.
VertexLoader::VertexLoader was setting loop_counter, a *static*
variable, to 0.  This was nonsensical, but harmless until I started to
run it on a separate thread, where it had a chance of interfering with a
running vertex translator.

Switch to just using a register for the loop counter.
2014-09-28 21:23:28 -04:00
comex 63c62b277d Some changes to VertexLoaderManager:
- Lazily create the native vertex format (which involves GL calls) from
RunVertices rather than RefreshLoader itself, freeing the latter to be
run from the CPU thread (hopefully).

- In order to avoid useless allocations while doing so, store the native
format inside the VertexLoader rather than using a cache entry.

- Wrap the s_vertex_loader_map in a lock, for similar reasons.
2014-09-28 21:23:28 -04:00
shuffle2 431fb4d82a Merge pull request #1172 from shuffle2/qt-build-spaces
Fix QtCompile.props to work if the repo path contains spaces.
2014-09-28 02:50:22 -07:00
Shawn Hoffman 9fe2d45ad4 Fix QtCompile.props to work if the repo path contains spaces. 2014-09-27 23:08:18 -07:00
Lioncash ee076453ce Merge pull request #1171 from lioncash/loop
DSPJitRegCache: Merge two loops in popRegs.
2014-09-28 02:07:44 -04:00
skidau 6bea53ab11 Clean-up the leftover dspARAMAddresses code that was no longer needed. 2014-09-28 15:38:35 +10:00
skidau baeca3e03b Merge pull request #1170 from lioncash/bounds
SI: Fix bounds check in GetDeviceType
2014-09-28 14:57:38 +10:00
skidau 275226c2b6 Merge pull request #1147 from RachelBryk/unicode-tex
Allow custom textures to load from unicode paths.
2014-09-28 14:54:56 +10:00
skidau afccf2276d Merge pull request #1012 from skidau/aram-dma-exceptions
Compile the ARAM DMA exception checks into the JIT block
2014-09-28 14:48:38 +10:00
Fiora 3878187721 Interpreter: remove debug printf in psq_l 2014-09-27 20:44:45 -07:00
skidau 7184019090 Increased the savestate internal version.
Added a small note for instant dma.
2014-09-28 11:51:14 +10:00
Lioncash 8b578c7ba3 DSPJitRegCache: Merge two loops in popRegs. 2014-09-27 18:33:48 -04:00
Lioncash 1c42fd9928 SI: Fix bounds check in GetDeviceType 2014-09-27 16:44:21 -04:00
skidau 86b6dfe4b3 Added a instant ARAM DMA mode which is enabled automatically when required.
Detects a situation where the game is writing to the dcache at the address being DMA'd. As we do not have dcache emulation, invalid data is being DMA'd causing audio glitches. The following code detects this and enables the DMA to complete instantly before the invalid data is written.
Added accurate ARAM DMA transfer timing.
Removed the addition of DSP exception checking.
2014-09-27 20:47:29 +10:00
skidau 4b37fdfa45 Added a CompileExceptionCheck function to the JitInterface and re-routed the existing code to utilise the interface. 2014-09-27 20:16:26 +10:00
skidau 945d431171 Added OPTYPE_LOADPS and OPTYPE_STOREPS instruction types to the PPC table.
Updated ARAM DMA and FIFO write exception checking to uses these types.

Conflicts:
	Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp
	Source/Core/Core/PowerPC/PPCTables.h
2014-09-27 20:16:26 +10:00
skidau 0f256715e0 Re-added the ARAM DMA exception check. This fixes the audio cutting in and out of Resident Evil 2 and 3. Removed the special case for short transfers as it is no longer required. 2014-09-27 20:16:26 +10:00
skidau d09e2abb0d Compile the ARAM DMA exception checks into the JIT block in a similar style to FIFO writes. This ensures that the ARAM DMA is handled soon after the DMA completes. Fixes issue 7122 and issue 7342. 2014-09-27 20:16:25 +10:00
skidau 23e2301223 Merge pull request #1154 from skidau/undeclared-uv0-fix
Fixed the "Undeclared identifier: uv0" OpenGL shader compile error that appears in NBA2K11.
2014-09-27 13:25:16 +10:00
skidau f5bbfa139d Merge pull request #1146 from RachelBryk/netplay-input-display
Make input display work properly with netplay.
2014-09-27 13:25:01 +10:00
Fiora ba39c35f24 JIT: fix branch merging, take 2
NOT doesn't set flags.
2014-09-25 22:33:40 -07:00
skidau 30d77b38c5 Merge pull request #1127 from Sonicadvance1/QGR-BitField
Change the QGR union over to a BitField union.
2014-09-26 14:53:24 +10:00
skidau 9d746b89a2 Merge pull request #1162 from FioraAeterna/fixmerges
JIT: fix bugs with ComputeRC in branch merging patch
2014-09-26 14:46:53 +10:00
Fiora f9ab25152c JIT: fix bugs with ComputeRC in branch merging patch
We really, really need to be sure the input to ComputeRC is a register.
2014-09-25 21:45:25 -07:00
skidau 146725f64a Merge pull request #1125 from Sintendo/fresjumps
Change fres/frsqrte jumps
2014-09-26 14:45:19 +10:00
comex fb3d9c9d58 Fix warning in x64CPUDetect.cpp in generic build by not building it. 2014-09-25 18:48:00 -04:00
comex 9cdd842080 Add a fake SContext definition for _M_GENERIC. 2014-09-25 18:47:34 -04:00
comex 8dccb0c743 Fix fastmem in JitIL after 755bd2c4.
That commit reorganized fastmem a bit; I wrote it before the patch to
support fastmem in JitIL landed, and forgot to edit it to account for
the fact.  Since JitILBase now derives from Jitx86Base, the HandleFault
override can just be removed.
2014-09-25 01:15:58 -04:00
skidau c41f76e774 Merge pull request #1148 from lioncash/typo
ISOProperties: Fix typo in the tooltip for manual config editing.
2014-09-25 13:49:39 +10:00
skidau 6d064b0406 Merge pull request #1126 from lioncash/delete
DolphinWX: Get rid of an explicit delete in OnExportSave
2014-09-25 13:44:21 +10:00
Sintendo 29cca5c84f Change fres/frsqrte jumps 2014-09-24 21:58:01 +02:00
Fiora bfab5f1e91 JIT: generic branch merging
Why merge just cmps and rlwinm when we can merge ALL the branches?
2014-09-24 12:34:18 -07:00
Ryan Houdek 76697922b4 Implement XER optimization on ARMv7 JIT core
Not completely optimized; there's room for improvement here.
2014-09-24 12:27:54 -07:00
Fiora 5fce109ce1 Reorganize carry to store flags separately instead of part of XER
Also correct behavior with regards to which bits in XER are treated as zero
based on a hwtest (probably doesn't affect any real games, but might as well
be correct).
2014-09-24 12:27:47 -07:00
skidau 788a719718 Merge pull request #1153 from skidau/twx-bindtoreg
Replaced KillImmediate with BindToRegister in the tw instruction.
2014-09-24 13:31:44 +10:00
skidau a83792e914 Merge pull request #1074 from FioraAeterna/earlyflush
JIT: flush a register if it won't be used for the rest of the block
2014-09-24 13:30:02 +10:00
skidau 539f270c67 Added a xf.numtexgen != bp.numtextgen error log if there is a mismatch detected. 2014-09-24 10:46:09 +10:00
skidau b4399dbdf3 Fixed the "Undeclared identifier: uv0" OpenGL shader compile error that appears in NBA2K11. 2014-09-24 00:10:45 +10:00
Lioncash bdd1853586 Merge pull request #1149 from rohit-n/android-warnings
Android: Silence some more warnings.
2014-09-23 07:51:14 -04:00
skidau 65eb0ff2fe Replaced KillImmediate with BindToRegister in the tw instruction. Fixes the error "WriteNormalOp - a1 and a2 cannot both be memory" which appeared on starting Monopoly Streets. 2014-09-23 18:00:41 +10:00
skidau cbf102794e Merge pull request #1130 from Sonicadvance1/AArch64-jit-extXx
[AArch64] Implement instructions.
2014-09-23 13:52:30 +10:00
skidau fb18d5376f Merge pull request #1142 from lioncash/linucks
Fix some warnings on Linux
2014-09-23 13:43:18 +10:00
Fiora 88f2fbe1a4 JIT: fix merged bclr with comex's BLR optimizations 2014-09-22 18:22:31 -07:00
Fiora f103234e2b JIT: flush a register if it won't be used for the rest of the block
This should dramatically reduce code size in the case of blocks with
lots of branches, and certainly doesn't hurt elsewhere either.

This can probably be improved a good bit through smarter tracking of register
usage, e.g. discarding registers that are going to be overwritten, but this
is a good start and should help reduce code size and register pressure.
Unlike that sort of change, this is a "safe" patch; it only flushes registers,
which can't affect correctness, unlike actually discarding data.

As part of this, refactor PPCAnalyst to support distinguishing between
float and integer registers (to properly handle instructions that access
both, like floating-point loads and stores).

Also update every instruction in the interpreter flags table I could find
that didn't have all the correct flags.
2014-09-22 16:00:25 -07:00
Rohit Nirmal 3168361e32 Android: Silence some more warnings. 2014-09-22 17:45:42 -04:00
Ryan Houdek 7f1185b941 Merge pull request #1140 from lioncash/android
Android: Silence a few warnings
2014-09-22 16:20:53 -05:00
Lioncash 874f5eb1ad ISOProperties: Fix typo in the tooltip for manual config editing. 2014-09-22 13:45:28 -04:00
Rachel Bryk e4d71f36b1 Make input display work properly with netplay. 2014-09-22 12:56:35 -04:00