Commit Graph

13685 Commits

Author SHA1 Message Date
Ryan Houdek
1ad8d4629c Merge pull request #1677 from FioraAeterna/fixtypo
JIT: fix MOVD_xmm order typo in ConvertDoubleToSingle
2014-12-09 08:20:27 -06:00
Fiora
92aad1140e JIT: fix MOVD_xmm typoes in ConvertDoubleToSingle
Ordering, plus MOVQ instead of MOVD
2014-12-09 04:19:44 -08:00
Ryan Houdek
0578ec92c0 Merge pull request #1665 from Sonicadvance1/yielding_the_dual_core_world
Idle loop in GPU loop on dual core systems.
2014-12-09 02:22:27 -06:00
skidau
1ce3696e8b Merge pull request #1623 from FioraAeterna/fixppcfp
JIT: fix PPC_FP snan/qnan handling
2014-12-09 14:25:23 +11:00
Lioncash
799b557e21 Merge pull request #1673 from Stevoisiak/Cache_Revision-Comment
Specified where to find CACHE_REVISION
2014-12-08 12:26:31 -05:00
Steven Vascellaro
aeae285c8d Specified where to find CACHE_REVISION 2014-12-08 12:00:11 -05:00
Markus Wick
ff4526b4a9 Merge pull request #1657 from Tinob/master
Add HW bounding Box support to d3d backend
2014-12-08 09:05:22 +01:00
Rodolfo Bogado
cf7512683c spaces cleanup 2014-12-07 20:28:27 -03:00
Lioncash
faf962d528 FifoRecorder: Use std::vector for m_Ram and m_ExRam
No need to delete/recreate the arrays every time a new recording happens. Just zero it out.
2014-12-07 18:13:53 -05:00
Tillmann Karras
6e928d08a0 Jit64: clean up casts in memory operands 2014-12-07 20:23:27 +01:00
Yuriy O'Donnell
e90604c5ed D3D: Fixed debug validation error
A texture was still being bound when OMSetRenderTargets is called.
State manager resource cache must be flushed to unbind it.
This fixes The Last Story cut scene rendering.
2014-12-07 18:46:05 +01:00
Yuriy O'Donnell
4392d3cd55 D3D: Fixed StateManager member function name case 2014-12-07 18:45:50 +01:00
Yuriy O'Donnell
80459c52e9 D3D: StateManager m_current and m_pending are now value-initialized 2014-12-07 18:45:49 +01:00
Yuriy O'Donnell
0e18e9e80d D3D: Removed cull mode changes for lines and points
Fixed include order and whitespace
2014-12-07 18:45:20 +01:00
Yuriy O'Donnell
6e9226650d D3D: Implemented context state caching
This avoids most of the redundant API calls.
2014-12-07 18:17:19 +01:00
Markus Wick
d83f0308af Merge pull request #1664 from Sonicadvance1/GLES3_stereo
Enables stereo rendering with OpenGL ES 3.1 + AEP.
2014-12-07 12:53:14 +01:00
Ryan Houdek
ce7c52eca0 Enables stereo rendering with OpenGL ES 3.1 + AEP.
If the host device supports GLES 3.1 and AEP we can have stereo rendering.
Just need to make sure to grab the correct function pointer that GL_EXT_geometry_shader provides, and enable AEP in the shaders.

