Commit Graph
100 Commits
Author SHA1 Message Date
Ryan Houdek 5dbfadaeaa Enables EFB copies by default on Android.
I was mistaken and only changed one line previously which didn't enable them by default.
This changes the default configuration to enable EFB copies and EFB to texture.
2014-10-30 07:43:14 -05:00
Ryan Houdek 52e6a940cf Merge pull request #1414 from kayru/d3d_optimization
D3D: Couple of small optimizations
2014-10-29 13:26:50 -06:00
Ryan Houdek 3dd574bcf6 Merge pull request #1438 from rohit-n/fix-pch
Fix build failing with PCH disabled.
2014-10-29 13:18:25 -06:00
Ryan Houdek bbaf8f9c0e Merge pull request #1434 from Sonicadvance1/fix-qualcomm
Fixes missing objects on Adreno hardware.
2014-10-29 10:38:23 -06:00
Ryan Houdek 6d4867e36a Fixes missing objects on Adreno hardware.
This particular bug from our friends over at Qualcomm manifests itself due to our alpha testing code having a conditional if statement in it.
This is a fairly recent breakage this time around, it was introduced in the v95 driver which comes with Android 5.0 on the Nexus 5.

So to break this issue down; In our alpha testing code we have two comparisons that happen and if they are true we will continue rendering, but if
they aren't true we do an early discard and return. This is summed up with a fairly simple if statement.

if (!(condition_1 <logic op> condition_2)) { /* discard and return */ }

This particular issue isn't actually due to the conditions within the if statement, but the negation of the result. This is the particular issue that
causes Qualcomm to fall flat on its face while doing so.

I've got two simple test cases that demonstrate this.
Non-working: http://hastebin.com/evugohixov.avrasm
Working: http://hastebin.com/afimesuwen.avrasm

As one can see, the disassembled output between the two shaders is different even though in reality it should have the same visual result.

I'm currently writing up a simple test program for Qualcomm to enjoy, since they will be asking for one when I tell them about the bug.
It will be tracked in our video driver failure spreadsheet along with the others.
2014-10-29 06:21:03 -05:00
Ryan Houdek 07a8b1b28f Merge pull request #1422 from randomstuff/fix-llvm
Fix LLVM
2014-10-27 18:58:10 -06:00
Ryan Houdek 81dda593cd Merge pull request #1404 from Sonicadvance1/fix-ARMv7
Fixes some ARMv7 regressions.
2014-10-27 05:15:17 -06:00
Ryan Houdek 043bd710a0 Merge pull request #1394 from Sonicadvance1/fix-arm-cpudetect
Fixes ARM CPU detection routine for the hardware.
2014-10-27 05:07:24 -06:00
Ryan Houdek acacbc0c46 Merge pull request #1412 from Sonicadvance1/fix-LLVM-detection
Fixes LLVM library detection.
2014-10-26 15:33:52 -06:00
Ryan Houdek bd1a192faf Fixes LLVM library detection.
I must have had a dirty cmake configuration which didn't encounter this issue.
Make sure we are using LLVM_DEFINITIONS to know where we are linking to libraries at.
Link against libLLVM-${VERSION}, the other one was linking us against static libraries...
2014-10-26 16:17:57 -05:00
Ryan Houdek 0fbd5248ca Fixes a potential crash on the ARMv7 JIT if someone disables the entire JIT in the debugger.
We can't disable branches in the JITs. Make sure they don't become disabled if someone tries to disable the full JIT.
2014-10-25 20:38:44 -05:00
Ryan Houdek 17f352e2aa Fixes some overzealous optimizations from ARMv7 BindToRegister.
We can't do it in rlw and friends.
subfx had an inccorect check.
Minor whitespace and reordering.
2014-10-25 20:36:29 -05:00
Ryan Houdek 484fc392d6 Fixes minor bug in the ARMv7 register cache.
Makes sure our register we are binding doesn't get unloaded immediately.
2014-10-25 20:34:11 -05:00
Ryan Houdek 10c3896421 Merge pull request #1399 from dolphin-emu/revert-1389-remove-armv7-opt
Revert "Removes ARMv7 specific byteswap routines from CommonFuncs.h"
2014-10-25 15:28:13 -05:00
Ryan Houdek 3ac2d8e1f1 Revert "Removes ARMv7 specific byteswap routines from CommonFuncs.h" 2014-10-25 15:28:04 -05:00
Ryan Houdek c2364a54c1 Fixes packaging OS X binary with spaces in the directory name. 2014-10-25 10:51:54 -05:00
Ryan Houdek b66a7f83c2 Fixes ARM CPU detection routine for the hardware.
We weren't dropping a newline character from the string, we were cutting off the last character of the hardware name.
This fixes my TK1 being called 'lagun' when it's name is 'laguna'
2014-10-25 09:14:14 -05:00
Ryan Houdek e780a49a06 Merge pull request #1375 from Sonicadvance1/ARMv7-optimizations
Minor ARMv7 JIT recompiler optimizations.
2014-10-25 08:28:10 -05:00
Ryan Houdek cb10bef9a4 Implements LLVM based disassembler for the debugger.
This will work for all of our platforms, x86, ARMv7, and AArch64.
Main issue with this is that LLVM's cmake files aren't correctly finding the LLVM install.
Not sure if this is Ubuntu's issue or not, it may just work on other operating systems.

