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
Ryan Houdek
4146e1f3d6
[ARM] Implement psq_st. Optimizations in psq_l and fix all the remaining bugs...except clamping within the max value range of the value. Causes some minor visual effects mostly.
2013-09-08 21:56:17 +00:00
Ryan Houdek
c1aa80cefa
[ARM] Add support for double registers in VMOV(immediate). Add VEOR and VSTR1. Fix some minor encoding bugs.
2013-09-08 21:56:17 +00:00
Ryan Houdek
ba0c52b104
[ARM] Optimization to psq_l, no need to push/pop regs anymore. Implement support for single float loading, gives a decent speedup to Ikaruga in menus and game.
2013-09-08 08:18:34 +00:00
Ryan Houdek
e5b5713d70
[ARM] Optimize that fastmem load/stores minimally.
2013-09-08 07:37:03 +00:00
Ryan Houdek
2126f405e0
[ARM] 1 instruction optimization for psq_l
2013-09-08 07:25:59 +00:00
Ryan Houdek
53fb0622f0
Fix the glew check. GLES3 can be used on non-Android platforms.
2013-09-08 07:21:33 +00:00
Ryan Houdek
e6af4970d8
[ARM] Use NEON for loading the values from psq_l, gives a minimal performance increase. This change also begins a new NEONXEmitter for having cleaner support for NEON.
2013-09-08 07:07:15 +00:00
Ryan Houdek
31b69c53f7
[ARM] Implement psq_l for 2x float loads. Couldn't find a game using quantized loads. Huge speed boost to Ikaruga and THP movies with this one.
2013-09-07 17:44:10 +00:00
Ryan Houdek
614a7c2081
[ARM] Clean up some host side register allocations I missed.
2013-09-07 17:44:10 +00:00
Ryan Houdek
67c65831bc
[ARM] Make fnabsx and ps_nabs quicker. Sleep deprivation got the better of me.
2013-09-07 00:35:12 +00:00
Ryan Houdek
ef05a14757
[ARM] Clean up FPR cache. Rapid fire floating point instruction implementations. Adds 13 new instructions.
2013-09-07 00:19:32 +00:00
Ryan Houdek
a7f244e96d
Revert "Revert "[NetPlay] Make the Memory Card A/B setting sync across netplay.""
...
This reverts commit 5696da0b3e .
JMC messed up, it wasn't due to this commit.
2013-09-04 19:16:28 -05:00
Ryan Houdek
5696da0b3e
Revert "[NetPlay] Make the Memory Card A/B setting sync across netplay."
...
This reverts commit e110f1049c .
This unfixes issue 6575. Reverted due to huge performance hit on behalf of JMC.
2013-09-04 02:55:13 -05:00
Ryan Houdek
d0d053a9f9
Fix for old libc version on bionic. Old versions would crash if the second argument was NULL.
2013-09-04 02:04:31 -05:00
Ryan Houdek
7e26aace9f
[ARM] Reenable ps_add. Issue is due to something in the FPR cache. Still needs to be investigated.
2013-09-04 03:27:45 +00:00
Ryan Houdek
8684b7635a
[ARM] Reimplement fastmem for the few loadstores that had it before.
2013-09-04 02:07:57 +00:00
Ryan Houdek
39ad48dfa5
[ARM] lmw implementation.
2013-09-03 09:55:15 +00:00
Ryan Houdek
30cd436e86
[ARM] Merge load instructions in to one. Also rapid prototype 13 more load instructions. This disables fastmem currently for loads.
2013-09-03 09:22:43 +00:00
Ryan Houdek
d4d6eb562e
[ARM] Fix and enable fastmem for 32bit stores.
2013-09-03 05:05:10 +00:00
Ryan Houdek
c97229f612
Merge branch 'arm-storemerge'
2013-09-03 04:12:22 +00:00
Ryan Houdek
cc2fa4a003
[ARM] Merge all store instructions in to one. This disables fastmem on stores currently. Hit isn't noticeable since I've also implemented 5 more store instructions with this.
2013-09-03 04:11:25 +00:00
Ryan Houdek
dfce0f3b0b
[ARM] Merge all store instructions in to one. This disables fastmem on stores currently. Hit isn't noticeable since I've also implemented 5 more store instructions with this.
2013-09-03 04:08:15 +00:00
Ryan Houdek
a7f3264fed
[ARM] Merge a bunch of arithmetic JIT instructions and rapid prototyping of a bunch more.
2013-09-02 14:15:37 +00:00
Ryan Houdek
2897619ddb
Removal of my terrible idea.
2013-09-02 05:31:48 -05:00
Ryan Houdek
e7157e7c52
[Android] Fix fastmem and enable.
2013-09-02 04:10:21 -05:00
Ryan Houdek
679957dc98
Fix Non-GLES run path in videosoftware for the previous commit.
2013-09-02 01:44:46 -05:00