degasus
5333c17cca
Jit: Fix branch following.
...
The idea of this code was to not unroll loops, but it was completely broken.
So we've unrolled all loops, but only up to the second iteration.
Honestly, a better check would test if we branch to code which is already in the compiling block. But this is out of scope for now.
But testing shows that this unrolling actually improve the performance. So instead of fixing this bug, this check can be dropped.
2018-07-28 16:35:42 +02:00
degasus
ecf86bbf7b
JitArm64: Drop the plattform register.
...
This register is defined as "optional reserved" within the aarch64 ABI.
Linux doesn't use it, but we must not modify it on ios or windows.
As we have plenty of registers on aarch64, let's just always skip this one.
2018-06-21 22:39:15 +02:00
degasus
03c88c83ac
CachedInterpreter: Implement breakpoints.
...
There were missed on the initial implementation of the cached interpreter.
2018-06-13 08:33:57 +02:00
degasus
7154bfd825
UnitTest: Add StringUtil ToString/TryParse test
...
Only a single one, but the main one for ini files:
Check if the written values can be parsed again.
2018-06-03 23:12:32 +02:00
degasus
bde65d8b42
Jit64: Fix MORE_ACCURATE_DOUBLETOSINGLE.
...
This is broken since 3d12849967 .
2018-05-29 23:25:30 +02:00
degasus
3307946e2a
VertexLoaderArm: Fix 565 color format.
...
Copy & paste error for enforcing A=255.
It was copied from the 888X format, which stores the output data in another register.
2018-05-27 11:27:15 +02:00
degasus
fdfd8b19d6
OGL/Streambuffer: Use coherent mapping by default.
...
Coherent mappings have a lower overhead and less GL codes.
So enables coherent mapping by default for all drivers.
Both Qualcomm and ARM performs very bad with explicit flushing, so this change helps them as well.
AFAIK there was one GPU generation which was slower on coherent mapping: nvidia tesla
So Geforce 200 and 300 series should be tested with this PR before merging.
As this was last tested many years ago, this issue might have been fixed as well.
Those GPUs are close to 10 years old and not supported any more by nvidia.
2018-05-24 00:00:02 +02:00
degasus
be3ce97560
CMake: Prefer GLVND for OpenGL.
...
We have to decide if we want to link to
libGL.so -- legacy
libOpenGL.so -- GLVND
As we use xxxGetProcAddress, we don't care about feature
levels of the linked library, so we're very fine with the
new way.
2018-05-09 09:08:22 +02:00
degasus
a5c0739fab
OGL: Scale OSD text on big screens.
2018-03-12 20:38:06 +01:00
degasus
d4449971c9
OGL: Warn if buffer_storage isn't available.
...
Yes, this commit is only to blame OSX and Mali. Through the former supports unsynchronized mappings, the latter supports *no* way to stream dynamic data at all. Let's try to make bad news, as they ignore friendly feature requests. Maybe we just need to make more noise...
2018-03-12 20:38:00 +01:00
degasus
a5a0599145
CustomTexture: Drop old texture format.
2018-01-20 17:08:47 +01:00
degasus
0b466249e0
CustomTextures: Drop format convertion.
2018-01-20 16:39:04 +01:00
degasus
02dd062518
VideoCommon: Drop now unused efb2tex matrix generation.
2017-12-06 09:30:03 +01:00
degasus
e2a9ee384f
VideoCommon: Rename TextureConversionShader namespace.
2017-12-02 15:17:39 +01:00
degasus
e8febd0cef
VideoCommon: Create a namespace for TextureConversionShaderGen.
2017-12-02 15:17:39 +01:00
degasus
6ea3f538b4
JitArm64: Inline GP check in Cleanup.
...
We're calling this function up to 2M times per second. Let's inline the pre-check.
2017-11-18 17:43:38 +01:00
degasus
6c9bb67ca0
JitArm64: Optimize gather pipe writes.
2017-11-18 17:43:38 +01:00
degasus
6ad63c1b35
Jit64: Inline GP fast check in Cleanup.
2017-11-18 17:43:38 +01:00
degasus
36ad887a19
Jit64: Inline GP writes.
...
As we're down to 4 instructions now, it is always worth to inline those writes.
2017-11-18 14:45:09 +01:00
degasus
4feddd7748
PowerPC: Include the gather pipe pointer in the ppc state.
2017-11-18 14:14:45 +01:00
degasus
3a36c964f5
WiimoteEmu: Don't set pack pragma for STL objects.
2017-11-05 13:13:25 +01:00
degasus
47f7e5b454
WiiUtils: Be more explicit about packing.
2017-11-05 10:52:37 +01:00
degasus
992893ba41
Jit64: Use ImmPtr.
2017-09-02 14:33:07 +02:00
degasus
da79ddbde7
JitArm64: Rewrite Exit functions.
...
The gpr must not be touched in the Exit functions as they are maybe conditional.
So just allocate everything here manually.
2017-09-02 13:45:24 +02:00
degasus
304e601ad3
JitArm64: Reimplement aarch64 cycle counters.
...
CNTVCT_EL0 is force-enabled on all linux plattforms.
Windows is untested, but as this is the best way to get *any* low
overhead performance counters, they likely use it as well.
2017-09-02 13:24:37 +02:00
degasus
9080192a65
Jit64: Move profiler to the end of th block.
...
Within Cleanup(), it is called at *every* end of the block. This generates bigger code,
but it is the only way to handle blocks with multiple exit nodes.
2017-09-02 13:05:58 +02:00
degasus
958b75b707
JitCommon: Restructure the profiler calls.
2017-09-02 13:05:58 +02:00
degasus
95ce860265
DolphinWX: Enable branch following in the JIT debug interface.
2017-09-02 13:05:58 +02:00
degasus
8ab34b1a3e
Jit64: Inline the profiler calls.
2017-09-02 13:05:58 +02:00
degasus
b00c60618b
JitArm64: Fix rlwinmx.
...
Seems like I was wrong that ANDI2R doesn't require a temporary register here.
There is *one* case when the mask won't fit in the ARM AND instruction:
mask = 0xFFFFFFFF
But let's just use MOV instead of AND here for this case...
2017-08-22 08:47:43 +02:00
degasus
cc4b3b180b
VideoSW: Drop log level of missing anti aliasing support.
...
We don't want to emit such a high priority warning here, else fifoci will die.
2017-08-05 19:20:19 +02:00
degasus
7389f0f55e
Analytics: Set proper thread name.
2017-05-03 23:59:29 +02:00
degasus
afb0beb9ab
OpenGL: Mute nvidia performance warning about stalling the GPU.
...
They are right, our perf query implementation is terrible.
But raising a warning makes it just even slower.
2017-05-03 23:48:14 +02:00
degasus
90d551e0d1
JitArm64: Drop ps_res.
...
The accuracy doesn't match ppc, and worse, it doesn't set the error flags if the input is zero.
Lets stop to ship broken instructions, so right now, the interpreter is the closest one.
2017-05-03 23:48:14 +02:00
degasus
64ccf803bd
Jit64: Use a temporary register for memory references. Part 4.
2017-04-12 20:53:17 +02:00
degasus
0ddd90b539
Jit64: Use a temporary register for memory references. Part 3.
2017-04-12 20:53:17 +02:00
degasus
78b36921d2
Jit64: Use a temporary register for memory references. Part 1.
2017-04-12 20:53:17 +02:00
degasus
ca8d9e2215
TextureCache: Don't lock freed rendertargets for one frame.
...
New Super Mario Bros on PAL still renders at 60 fps, but skips every 5th XFB copy.
So our detection of "per frame" fails, and we require twice the amound of texture objects.
But our pool frees unused textures after 3 frames, so half of them needs to be reallocated
every few frames.
This commit removes the lock for render targets. It was introduced to not update a texture
while it is still in use. But render targets aren't updated while rendering, so this
lock isn't needed. Non-rendertarget textures however aren't as dynamic, so the lock should
have no performance update.
2017-03-22 23:28:42 +01:00
degasus
c5b9c740c9
JitArm64: Fix gpr.R() usages in conditional code.
2017-03-20 21:18:13 +01:00
degasus
f7a52c0c35
JitArm64: Fix gpr.GetReg usages in conditional code.
2017-03-20 21:18:13 +01:00
degasus
5152c997a4
MMU: Create constants for our BAT flags.
...
This avoids a few hard-coded constants in several files.
2017-03-15 09:20:40 +01:00
degasus
a3f79f88cd
Android: Update android studio + gradle.
...
Android studio 2.3 finally displays the result of the native compilation, so C++ warnings are now shown in the build log.
2017-03-04 15:53:40 +01:00
degasus
ffa61fcf57
JitCache: Also unlink exits of the current block.
...
We might still be in the current block. This is fine, but the next one might also be invalidated later on. But we may never also call the next one.
2017-02-27 23:50:16 +01:00
degasus
c1ddc2678e
JitCache: Fix removing of blocks.
2017-02-27 23:50:16 +01:00
degasus
674e7430d0
JitArm64: Extract block exit link area generation.
...
Always use 3 instructions on linking.
2017-02-17 23:07:28 +01:00
degasus
8829af62cb
JitArm64: Fix for stack push/pop ABI.
2017-02-11 00:59:12 +01:00
degasus
6aa54a029e
JitArm64: Optimize GPR register push/pop.
2017-02-11 00:59:12 +01:00
degasus
4d3883a756
JitArm64: Handle stack faults.
2017-02-10 00:32:21 +01:00
degasus
40b7cc9252
JitArm64: Use a custom stack with proper guard pages.
2017-02-10 00:32:17 +01:00
degasus
384efb0cb2
JitArm64: Initial implementation of the BLR optimization.
2017-02-02 09:06:34 +01:00
degasus
2c69e976d0
DSPLLE: Only enable the DSP JIT on x64.
...
The x64 JIT is hardcoded right now, and it seems unlikely that we'll support another arch here soon.
So let's just disable the DSP JIT.
2017-01-30 23:53:58 +01:00
degasus
89cefe3103
JitArm64: Fix immediate versions of cmpl.
2017-01-29 18:38:43 +01:00
degasus
c2822ef7d3
PatchEngine: Apply speedhack per PC, not only per block entry.
...
This makes speedhacks indepdent of block assembly / inlining / conditional continue.
2017-01-28 12:36:13 +01:00
degasus
ca10cf5afe
PPCAnalyst: Update comments
2017-01-28 03:03:04 +01:00
degasus
4855764345
JitArm64: Implement leaf inlining.
...
There is no BLR stack, so this is quite trivial.
2017-01-28 02:48:56 +01:00
degasus
f31b25fe39
Jit64: Enable branch following.
2017-01-28 02:48:56 +01:00
degasus
3787af9ee9
CommandProcessor: Limit scope of ugly SCPFifoStruct.
...
It's only used as an interface between two classes. So no need to declare
it in the backend export header.
2017-01-27 19:04:56 +01:00
degasus
ba1decf7bc
PixelEngine: Use a DirectRead for the token.
...
No need to call a std::function, and a few games poll this value very often.
2017-01-27 07:49:47 +01:00
degasus
cbe9c3e040
GameSettings: Don't ship speedhack which are enabled by default.
...
This may slow down a few games, but we don't want to support this kind of mess.
2017-01-27 00:07:19 +01:00
degasus
d3aee2de08
JitCache: Split off JIT call from dispatcher.
...
This avoid flushing the BLR optimization stack on fast_block_cache misses.
2017-01-25 01:51:19 +01:00
degasus
7f6b8e3555
JitCache: Extract ErasePhysicalRange as function.
2017-01-23 20:33:44 +01:00
degasus
70caf447b9
JitCache: Get physical addresses from PPCAnalyst.
...
So we support all kind of degenerated blocks now, not just range+length based ones.
2017-01-23 20:33:44 +01:00
degasus
3529af61c4
JitAnalyzer: Remove jit block cache workaround.
2017-01-23 20:33:44 +01:00
degasus
f3ed993747
JitCache: Use a map with macro blocks for the occupied memory regions.
...
This also allow fast invalidation, without any restritions on the blocks itself.
So we can now implement inlining.
2017-01-23 20:33:44 +01:00
degasus
dc0fbc15f0
JitCache: Drop block_map.
...
It is only used for invalidation, and in a bad way. Just scan over all elements,
as it is still in O(n), this shouldn't matter much.
2017-01-23 20:33:44 +01:00
degasus
819ebfb213
JitCache: Freeing hotfix.
...
Sorry, I'm too stupid to test my code.
2017-01-23 06:58:02 +01:00
degasus
a19993c2a0
JitArm64: Fix dcbz.
...
This fixes the hidden wall in xenoblade.
2017-01-23 00:26:38 +01:00
degasus
8e00c411a3
JitCache::Rename iCache to fast_block_map.
...
iCache sounds too much like emulation.
2017-01-22 17:10:28 +01:00
degasus
830ae6a2c1
JitCache: Store the JitBlock in the std::map.
2017-01-22 16:50:46 +01:00
degasus
43cdbab515
Jit64: Add a switch for easier fallback to the C++ dispatcher.
2017-01-22 16:50:46 +01:00
degasus
9b77a39767
JitCache: Only call DestroyBlock on valid blocks.
2017-01-22 16:50:46 +01:00
degasus
113d6b3b84
JitCache: Use a multimap for block_map and start_block_map.
...
We may have duplicated entries here because of MSR mismatch. Just
store both and validate the matching one on cache access.
2017-01-22 16:50:46 +01:00
degasus
9d58127dec
JitCache: Move JitBlock config variable.
2017-01-22 16:50:46 +01:00
degasus
352909fc4c
JitCache: Track the ICache entry of jit blocks.
...
This guarantees that no invalidated jit block is still in the icache.
2017-01-22 16:50:14 +01:00
degasus
c9c5437cb8
JitCache: Fix links_to updates on destroying blocks.
2017-01-22 11:37:22 +01:00
degasus
65e3aa796e
VideoConfig: Fix boolean default values.
2017-01-21 11:31:44 +01:00
degasus
fe41ed7fa1
JitCache: Use pointers in the ICache and dispatchers.
2017-01-12 21:43:28 +01:00
degasus
d4a529614a
Jit64: Use PPCSTATE reg if possible.
2017-01-12 20:55:17 +01:00
degasus
a8b26937f3
JitCache: Clean up GetBlockFromStartAddress.
2017-01-12 20:24:43 +01:00
degasus
214f37ecef
JitCache: Rename variables.
2017-01-12 20:23:14 +01:00
degasus
3ee178abe7
JitCache: Drop unused functions.
2017-01-12 20:23:14 +01:00
degasus
7e850361fb
JitCache: Add a helper function to iterate over all blocks.
2017-01-12 20:23:14 +01:00
degasus
ca026b58ab
JitCache: Use a pointer in links_to.
2017-01-12 20:23:14 +01:00
degasus
928ccbef53
JitCache: Use a pointer in block_map.
2017-01-12 20:23:14 +01:00
degasus
74a27d9742
JitCache: Use a pointer in start_block_map.
2017-01-12 20:23:14 +01:00
degasus
2d5288dc10
JitCache: Return a pointer in AllocateBlock.
2017-01-12 20:23:14 +01:00
degasus
f14cebf079
JitCache: Use a pointer in FinalizeBlock.
2017-01-12 20:23:14 +01:00
degasus
d3aa8c8080
JitCache: Return a pointer in GetBlockFromStartAddress.
2017-01-12 20:23:14 +01:00
degasus
f6ec96efbd
JitCache: Use a pointer in DestroyBlock.
2017-01-12 20:23:14 +01:00
degasus
68c85d32f7
JitCache: Use a pointer in UnlinkBlock.
2017-01-12 20:23:14 +01:00
degasus
eb390f3020
JitCache: Use a pointer in LinkBlock.
2017-01-12 20:23:14 +01:00
degasus
ccb8c44a5a
JitCache: Use a pointer in LinkBlockExits.
2017-01-12 20:23:14 +01:00
degasus
f12460d1f4
VideoSW: Fix GL ES shader.
2017-01-07 12:32:15 +01:00
degasus
f6c7a258ed
BlendState: Use masking as a fastpath for the logic op NO_OP.
2017-01-06 14:01:39 +01:00
degasus
23b0faeba5
OGL: Use VideoCommon blend state for framebuffer configuration.
2017-01-06 14:01:39 +01:00
degasus
3df828463d
VideoCommon: Assembly blending state in a shared state object.
2017-01-06 14:01:36 +01:00
degasus
41b0c74e30
VideoCommon: Make dst_alpha state implicit.
2017-01-04 20:02:31 +01:00
degasus
b7d8bd13a6
OGL/Vulkan: Drop dual pass alpha.
2017-01-04 19:59:41 +01:00
degasus
d0a73c1d90
TextureCache: Add a dirty bit for partial updates on overlapping EFB copies.
2016-12-27 17:26:04 +01:00
degasus
abf9bb170b
TextureCache: Drop unused parameter in backend API.
2016-12-26 22:10:32 +01:00