We could potentially improve this, you can pass in a specific CPU in to the LLVM disassembler. This would probably affect latency times that are
reported by LLVM's disassembly? This needs to be further investigated later.
2014-10-24 18:10:21 -05:00
Ryan Houdek eb432563d2 Removes unused cmake script for finding GLEW. 2014-10-24 17:28:34 -05:00
Ryan Houdek 6483f8d45c Removes ARMv7 specific byteswap routines from CommonFuncs.h
GCC has optimized this using the exact same code since 4.7 or 4.8.
Android building falls back to the __linux__ route.
No need to keep these around anymore since we aren't building on an old GCC version.
2014-10-24 16:21:54 -05:00
Ryan Houdek 5204acd5ee Fixes OpenSLES's sample rate.
I was statically setting the sample rate to 44.1Khz when we default to run at 48Khz.
This was causing audio to sound much too low.
2014-10-23 11:29:49 -05:00
Ryan Houdek 5bb19426b3 Optimizes instructions in ARMv7's JIT inside of the arith function.
For instructions where the second immediate value fits within an instruction encoding, just encode it directly in to the instruction.
2014-10-23 15:42:57 +00:00
Ryan Houdek 6743d6ef1f Adds support back for non-immediate cmp/cmpi to ARMv7 JIT. 2014-10-23 15:39:09 +00:00
Ryan Houdek 0253c35d3a Adds support to ARMv7's register cache for not loading a destination register prior to overwriting.
This extends the register cache's BindToRegister function with a doLoad argument just like x86's.
The speedup is minor for these implemented integer instructions.
2014-10-23 15:38:56 +00:00
Ryan Houdek 2f48d71ddf Merge pull request #1371 from Sonicadvance1/GLES31-EarlyZ
Enables EarlyZ support in OpenGL ES 3.1.
2014-10-23 10:26:12 -05:00
Ryan Houdek ec56c3b8d3 Fixes black screen issue on EGL+X11 systems.
We weren't setting the backbuffer dimensions on this platform when the window is created.
This required a resize event to first be fired in order to see anything.

So instead do like GLX + X11 platforms do and query the dimensions and set the backbuffer to them.

Should fix issue 7666.
2014-10-23 08:06:42 -05:00
Ryan Houdek a2c8783417 Enables EarlyZ support in OpenGL ES 3.1. 2014-10-23 07:34:07 -05:00
Ryan Houdek 2a1d4a7245 Removes some terrible printf debugging that was left over in the ARMv7 JIT. 2014-10-23 06:08:49 -05:00
Ryan Houdek 50135a988e Enables block profiling in the UI on non x86 targets.
ARMv7 supports block profiling as well. So let's stop artificially limiting here.
2014-10-23 05:59:14 -05:00
Ryan Houdek ce3a039eed Merge pull request #1362 from chrisballinger/10.10-opengl-build-fix
Fix OpenGL linker error on Yosemite
2014-10-22 03:20:03 -05:00
Ryan Houdek ecf65d6f1f Cleans up the JIT block viewer in the WX UI.
This code was an absolute mess. It had allocated an arbitrarily large string buffer to hold instructions that were disassembled.

