Commit Graph
100 Commits
Author SHA1 Message Date
Ryan Houdek f18c461fd6 [viewport-float] Fix OpenGL ES 3 build. 2013-10-29 17:10:02 +00:00
Ryan Houdek 187827624f [Android] 0.12 release. 2013-10-21 12:09:15 -05:00
Ryan Houdek e3febb1603 [Android] Fix MIPS compiling. 2013-10-21 09:52:43 -05:00
Ryan Houdek 887f8e463d [Android] Fix MIPS compiling. 2013-10-21 09:43:19 -05:00
Ryan Houdek aa713e11f7 [Android] Fix Build. 2013-10-21 09:36:40 -05:00
Ryan Houdek f0bf5aa113 Fix rendering on Adreno and Mali. This adds a new DriverDetails bug to know if the bufferstreaming is broken. Thanks degasus for fixing this. 2013-10-16 11:27:58 +00:00
Ryan Houdek 2f0aca2055 [ARM] Fix the JITILArm and JITArm dispatchers from comex's recent changes. 2013-10-12 08:30:26 +00:00
Ryan Houdek 0556193442 Build fix for previous commit. 2013-10-11 21:45:44 -05:00
Ryan Houdek cf7521dc36 [Android] Make Tegra 4 output graphics that aren't visually appealing. 2013-10-11 21:42:07 -05:00
Ryan Houdek 715d5ae8a7 Merge branch 'JitArmIL'
This implements a partial JITIL based off of the JIT64IL. It's enough to run most games, albiet at a slow speed.
Implementing instructions for this IL is really simple since it basically is just enabling based on what is already in JIT64IL, and then enabling each individual IL instruction.
2013-10-09 23:16:07 +00:00
Ryan Houdek 7bc4838243 Add the Arm JITIL to DolphinWX. 2013-10-09 23:09:18 +00:00
Ryan Houdek ba9f2d52e1 Add the JITIL Arm recompiler to the Android settings. 2013-10-09 23:08:12 +00:00
Ryan Houdek bd79603c66 [ARM-JitArmIL] Enable a bunch of instructions. 2013-10-09 23:03:39 +00:00
Ryan Houdek f5e1b4659a [ARM] Clean up LSL, LSR, and ASR emitters, we don't need a separate instruction for each to support registers. 2013-10-09 22:57:31 +00:00
Ryan Houdek 4914665429 [ARM-JITArmIL] Remove the SystemRegisters file. 2013-10-09 20:59:15 +00:00
Ryan Houdek 932586f743 [JitArmIL] Fix Windows build? 2013-10-09 00:55:43 +00:00
Ryan Houdek 4263f062b0 [JITArmIL] Fix JITIL compiling on x86. 2013-10-08 19:16:27 -05:00
Ryan Houdek ce5dbfe7a7 [ARM-JITArmIL] Begin merging of the two IL cores in to a common source base. 2013-10-08 19:23:37 +00:00
Ryan Houdek a0f2183424 [ARM-JITArmIL] Provide the necessary instructions to allow the JitArmIL to actually run. Disable branch instructions as well for now since one is wrong somewhere. 2013-10-08 16:42:33 +00:00
Ryan Houdek 7dd8deecec [ARM] Update the ArmEmitter with a bunch of NEON emitters. This adds around 47 instruction emitters if I counted correctly. None well tested at this point. On going to add all the NEON emitters. 2013-10-08 10:17:01 +00:00
Ryan Houdek 0236ba3f86 [ARM-JITARMIL] CMP optimization. Int3 IR. DownCount added. 2013-10-07 23:25:13 +00:00
Ryan Houdek a4eab75d15 [ARM] Beginning of JitArmIL JIT recompiler. This code is entirely based off of magumagu's work with the JIT64IL. This puts down the base needed for the recompiler. Starfield actually runs quite a few blocks being mysteriously dying while most other games just exit out due to an instruction not being done yet. A lot of this code can be tidied up and actually shared between the two IL recompilers but isn't yet done. 2013-10-07 14:25:07 +00:00
Ryan Houdek c054049712 Fix PixelShaderGen from the previous commit. 2013-10-06 21:54:09 -05:00
Ryan Houdek 26c38648ec [Android] Missed a few things for PowerVR544MP3 'support.' It doesn't actually get any video output on it just like Tegra 4. 2013-10-06 21:51:41 -05:00
Ryan Houdek a40daac5b1 [Android] Fix an issue where emulation would crash if we couldn't retrieve GPU information. Also if we can't get the graphics information, give them the benefit of the doubt and enable the GLES3 option. 2013-10-06 21:32:05 -05:00
Ryan Houdek d4bd5fde71 Only emit the texgens if they are used, not every single time do all of them. 2013-10-06 21:32:05 -05:00
Ryan Houdek 6bdcde9dd6 [Android] Tegra 4 'support.' This brings up the OpenGL backend to support Tegra 4 to the point where it will run games but it doesn't have any video output for some reason. This is a large change that doesn't actually change much functionally. Walking through the changes.
It changes the string in the Android backend select to just OpenGL ES.
Adds a check in the Android code to check for Tegra 4 and to enable the option to select the OpenGL ES backend.
Adds a DriverDetails bug under BUG_ISTEGRA as a blanket case of Tegra 4 support.
The changes that effects most lines in this change. Removing all float suffixes in the pixel/vertex/util shaders since OpenGL ES 2 doesn't support float suffixes.
Disables the shaders for reinterpreting the EFB format since Tegra 4 doesn't support integers.
Changes GLFunctions.cpp to grab the correct Tegra extension functions.
Readds the GLSL 1.2 'hacks' as GLSLES2 'hacks' since they are required for GLSL ES 2
Adds a GLSLES2 to the GLSL_VERSION enum.
Disable the SamplerCache on Tegra since Tegra doesn't support samplers...
Enable glBufferSubData on Tegra since it is the only mobile GPU to correctly work with it.
Disable glDrawRangeElements on Tegra since it doesn't support it, This uses glDrawElements instead.
2013-10-06 03:12:29 -05:00
Ryan Houdek fe3d0c9aa2 [ARM] Disable subfic, it prevents Wind Waker from booting into a save game. 2013-10-03 06:43:16 +00:00
Ryan Houdek 3c53f2e5e0 [Android] Fix Fastmem on Android 4.2 2013-09-29 20:53:32 -05:00
Ryan Houdek e37cb1fc76 Implement CR1 for the intepreter. To be honest I have no idea why this was never done previously, all it is is copying four bits from the FPSCR register to CR1. This fixes issue 2390. 2013-09-26 18:09:25 +00:00
Ryan Houdek 4efc3e6c8f Quick build fix. 2013-09-26 07:50:24 +00:00
Ryan Houdek feaf65f2ae [Android] The dynamic UBO access isn't actually fixed, contrary to what rev cd646d8e236 said. I presumed it fixed with v4x drivers, but I didn't have the LG G2 with me to test 100% at the time. This won't afflict any Adreno device with v4x drivers since UBOs are disabled for them since they are _broken_. 2013-09-26 07:46:56 +00:00
Ryan Houdek 691f76b826 [ARM] Implement CR1 setting for the few floating point instructions that I have setting the flags. For the rest, drop to interpreter if it sets CR1. At that point it'll spam a panic alert. I don't quite understand why Interpreter and JIT64/IL don't do this yet, it's a simple 4 bit copy. 2013-09-25 18:17:05 +00:00
Ryan Houdek 624c92f97e [ARM] fresx/fnmaddsx/fselx/frsqrtex/fnmaddx implementations. 2013-09-25 03:00:57 +00:00
Ryan Houdek ae75f92b2a [ARM] psq_lx/psq_lux/psq_stx/psq_stux implementations. Four more instructions that JIT64 doesn't have. 2013-09-25 02:22:52 +00:00
Ryan Houdek cd646d89e2 [Android] The issue with the dynamic UBO access on Adreno platforms was fixed with v41 of the video drivers. v41 and above of the video drivers fix the spiky polygon problems that are noticed ingames. 2013-09-25 01:50:02 +00:00
Ryan Houdek 357a7707a6 [ARM] ps_cmpu0/ps_cmpu1/ps_cmpo0/ps_cmpo1 implementations. 2013-09-24 21:13:33 +00:00
Ryan Houdek 74bc855f20 [ARM] ps_res implementation. 2013-09-24 21:00:50 +00:00
Ryan Houdek 3b1b0d3fb5 [ARM] ps_div implementation. 2013-09-24 20:46:57 +00:00
Ryan Houdek 94a731b49d [ARM] fctiwx implementation. 2013-09-24 20:37:10 +00:00
Ryan Houdek 482170c3ea [ARM] Implement subfic with optimizations stolen from JIT64. 2013-09-24 19:01:03 +00:00
Ryan Houdek 405aa30cb8 [ARM] Fix fastmem... 2013-09-24 18:03:06 +00:00
Ryan Houdek 8e2e5a4e70 [ARM] Have both fastmem and non-fastmem paths for floating point loadstores because fastmem is completely broken garbage on Android at this point in time. 2013-09-24 17:40:12 +00:00
Ryan Houdek 5866859ff0 Screw you comex, this doesn't even make any damn sense. 2013-09-24 17:25:13 +00:00
Ryan Houdek eb6ed3e42a [ARM] Change all floating point loadstores to fastmem implementations except lfs since all floating point accesses tend to be to RAM space. lfs tends to get used to write quickly to the gatherpipe and other places, look at the JIT64 implementation to see how to make it quicker. 2013-09-24 05:41:58 +00:00
Ryan Houdek 41ab4a2275 Nevermind the previous commit, SafeLoadToEAX already calls in to UnsafeLoadToEAX if fastmem is enabled. This one just tidys up the code. 2013-09-24 01:40:19 +00:00
Ryan Houdek aa41978834 Enable fastmem for the lfs instruction for unix and OSX as well. 2013-09-24 01:34:08 +00:00
Ryan Houdek 3fe8134f3b [ARM] lfsux/lfdx/lfdux/stfsx/stfsux/stfdx/stfdux implementations. 2013-09-24 01:17:24 +00:00
Ryan Houdek 96a77f9feb [Android] Fix the ability to stop the game and start another. 2013-09-23 01:43:18 -05:00
Ryan Houdek bab91494d5 Merge branch 'master' into android-core-control 2013-09-23 00:47:57 -05:00
Ryan Houdek 1da6469c62 [Android] Use new 4.0 icon. 2013-09-23 00:25:34 -05:00
Ryan Houdek bdae5d1027 [Android] Fix typo, FSAA stands for full scene antialiasing. 2013-09-22 11:59:10 -05:00
Ryan Houdek 6340ad68be Merge branch 'GLES3-FSAA' 2013-09-22 10:00:51 -05:00
Ryan Houdek 81effb8099 [Android] Add in FSAA option. 2013-09-22 09:25:38 -05:00
Ryan Houdek 91619e28b8 Pull in the glRenderbufferStorageMultisample function pointer at run time. 2013-09-22 09:10:47 -05:00
Ryan Houdek 53b93f8cd5 Allow GLES3 hardware to support FSAA. Need a GUI option for this on Android devices. 2013-09-22 13:54:47 +00:00
Ryan Houdek 85f067780a [ARM] Reenable flush per instruction with FPR cache. Something is still very wrong. 2013-09-19 02:08:20 +00:00
Ryan Houdek 930f997f04 [ARM] Fix and optimize mtcrf. 2013-09-19 02:08:19 +00:00
Ryan Houdek 1b1b5d2100 [ARM] MicroOps in the branching instructions. 2013-09-19 02:08:19 +00:00
Ryan Houdek 5158aea4dc [ARM] Fix misuse of RBIT in crXXX, meant to use MVN. 2013-09-19 02:08:19 +00:00
Ryan Houdek 452fd84bbd [ANDROID] Fix ARM JIT. Is due to Android using softfp instead of hardfp. 2013-09-18 17:21:22 -05:00
Ryan Houdek 6fc2117503 [ARM] Enable VMOV to move from double VFP reg to two ARM registers. 2013-09-18 17:21:22 -05:00
Ryan Houdek 24a44ecfb8 [ANDROID] Add two new DriverDetails bugs for Adreno. V45 of the driver has broken shader compilation with UBOs in the shaders, this is most likely fixed with V53 found in the Nexus 5. Add a bug for issue surrounding on screentext and doing a glClear after swap causes screen swizzling and zero frames rendered respectively. On the Java side, pass in the dimensions of the screen swapped since there is an issue with Adreno where it rotates the output 90 degrees for some reason. Disable the GLSL shader cache on Android for now due to the inability to cleanly exit the emulator, this tends to cause the cache to get corrupted. All this together fixes rendering with Adreno 3xx GPUs with driver version v14 and above. In particular my Galaxy S4 still resets with this without the root commands, but my HTC Droid DNA and LG G2 is fine. This must be due to particular 'enhancements' that the Samsung kernel has over the other ones. The speed on Adreno has yet to be optimized, so it will most likely be slow still. Faster than the software rasterizer in any case. The ARMJIT is still broken in at this point, so not much fun can be had. 2013-09-18 02:37:10 -05:00
Ryan Houdek 39a8645ffc [ARM] Fix the FPR cache to not have to dump registers after every instruction. Add mullwox instruction. 2013-09-17 22:08:23 +00:00
Ryan Houdek 06062d5744 [ARM] Fix VSQRT/VCMP/VCMPE/VCMPE0/VCMP0 emitters when using the high 16 double registers. 2013-09-17 22:08:23 +00:00
Ryan Houdek 302e9c891b [ARM] crand/crandc/creqv/crnand/crnor/cror/crorc/crxor/mcrf/mfcr/mtcrf/mtsr/mcrxr/mfsr implementations. 2013-09-17 11:00:16 +00:00
Ryan Houdek dcf74ef2b3 [ARM] Renables load instructions with update. 2013-09-17 11:00:15 +00:00
Ryan Houdek 1529bb48c8 [ARM] Flush the fpr cache between every instruction. Do this until I figure out what is destroying the FPR register states. 2013-09-16 15:44:41 +00:00
Ryan Houdek 7397867b21 [GLES3] Enable support for primitive restart. 2013-09-16 15:43:57 +00:00
Ryan Houdek 9b9526fba2 [ARM] Add dcbt/dcbtst/dcba noops. 2013-09-16 15:13:37 +00:00
Ryan Houdek 98fb4c146e [ARM] ps_sel implementation. 2013-09-16 14:05:50 +00:00
Ryan Houdek cba2dd01bc [ARM] Remove extraneous BKPT from ps_rsqrte. 2013-09-16 13:39:02 +00:00
Ryan Houdek a0a0c526ae [ARM] ps_rsqrte implementation. 2013-09-16 12:59:34 +00:00
Ryan Houdek 7d410ec95c [ARM] VRSQRTE NEON emitter. 2013-09-16 12:58:20 +00:00
Ryan Houdek 5a9cb84ae2 [ARM] ps_nmadd/ps_nmsub implementations. 2013-09-16 12:03:08 +00:00
Ryan Houdek b7f47bc2e1 [ARM] rlwnmx implementation. 2013-09-16 11:53:22 +00:00
Ryan Houdek 43f2313ef9 [ARM] Implement ps_msub. Minor optimizations. 2013-09-16 11:53:21 +00:00
Ryan Houdek 0bcc20ca5b [ARM] fcmpo/fcmpu implementations. 2013-09-16 08:57:51 +00:00
Ryan Houdek c56ecce840 [ARM] fctiwzx implementation. This isn't implemented in JIT64 and it is unstandeable why it isn't. 2013-09-16 07:49:16 +00:00
Ryan Houdek beb41a8f56 [ARM] Add NEON VORR and fix encoding on NEON VEOR. Remove VMRS_APSR because it is the same as VMRS(PC) 2013-09-16 07:49:16 +00:00
Ryan Houdek e56071f2be [ARM] slwx/srwx/srawx implementations. 2013-09-14 09:07:34 +00:00
Ryan Houdek 81d7986202 [ARM] Add LSRS emitters, and ASR{S} register emitters. Fixes encoding in LSR emitter. 2013-09-14 09:06:49 +00:00
Ryan Houdek 53498dafeb [ARM] fmaddsx and fmaddx implementations. 2013-09-14 05:52:09 +00:00
Ryan Houdek be4277e8a1 [ARM] stmw implementation. 2013-09-14 05:16:18 +00:00
Ryan Houdek c211d06ad2 [ARM] stfd and stfdu implementations. 2013-09-14 05:09:46 +00:00
Ryan Houdek 6fe86f1fd1 [ARM] cntlzwx implementation. 2013-09-14 04:29:37 +00:00
Ryan Houdek ef2ea31eac [ARM] ps_madds0 and ps_madds1 implementations. 2013-09-14 04:12:57 +00:00
Ryan Houdek 4512813cf9 [ARM] lfdu and stfsu implementations. 2013-09-14 04:00:40 +00:00
Ryan Houdek 0ae8fa964d [ARM] lfsu implementation. 2013-09-14 03:51:32 +00:00
Ryan Houdek aaf8e92f78 [ARM] Fixes srawix implementation. 2013-09-14 03:00:33 +00:00
Ryan Houdek 751fae4965 [Android] Make sure the default config file has fastmem disabled. 2013-09-13 21:17:40 -05:00
Ryan Houdek ba05db7828 [Android] Add a fastmem option to the cpu options, default disabled. 2013-09-12 23:08:00 -05:00
Ryan Houdek 1680f27739 [ARM] Disable loadstorepaired instructions when fastmem is disabled. 2013-09-12 23:07:19 -05:00
Ryan Houdek c1ddeacc9d [ARM] Removes extraneous fpr.Flush 2013-09-12 10:31:29 +00:00
Ryan Houdek aa8f0c2ca4 [ARM] Fixes ps_madd implementation. 2013-09-12 10:30:52 +00:00
Ryan Houdek 8882d27689 [ARM] Fixes the ps_merge00 and ps_merge10 implementations. They both had the potential to overwrite the source registers in the moves. 2013-09-12 10:17:27 +00:00
Ryan Houdek 749b62fcd9 [ARM] Fixes orcx implementation. 2013-09-12 09:55:55 +00:00
Ryan Houdek e1d510c2dc [ARM] Disables loadstores with update because they are broken. 2013-09-12 09:40:10 +00:00
Ryan Houdek 2c33bab1a6 [ARM] lfsx implementation. 2013-09-12 07:52:19 +00:00
Ryan Houdek fa5499e046 [ARM] Disable lmw when fastmem is disabled. 2013-09-12 02:51:38 -05:00