We can't just check if AEP is in the extension list for support because Qualcomm has failed once more.
With the Nexus 6 it reports support for AEP but doesn't support OpenGL ES 3.1, which is an impossible combination.
From reports on their forum it seems that attempting to use any AEP things results in nothing happening, seems like a stub implementation.
2014-12-07 11:14:35 +00:00
Ryan Houdek
81cc177c44 Merge pull request #1477 from magcius/nunchuk-cleanup
Nunchuk cleanup
2014-12-07 01:29:59 -06:00
Ryan Houdek
d9d0e285c9 Merge pull request #1560 from magcius/pad-cleanup-1
Pad cleanup 1
2014-12-07 01:22:03 -06:00
Ryan Houdek
4e98078daf Merge pull request #1658 from lioncash/locale
Common: Remove locale based functions from CommonFuncs.
2014-12-07 01:12:00 -06:00
Ryan Houdek
9897f7675e Merge pull request #1611 from waddlesplash/dolphin-qt
DolphinQt: various cleanup & fixes.
2014-12-07 01:11:17 -06:00
Ryan Houdek
6d6b425061 Merge pull request #1647 from magumagu/mmu-flag-cleanup
Cleanup: remove unnecessary uses of the bMMU flag
2014-12-07 01:08:30 -06:00
Ryan Houdek
dec2f9f89b Merge pull request #1596 from Tilka/wiimote
WiimoteReal: use inheritance instead of #ifdef
2014-12-07 01:03:08 -06:00
Ryan Houdek
a48abd7bd2 Merge pull request #1662 from lioncash/tas
TASInputDlg: General cleanup.
2014-12-07 00:58:58 -06:00
Ryan Houdek
b9c6ee93b6 Merge pull request #1661 from FioraAeterna/fixloadstorebind
JIT: fix possible panicalert in loadstore
2014-12-07 00:54:59 -06:00
Ryan Houdek
0e1d98a43f Merge pull request #1663 from Buddybenj/Fix-Warning
Remove RunningGamecube (unused variable)
2014-12-07 00:08:07 -06:00
Ryan Houdek
d58bba2160 Idle loop in GPU loop on dual core systems.
Previously we had decided to busy loop on systems due to Windows' scheduler being terrible and moving us around CPU cores when we yielded.
Along with context switching being a hot spot.
We had decided to busy loop in these situations instead, which allows us greater CPU performance on the video thread.
This can be attributed to multiple things, CPU not downclocking while busy looping, context switches happening less often, yielding taking more time
than a busy loop, etc.

One thing we had considered when moving over to a busy loop is the issues that dual core systems would now face due to Dolphin eating all of their CPU
resources. Effectively we are starving a dual core system of any time to do anything else due to the CPU thread always being pinned at 100% and then
the GPU thread also always at 100% just spinning around. We noted the potential for a performance regression, but dismissed it as most computers are
now becoming quad core or higher.

This change in particular has performance advantages on the dual core Nvidia Denver due to its architecture being nonstandard. If both CPU cores are
maxed out, the CPU can't effectively take any idle time to recompile host code blocks to its native VLIW architecture.
It can still do so, but it does less frequently which results in performance issues in Dolphin due to most code just running through the in-order
instruction decoder instead of the native VLIW architecture.
In one particular example, yielding moves the performance from 35-40FPS to 50-55FPS. So it is far more noticeable on Denver than any other system.
Of course once a triple or quad core Denver system comes out this will no longer be an issue on this architecture since it'll have a free core to do
all of this work.
2014-12-07 05:36:44 +00:00
Ryan Houdek
f9cda79f3a Merge pull request #1659 from rohit-n/ow-the-edge
Fix -Wshadow warning.
2014-12-06 23:34:34 -06:00
Unknown W. Brackets
b19cff8a08 OGL: Use a fixed VAO for attributeless rendering.
Instead of abusing whatever VAO is previously bound, which might have
enabled arrays.