Strip out all of the nasty raw C string manipulation and replaces it with ostringstream usage.
Fixes an issue where if you didn't have a JIT recompiler running then Dolphin would instantly crash if you tried comparing PPC to x86 code.
Changed the disassembly of the host side code from being inline to the function to instead being in a class, this will be required when I add support
for ARMv7 and AArch64 to this window.
2014-10-21 12:27:59 -05:00
Ryan Houdek 2e94814441 Changes from ARMv6 NOP to ARMv7 NOP.
Dolphin doesn't support ARMv6. Get this out of here.
2014-10-21 14:17:07 +00:00
Ryan Houdek b3a79f00d4 Removes Android cmake option.
We auto detect if we are building for Android. No need to have this option.
2014-10-21 08:47:25 -05:00
Ryan Houdek a22fcf152d Disable the fake vmem hack on 32bit targets.
This hack is incompatible with these targets due to how much memory space we allocate.
2014-10-21 12:56:28 +00:00
Ryan Houdek 77da164fe2 Adds support for stepping in the ARMv7 JIT. 2014-10-21 12:53:59 +00:00
Ryan Houdek 85605389d7 Don't enable stepping on ARMv7 JIT core if just in the debugger.
Also makes sure we aren't profiling CPU run times unless we are actually profiling.
2014-10-21 07:51:25 -05:00
Ryan Houdek b769331f50 Merge pull request #1325 from Sonicadvance1/Android-OpenSLES-race
Fix a race condition in our OpenSL ES audio backend.
2014-10-19 08:53:19 -05:00
Ryan Houdek 939fa492c8 Merge pull request #1323 from Sonicadvance1/Android-crash
Fix a crash on Android when unplugging a controller during emulation.
2014-10-19 08:48:52 -05:00
Ryan Houdek b3cee80faa Merge pull request #1321 from Sonicadvance1/Qualcomm-v95
Change driver details to reflect Qualcomm's changes with their v95 driver
2014-10-19 08:48:42 -05:00
Ryan Houdek e236d28585 Remove a hard dependency from libGL from the software renderer.
I must have missed this when dropping OpenGL library includes. This is annoying when on a system that doesn't have libGL.
2014-10-19 07:48:14 -05:00
Ryan Houdek 821a41e62f Remove hard dependency of GLX from Dolphin with X11.
This is particularly annoying on a EGL only system that doesn't have GLX.
2014-10-19 07:48:11 -05:00
Ryan Houdek 73512ad38f Fix a race condition in our OpenSL ES audio backend.
After calling enqueue the callback would fire before we had assigned g_mixer a value.
This would cause a fun crash to happen.
2014-10-18 08:32:14 -05:00
Ryan Houdek ceb08acf23 Fix a crash on Android when unplugging a controller during emulation.
If the action we are getting is a ACTION_CANCEL, it means that the "gesture" is aborted and we shouldn't perform any more actions on it.
2014-10-18 07:33:51 -05:00
Ryan Houdek 9108a11af4 Change driver details to reflect Qualcomm's changes with their v95 driver.
They fixed their issues with dynamic UBO array member access.
There are many other issues though.
2014-10-18 02:50:57 -05:00
Ryan Houdek 0a0183ee44 Add AArch64 JIT recompiler to wxWidgets UI.
This also fixes an issue where it would show the ARMv7 JIT recompiler on AArch64, also the issue of showing the now non-existant ARM JITIL.
Also fixes an issue where it would show the x86 JIT recompilers on a non ARM platform.
2014-10-12 22:49:07 -05:00
Ryan Houdek f6233cd531 Merge pull request #1254 from RachelBryk/unicode
Replace wxFileExists() with File::Exists().
2014-10-10 17:35:22 -05:00
Ryan Houdek 5c1acc99fb Merge pull request #1255 from dolphin-emu/x64-emitter-minor
Add a few missing instructions to the x64 emitter
2014-10-10 15:36:11 -05:00
Ryan Houdek e315cd41a2 Merge pull request #1246 from FioraAeterna/fixblocklinkingagain
JIT: fix accidental disabling of block linking by default
2014-10-09 14:06:17 -05:00
Ryan Houdek 2423b9b2bd Merge pull request #1237 from Sonicadvance1/fix-ARM32-XER
Fix ARMv7 JIT from XER optimization.
2014-10-07 21:56:36 -05:00
Ryan Houdek 5f0011d065 Fix ARMv7 JIT from XER optimization.
This was a subtle bug I introduced since I removed a LDR in one of the ComputeCarry functions.
Basically since I wasn't loading the XER value prior to operations when I did a BIC tmp, tmp, 1 it would clear the first bit in our temp register but
retain the rest of the "random" data from that temp register. This would then save in to xer_ca, which the Interpreter will use later without any
masking to generate the XER value. Our XER generation helper functions don't do any masking since they were only expecting a single bit worth of data
in xer_ca with the rest being zero.
So now we only have one bit of data being stored in xer_ca from the ARMv7 JIT recompiler, and also a slight optimization in the ComputeCarry function
that is used on the immediate path. There wasn't any reason to load xer_ca since it only contains one bit of data now.
2014-10-07 21:43:15 -05:00
Ryan Houdek 0a1855d2ca Merge pull request #1158 from comex/its-like-i-have-it-out-for-jitil-or-something
Fix fastmem in JitIL after 755bd2c4.
2014-09-25 16:12:04 -05:00
Ryan Houdek 0b6ec44e42 Merge pull request #1070 from FioraAeterna/optimizeca4
JIT: Reorganize carry to store flags separately instead of part of XER
2014-09-24 14:31:58 -05: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
Ryan Houdek 7f1185b941 Merge pull request #1140 from lioncash/android
Android: Silence a few warnings
2014-09-22 16:20:53 -05:00
Ryan Houdek 9206dd016e Merge pull request #1135 from FioraAeterna/twidisasmfix
Disassembler: fix disassembly of some twi instructions
2014-09-21 14:19:05 -05:00
Ryan Houdek 1cb07ffc14 [AArch64] Implement twi and tw. 2014-09-21 14:17:04 -05:00
Ryan Houdek 078147d424 [AArch64] Implement mfmsr 2014-09-21 07:38:21 -05:00
Ryan Houdek 9530800fd0 [AArch64] Implement mtsprin and mfsprin 2014-09-21 07:38:16 -05:00
Ryan Houdek 2bcea19492 [AArch64] Implement mtsr and mfsr 2014-09-21 07:36:14 -05:00
Ryan Houdek 0f8c5bda40 [AArch64] Implement mcrf. 2014-09-20 21:19:25 -05:00
Ryan Houdek e708e8d5a0 [AArch64] Implement negx. 2014-09-20 16:17:16 -05:00
Ryan Houdek 75590a99cb [AArch64] Implement cntlzwx. 2014-09-20 14:52:56 -05:00
Ryan Houdek 76d2f331f0 [AArch64] Implement extshx and extsbx. 2014-09-20 14:46:53 -05:00
Ryan Houdek 9d7598266f Change the QGR union over to a BitField union.
Makes it easier to generate a QGR in my unit test, cleaner overall of course.
2014-09-20 13:15:44 -05:00
Ryan Houdek a829e596c7 Merge pull request #1121 from FioraAeterna/fixfsel
JIT: fix fsel/ps_sel implementations for NaN input
2014-09-20 12:40:55 -05:00
Ryan Houdek 2db7413a19 Merge pull request #1118 from lioncash/lolwinapi
FrameTools: Set focus on Windows via CFrame::SetFocus
2014-09-19 20:48:27 -05:00
Ryan Houdek eb23882398 Merge pull request #1120 from rohit-n/muh-precompiled-headers
Fix build failing when disabling precompiled headers.
2014-09-19 17:43:42 -05:00
Ryan Houdek d7b40fa94c Merge pull request #1119 from FioraAeterna/bytereverse
JIT: support byte-reversed stores/loads
2014-09-19 15:54:27 -05:00
Ryan Houdek 2e1377ab7e Merge pull request #1107 from FioraAeterna/opcodesearch
Debugger: make opcode search a bit better
2014-09-19 15:50:54 -05:00
Ryan Houdek 235546bf94 Merge pull request #1113 from Sonicadvance1/AArch64-integer-ops
[AArch64] Implement a bunch of integer instructions
2014-09-19 15:47:23 -05:00
Ryan Houdek bdca720e33 Fix some indention on AArch64 JIT. 2014-09-19 15:23:21 -05:00
Ryan Houdek 47e47891d4 [AArch64] Implement a bunch of integer instructions
16 new instructions for AArch64.
2014-09-19 15:23:21 -05:00
Ryan Houdek 5671530026 Merge pull request #1101 from FioraAeterna/fixfallbacks
JIT: simpler fallback conditions for load/store float
2014-09-19 15:23:01 -05:00
Ryan Houdek 5b4aa1d6d4 Merge pull request #1123 from FioraAeterna/eieio
JIT: change eieio and tlbsync to DoNothing
2014-09-19 15:19:41 -05:00
Ryan Houdek 7cc586d615 Merge pull request #1100 from FioraAeterna/psq_insts
JIT: implement remaining psq_l/st instruction variants
2014-09-19 15:16:44 -05:00
Ryan Houdek 522d7eb275 Merge pull request #1109 from FioraAeterna/ps_cmp
JIT: add ps_cmp0/ps_cmp1/ps_res/ps_rsqrte
2014-09-19 14:41:05 -05:00
Ryan Houdek 526e92464b Merge pull request #1103 from FioraAeterna/floatconstnaming
JIT: rename a few constants to be more accurate
2014-09-19 13:21:06 -05:00
Ryan Houdek af25b15348 Merge pull request #977 from Sonicadvance1/xfb-scaling-rebased
XFB Scaling
2014-09-19 12:54:19 -05:00
Ryan Houdek c5f9301e6e Add a comment to the software renderer that stride should be implemented 2014-09-19 12:33:15 -05:00
Ryan Houdek 0d1c1e9477 Merge pull request #1122 from Sonicadvance1/Android-reduce-confusion
Show OpenGL or OpenGL ES on Android depending on what the device supports
2014-09-19 09:21:58 -05:00
Ryan Houdek e18860830a Show OpenGL or OpenGL ES on Android depending on what the device supports.
Reduces confusion for the users
2014-09-19 09:21:16 -05:00
Ryan Houdek d544c563ea Merge pull request #1112 from Sonicadvance1/AArch64-mov-aliases
Add AArch64 emitter aliases for MOV and MVN.
2014-09-19 09:19:33 -05:00
Ryan Houdek ec310811a8 Merge pull request #1114 from Sonicadvance1/AArch64-fix-build
Fix AArch64 JIT compiling.
2014-09-19 09:19:25 -05:00
Ryan Houdek a8abbdae85 Merge pull request #1106 from FioraAeterna/fixdebug2
JIT: fix debug mode
2014-09-18 19:52:35 -05:00
Ryan Houdek f709dda6aa Fix AArch64 JIT compiling. 2014-09-18 16:50:49 -05:00
Ryan Houdek 7608e3f11e Add AArch64 emitter aliases for MOV and MVN. 2014-09-18 16:30:40 -05:00
Ryan Houdek e9164247d6 Merge pull request #1108 from FioraAeterna/fixdebugscroll
Debugger: scroll by multiples of 4 bytes
2014-09-18 06:52:44 -05:00
Ryan Houdek d54c8eb6bf Merge pull request #1098 from FioraAeterna/cvtsi2ss
JIT: use cvtsi2ss in paired singles
2014-09-18 06:51:37 -05:00
Ryan Houdek 0294b344e2 Merge pull request #1086 from FioraAeterna/fixsrawint
Interpreter: fix carry calculation in srawx
2014-09-18 06:41:37 -05:00
Ryan Houdek 68b2d86daf Merge pull request #1088 from FioraAeterna/revert-1077-integeropts2
Revert "Two small JIT optimizations"
2014-09-15 09:03:16 -05:00
Ryan Houdek 20af50b1c4 Merge pull request #1077 from FioraAeterna/integeropts2
Two small JIT optimizations
2014-09-15 07:09:11 -05:00
Ryan Houdek 8605a38ba4 Merge pull request #1084 from waddlesplash/stupid-externals
PolarSSL: don't install stuff.
2014-09-14 13:42:37 -05:00
Ryan Houdek 4e7f284a81 Merge pull request #1064 from Sonicadvance1/AArch64-Fix-MOVI2R
Fix AArch64 MOVI2R helper function.
2014-09-14 09:26:02 -05:00
Ryan Houdek 4e16abd742 Merge pull request #1083 from FioraAeterna/lzcnt
Add LZCNT support, use in cntlzw
2014-09-14 09:18:10 -05:00
Ryan Houdek 1f7871f9e2 Merge pull request #1082 from FioraAeterna/fixccagain
JIT: fix JIT with conditional continue off, again
2014-09-14 03:22:03 -05:00
Ryan Houdek a30b4f13a1 Merge pull request #1067 from lioncash/fallthrough
DolphinWX: Get rid of fallthrough in ScanForISOs
2014-09-13 04:52:30 -05:00
Ryan Houdek c9a7175418 Merge pull request #1072 from lioncash/arm
ARM64: Make getters within ArithOption const.
2014-09-12 21:44:01 -05:00
Ryan Houdek e883a6fb2e Fix all the current issues with the AArch64 register cache.
Fixes all the current issues I've been experiencing.
Scaled back the register cache idea for now so I can actually work on some real instructions.

Tested this work with unit tests so I know it works.
Unit tests are pretty great things.
2014-09-12 06:39:15 -05:00
Ryan Houdek 17d31ecd6c Fix AArch64 MOVI2R helper function.
In the case of a zero immediate, it wouldn't generate code at all.
Also in the case of max u32/u64, use ORN to optimize it.
2014-09-12 05:45:10 -05:00