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
degasus
04f319066d
TextureCache: Extract BP enum check to VideoCommon.
...
We have TOO many video backends.
2016-12-26 22:10:21 +01:00
degasus
8f9f2b1f76
DSPHLE: Seperate HLE construction and initialization.
...
We must be able to construct the HLE without emulating the initialization
on loading a savestate.
2016-12-26 12:25:57 +01:00
degasus
5082a664c8
VertexLoaderX64: Avoid unchecked pointer cast.
2016-12-04 13:09:16 +01:00
degasus
21f3e97435
Jit64: Avoid pointer casts if possible.
2016-12-04 13:09:16 +01:00
degasus
f325d41def
DSPJit: Use tmp register for pointer immediate.
...
PIE.
2016-12-04 13:09:16 +01:00
degasus
d26709f713
Jit64: Use ImmPtr for mtcrf.
...
Only a small overhead, but PIE compatible.
2016-12-04 13:09:16 +01:00
degasus
8189ef432b
Jit64: Use ImmPtr for mcrxr.
...
Only a small overhead, but PIE compatible.
2016-12-04 13:09:16 +01:00
degasus
23c284c081
Jit64: Use ImmPtr for inst.OE handling.
...
A bit slower, but PIE compatible and *very* rarely.
2016-12-04 13:09:15 +01:00
degasus
193dd97759
VideoCommon: Drop FlipImageData.
...
This function isn't used any more, and good code shouldn't use it at all. Use negative strides instead.
2016-11-10 12:59:22 +01:00
degasus
3816207d7b
OGL: Fix frame dump on emulation close.
2016-11-10 12:59:22 +01:00
degasus
21774bdc81
OGL: Only flush the frame dumping thread on dumping.
...
This fixes the screenshot stutter, as this needs more than a frame.
So we won't stall on the png writing at all until emulation stops or
a new screenshot is requested.
2016-11-10 12:59:22 +01:00
degasus
52caa4f2f5
VideoCommon/Render: Inplace frame dump encoding.
...
This increase the performance of good backends a bit, but slows down the bads one a lot.
Let's fix those backends instead of forcing stupid memcpy in the common code.
2016-11-10 12:59:19 +01:00
degasus
741debe229
OGL: Avoid reallocation of frame dumping PBO.
2016-11-07 22:32:54 +01:00
degasus
f6a6cc9c67
OGL: Use PBO for framedump, with async readback.
2016-11-07 22:17:32 +01:00
degasus
a47332bf8a
VideoCommon/Render: Use a flag for screenshot.
2016-11-07 22:16:34 +01:00
degasus
d79840078f
Renderer: Threaded frame dumping.
2016-11-07 22:11:13 +01:00
degasus
3c65c5f2c5
AVIDump: Drop frames which are delayed over a savestate.
2016-11-04 18:39:50 +01:00
degasus
be29090aae
AVIDump: Add a struct for the state.
...
So AddFrame use no global state and can be threaded well.
2016-11-04 18:35:42 +01:00
degasus
dad5041737
AVIDump: Inline OSD error handling.
...
This fixes a review feedback in PR #4345 .
2016-11-04 18:03:14 +01:00
degasus
03d8efc270
AVIDump: Merge redundant variables.
...
They were always the same. We also don't scale at all.
2016-11-04 18:03:14 +01:00
degasus
112e18a5d1
AVIDump: Drop stored frame.
...
This used an invalid pointer, which was only valid within AddFrame.
This drops a feature which shall dump the last frame as it might was dropped before.
A good implementation however should "overwrite" the last frame if the time matches.
But this needs to delay every frame a bit.
2016-11-04 18:03:14 +01:00
degasus
abe9c30d3d
JitArm64: Also push/pop gpr.R(addr).
...
This fixes slowmem load instruction with update.
2016-11-02 22:38:03 +01:00