Only used in one instance currently, which fixes a crash with older
NVIDIA drivers.
2014-12-06 19:27:49 -08:00
Lioncash
e5e8f49425 TASInputDlg: Eliminate the usage of some spacers.
Bordering parameters can be specified on addition.
2014-12-06 20:13:30 -05:00
Fiora
68972da1e5 JIT: fix possible panicalert in loadstore
Didn't bind address register tcorrectly in a very rare case.
2014-12-06 16:09:13 -08:00
Lioncash
694247d3fe TASInputDlg: Fix a typo in layout alignment flags 2014-12-06 17:09:05 -05:00
Lioncash
d09130e3d2 TASInputDlg: Replace some for loops with range-based for loops. 2014-12-06 16:54:42 -05:00
Lioncash
12eb2caa65 TASInputDlg: Remove unnecessary wxWidgets default values. 2014-12-06 16:40:53 -05:00
Tillmann Karras
791d5458e5 UnitTests: add tests for bitwise AVX instructions 2014-12-06 22:28:03 +01:00
Tillmann Karras
ddebdb61c4 UnitTests: fix register symbol name in AVX tests 2014-12-06 22:28:03 +01:00
Tillmann Karras
986d19b9d5 x64Emitter: fix bitwise AVX opcodes
The reason this didn't break is that bitwise instructions like VPAND,
VANDPS, and VANDPD do the exact same thing. The only difference is the
data type they are intended for.
2014-12-06 22:28:03 +01:00
Fiora
3d12849967 JIT: fix snan/qnan handling in float loads/stores
Also simplify the conversion code with some suggestions by flacs; might even
be slightly faster now despite handling more cases.
2014-12-06 13:07:24 -08:00
Benjamin Przybocki
9d0606d2c1 Remove RunningGamecube
It's not being used and gives a warning on Unix/Unix-like machines.
2014-12-06 12:50:24 -06:00
Rodolfo Bogado
c2de38c115 use SAFE_RELEASE to make code cleaner 2014-12-06 10:46:15 -03:00
Rodolfo Bogado
817d025328 small spacing fixes 2014-12-05 23:54:34 -03:00
Rohit Nirmal
fa501e9d8d Fix -Wshadow warning. 2014-12-05 20:33:24 -06:00
Lioncash
9bcadc8029 Common: Remove locale based functions from CommonFuncs.
Since %f isn't used anymore in the shader generators, these can go.
2014-12-05 20:55:29 -05:00
skidau
f7a16eca84 Merge pull request #1437 from skidau/Remove-DSP-thread-option
Removed the DSP LLE on separate thread option.
2014-12-06 10:54:53 +11:00
skidau
757077e6fb Merge pull request #1654 from skidau/Fix-TLB-Cache
TLB cache fixes
2014-12-06 10:41:21 +11:00
skidau
d485acdb51 Stored a copy of the PTE in the TLB like the real hardware does.
Updated PTE.R bit on Write and Instruction fetch.
Added code to read the PTE from MEM2 if the PTE is stored there.
Refactored the two hash functions to reduce code duplication.
Updated save state version.
2014-12-06 10:28:34 +11:00
Rodolfo Bogado
c7bb8fba9e Added support test for bbox and some naming corrections 2014-12-05 18:51:23 -03:00
Rodolfo Bogado
93b4540e19 Add HW bounding Box support to d3d backend 2014-12-05 15:03:24 -03:00
Markus Wick
f00ad2e65c Merge pull request #1656 from kayru/orthographic_projection_epsilon
Moved projection epsilon back to g_fProjectionMatrix[15]
2014-12-05 17:34:50 +01:00
skidau
997681b65a Removed the tag check in InvalidateTLBEntry. All four TLB entries are always cleared on each invalidate command.
Initialised the TLB cache to start from a consistent state on reset.
2014-12-05 19:56:45 +11:00
Yuriy O'Donnell
7ba417b73d Moved projection epsilon back to g_fProjectionMatrix[15], which essentially scales vertices instead of just biasing. 2014-12-05 09:41:41 +01:00
skidau
693f413364 Updated C bit on TLB cache hits.
Added TLB state to the save state file.
2014-12-05 14:29:13 +11:00
Lioncash
c617b6c722 Merge pull request #1652 from lioncash/delete
DiscIO: Remove some explicit deletes
2014-12-04 19:51:21 -05:00
Ryan Houdek
a381d25d76 Merge pull request #1651 from Armada651/resolve-layer
FramebufferManager: Bind only the first framebuffer layer when the EFB only has one layer.
2014-12-04 17:52:22 -06:00
Jules Blok
42bb48bd46 FramebufferManager: Bind only the first framebuffer layer when the EFB only has one layer. 2014-12-05 00:36:10 +01:00
Tillmann Karras
8d9a30b370 WiimoteReal: use inheritance instead of #ifdef 2014-12-05 00:16:41 +01:00
Lioncash
f14f0caea6 DiscIO: Remove some explicit deletes 2014-12-04 11:39:20 -05:00
Tillmann Karras
94197b604e WiimoteReal: inline unnecessary function 2014-12-04 17:09:12 +01:00
Tillmann Karras
d087cb95cd WiimoteReal: shuffle code around 2014-12-04 17:09:12 +01:00
Tillmann Karras
a1e974fedf WiimoteReal: add m_ prefix to member variables 2014-12-04 17:09:12 +01:00
Markus Wick
02dae1d1ba VideoCommon: fix include order 2014-12-04 15:15:16 +01:00
Rohit Nirmal
e7ddaf86f5 Fix building with PCH disabled. 2014-12-03 22:01:12 -06:00
skidau
7bc78827ed Merge pull request #1574 from degasus/profiler
Common: Add a built-in profiler
2014-12-04 13:22:31 +11:00
Lioncash
4c09f3ab05 Merge pull request #1637 from lioncash/dim
FrameTools: Fix dimming of controller settings menu item
2014-12-03 21:20:58 -05:00
skidau
b1b7ae9f6a Merge pull request #1644 from FioraAeterna/fixtlb
TLB: fix backwards exception check
2014-12-04 13:19:03 +11:00
skidau
4a424e93a4 Merge pull request #1622 from FioraAeterna/texmtxfloat4
Vertex loader: optimize texmtx_write_float4
2014-12-04 13:10:22 +11:00
Rohit Nirmal
ac22a2184b Fix building with PCH disabled. 2014-12-03 19:59:47 -06:00
Ryan Houdek
d8cb976bba Merge pull request #1639 from Sonicadvance1/aarch64_improvements
Aarch64 improvements
2014-12-03 19:15:55 -06:00
Lioncash
692f4496ba Merge pull request #1646 from lioncash/header
Jit: Remove unnecessary include
2014-12-03 20:12:01 -05:00
Lioncash
c715a4f8ef Jit: Remove unnecessary include 2014-12-03 17:30:57 -05:00
skidau
bfc62d2ada Merge pull request #1366 from kayru/orthographic_projection_epsilon
Added projection matrix epsilon that fixes depth clipping issues in some games
2014-12-04 09:10:36 +11:00
magumagu
6b34b1b0d0 JIT: remove unnecessary uses of MMU flag. 2014-12-03 14:06:06 -08:00
magumagu
c3b36de51e HLE code replacement: remove unused code. 2014-12-03 14:05:05 -08:00
Lioncash
241c94d337 Merge pull request #1645 from magumagu/jit-unused-flag
JIT: remove unused flag.
2014-12-03 16:13:31 -05:00
Lioncash
88cd27bbca Merge pull request #1392 from kayru/d3d_viewport_depth
D3D: Replaced shader-based depth range remap with viewport
2014-12-03 14:49:30 -05:00
Fiora
e3578683e3 Vertex loader: optimize texmtx_write_float4
Seems to be pretty high in the profile in some geometry-heavy games like The
Last Story, and the compiler-generated assembly is terrifyingly bad, so
SSE-ize it.
2014-12-03 11:17:05 -08:00
Fiora
a4c6cf85e9 TLB: fix backwards exception check 2014-12-03 06:00:23 -08:00
skidau
b9b3277fb5 Merge pull request #1618 from JosJuice/dvd-low-open-partition
Fix Wii disc partitions
2014-12-03 21:24:56 +11:00
JosJuice
a2566bd397 DiscIO: Safety check when allocating memory for TMD 2014-12-03 10:54:09 +01:00
Ryan Houdek
5c3bbf7409 Works around broken Intel Windows video drivers.
Just use regular boolean negation in our pixel shader's depth test everywhere except on Qualcomm.
This works around a bug in the Intel Windows driver where comparing a boolean value against true or false fails but boolean negation works fine.
Quite silly.

Should fix issues #7830 and #7899.
2014-12-03 00:33:42 -06:00
Ryan Houdek
71e4e67ae1 [AArch64] Only flush registers that are needed with interpreter fallback.
We try to keep as many registers as possible in callee saved registers, so if we have guest registers in the correct registers and the interpreter
call we are falling back to doesn't need the registers then we can dump just those ones. Which means we don't have to dump 100% of our register state
when falling to the interpreter.
2014-12-02 21:08:38 -06:00
Ryan Houdek
71b77f3173 [AArch64] Makes some integer instructions more clear what they're doing.
ComputeRC was a bit unclear by using 64bit registers for setting the immediate and then calling SXTW on a 6b4it register which is just a bit obscure.
When the source register is an immediate in cntlzwx, just use the built in GCC function instead of our own implementing for counting leading zeros.
2014-12-02 21:08:38 -06:00
Ryan Houdek
8dfb8d8ad5 [AArch64] Implements HLE function injection 2014-12-02 21:08:38 -06:00
Ryan Houdek
51ad798105 [AArch64] Implements block linking.
Before block linking was enabled but it wasn't ever implemented.
Implements link blocks and destroy block functions and moves the downcount check in the WriteExit function so it doesn't get overwritten when linking.
2014-12-02 21:08:38 -06:00
Ryan Houdek
ca04601b14 [AArch64] Fixes the dispatcher
Changes the dispatcher to make sure to we are saving the LR(X30) to the stack. Also makes sure to keep the stack aligned.
AArch64's AAPCS64 mandates the stack to be quad-word aligned.

Fixes the dispatcher from infinite looping due to a downcount check jumping to the dispatcher. This was because checking exceptions and the state
pointer wouldn't reset the global conditional flags. So it would leave the timing/exception, jump to the start of the dispatcher and then jump back
again due to the conditional branch.
2014-12-02 21:08:38 -06:00
Ryan Houdek
c3c80e9440 [AArch64] Improves the register cache.
Removes the REG_AWAY nonsense I was doing. I've got to get the JIT more up to speed before thinking of insane register cache things.
Also fixes a bug in immediate setting where if the register being set to an immediate already had a host register tied to it then it wouldn't free the
register it had. Resulting in register exhaustion.
2014-12-02 21:08:38 -06:00
Ryan Houdek
2c39d4044d [AArch64] Add loadstore paired emitter instructions. 2014-12-02 21:08:34 -06:00
Lioncash
22209bcc62 Merge pull request #1620 from Armada651/ogl-msaa-array
OGL: Don't use texture arrays for MSAA.
2014-12-02 20:50:09 -05:00
Jules Blok
40920b3823 OGL: Don't use texture arrays for MSAA.
This solves a performance regression on AMD cards.
We don't currently support stereoscopy for MSAA anyway.
2014-12-03 01:39:43 +01:00
Lioncash
8f08601499 FrameTools: Fix dimming of controller settings menu item 2014-12-02 19:18:15 -05:00
degasus
94d9d138d9 Common: Add a built-in profiler 2014-12-03 00:50:41 +01:00
Ryan Houdek
08660c89ad Fix register usage detection in PPCAnalyst.
lmw/stmw weren't properly setting input and output registers since they use multiple registers.
dcbz was just missing a flag in the instruction tables.
2014-12-02 16:12:33 -06:00
Ryan Houdek
e40f129fdd Merge pull request #1635 from FioraAeterna/fixprofiler2
JIT: fix profiler call
2014-12-02 14:39:25 -06:00
Fiora
863fb91cad JIT: fix profiler call
Sometimes this seems to require a 64-bit offset, so use CallFunction instead
2014-12-02 10:17:58 -08:00
Lioncash
734aac54a8 Merge pull request #1631 from lioncash/id
DolphinWX: Specify wxID_ANY where -1 is used in controls
2014-12-02 12:01:29 -05:00
Augustin Cavalier
726b50e06e Fix HiDPI loading logic. 2014-12-02 09:45:00 -05:00
Augustin Cavalier
a5cfe85c8d Support HiDPI flags & rating images.
There aren't any yet, it's up to up to Stevoisiak and MaJoR to create
them :)
2014-12-02 09:44:56 -05:00
Augustin Cavalier
320c5f2545 Cast the result of GetSize() to "unsigned long long".
Squelches a warning on Mac OS X.
2014-12-02 09:44:52 -05:00
Augustin Cavalier
43473e09d1 Implement the "Rating" column.
Looks like I forgot to do this...
2014-12-02 09:44:47 -05:00
Augustin Cavalier
1d4b3a90eb Micro-optimize RenderWidgetHasFocus(). 2014-12-02 09:44:31 -05:00