Commit Graph

11260 Commits

Author SHA1 Message Date
Lioncash 815c29f6f4 Merge pull request #1682 from JosJuice/volumehandler-return
VolumeHandler: Return success value
2014-12-11 20:38:43 -05:00
Rachel Bryk 6a2973ac1d Fix hires texture path. 2014-12-11 19:24:16 -05:00
Dolphin Bot 971a95aece Merge pull request #1503 from kayru/d3d_optimization_cache
D3D: Filter redundant API calls by caching state in StateManager
2014-12-11 23:38:35 +01:00
Unknown W. Brackets 029f8c3c3f OGL: Ensure a VAO is bound for all attributeless.
Unfortunately, some of these cases are not well tested, because I don't
know how to reproduce them.
2014-12-11 09:42:49 -08:00
Unknown W. Brackets de2abbed17 OGL: Move attributeless VAO creation to Init.
This way we won't trash an existing bound VBO by mistake.
2014-12-11 01:00:37 -08:00
Unknown W. Brackets 290fd545e6 OGL: Bind the attributeless VAO before EFB copies.
Fixes crashes in Zack & Wiki using an older NVIDIA driver.
2014-12-10 23:19:18 -08:00
Unknown W. Brackets 0861cb8744 OGL: Properly reset the attributeless VAO. 2014-12-10 20:11:48 -08:00
skidau fe67230663 Merge pull request #1670 from lioncash/array
FifoRecorder: Use std::vector for m_Ram and m_ExRam
2014-12-11 14:26:09 +11:00
skidau 30b34f3b2e Moved the GC Adapter processing under "Standard Controller" as it appears the adapter does not work with controllers other than the standard controller (pads, bongos, some dance mats). 2014-12-11 14:06:35 +11:00
skidau 8fdd04e647 Fixed wireless GC controller detection.
Made the controller update thread-safe.
Added pad origin to wired and wireless pads only.
2014-12-11 11:15:36 +11:00
JosJuice 16f3970c79 VolumeHandler: Return success value 2014-12-10 22:25:02 +01:00
Fiora 3effd08843 FIFO: allocate slightly more for SIMD vertex loader overreads
May fix crashes in rare cases.
2014-12-10 05:52:55 -08:00
skidau 344c43cc74 Retrieved the endpoint addresses of the GC Adapter via the descriptor. 2014-12-10 21:35:30 +11:00
skidau 8d4a47d40c Added GameCube Adapter support.
The libusb driver must be installed on the adapter (e.g. zadig can be used to install the driver in Windows).  GameCube pad controllers are supported and will override the current input device assigned to the port.  GameCube controller buttons are auto-configured and cannot be re-assigned.  Rumble is supported.  Hotplug is supported while playing a game.  If a controller is unplugged from the adapter, Dolphin will fallback to using the host input device on that port.  If a port on the adapter is unused, Dolphin will use the host input device for that port, allowing a mixture of host input devices and controllers connected to the adapter.

The adapter support can be disabled in the Controllers config if the OS driver is preferred (allowing the pad buttons to be reconfigured).

One adapter per system is supported.
2014-12-10 20:45:45 +11:00
Markus Wick 4c139ca7cc Merge pull request #1609 from degasus/datareader
VideoCommon: Datareader
2014-12-10 06:53:11 +01:00
degasus bf65c49609 PixelShaderGen: merge OGL+D3D bbox 2014-12-09 19:32:24 +01:00
degasus 3fc7e55cc4 VideoCommon: clean up VertexLoader 2014-12-09 18:56:27 +01:00
degasus 02cdb41d3d VideoCommon: Rename s_pCurBufferPointer 2014-12-09 18:56:27 +01:00
degasus 50de4238bb VertexLoader: Move the old Datareader function into VertexLoader 2014-12-09 18:56:27 +01:00
degasus 21970c4a2a VideoCommon: cleanup OpcodeDecoder 2014-12-09 18:56:27 +01:00
degasus 4b22885ed8 VideoCommon: fifo cleanups 2014-12-09 18:56:27 +01:00
degasus 27f984c02e VideoCommon: rewrite DataReader 2014-12-09 18:56:27 +01:00
Rohit Nirmal 2997689d08 DolphinQt: Silence -Wshadow warnings. 2014-12-09 10:36:16 -06:00
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
Steven Vascellaro 843bbc8e2d ISOProperties: Rename Date to Build Date 2014-12-08 16:22:12 -05: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 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
Stevoisiak 4e87cb578e Change DSP settings to Audio settings 2014-12-02 13:50:00 -05: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
JosJuice bbd7370d82 DVDInterface: Tweak speeds 2014-12-02 12:27:03 +01:00
Lioncash 10bfbebc78 DolphinWX: Specify wxID_ANY where -1 is used in controls 2014-12-01 23:02:50 -05:00
Lioncash 54f1e3a3c1 Merge pull request #1630 from lioncash/unused
WII_IPC_HLE_Device_fs: Remove unused macro constant
2014-12-01 21:49:07 -05:00
Ryan Houdek 64124a0d21 Merge pull request #1628 from lioncash/tl
InputConfigDiag: Clean up dialog title translation handling
2014-12-01 20:40:49 -06:00
skidau b34c80d138 Merge pull request #1626 from kamiyo/fix-wiimote-volume-divisor
Fix Wiimote speaker divisor for format 0x00
2014-12-02 12:51:15 +11:00
Lioncash 11e6d75ea6 WII_IPC_HLE_Device_fs: Remove unused macro constant 2014-12-01 19:33:53 -05:00
Lioncash af5b1063bf Merge pull request #1619 from FioraAeterna/removepxor
JIT: remove unnecessary pxor in paired stores
2014-12-01 15:50:31 -05:00
Lioncash 27540ba3fb InputConfigDiag: Clean up dialog title translation handling 2014-12-01 15:47:38 -05:00
comex 05cb1ff136 Remove runtime OS X version check.
My recent update to that check broke compilation on 10.9:
https://code.google.com/p/dolphin-emu/issues/detail?id=7900

However, on further review, the check isn't actually necessary.  If the
OS X version is older than LSMinimumSystemVersion in Info.plist, the
system will generally refuse to run the binary in the first place.  You
can try to launch it via a terminal, but at that point it's the user's
problem if it crashes.
2014-12-01 14:21:24 -05:00
kamiyo e8c393b00f Fix wiimote speaker divisor.
Playing with the wiimote volume in the Wii menu in-game, I found that the range for m_reg_speaker.volume is 0 -127, not 0 - 64.
2014-12-01 13:06:53 -05:00
Rohit Nirmal a53c5217bb Common: Remove goto in MemArena. 2014-12-01 11:47:37 -06:00
Rohit Nirmal e3abad234c Common: Remove gotos in FileUtil, and replace FILE*s with IOFile/ifstreams. 2014-12-01 11:47:36 -06:00
Lioncash 21d039059e ControllerConfigDiag: Fix Linux builds 2014-12-01 03:53:32 -05:00
Lioncash 5e2888bff6 DolphinWX: Add new icon for the controller menu. 2014-12-01 03:50:44 -05:00
Lioncash 896304fd07 ControllerConfigDiag: Disable controller type changes if netplay or a movie is active. 2014-12-01 03:36:09 -05:00
Lioncash 7b54d8ad10 ControllerConfigDiag: Remove now obsolete TODOs 2014-12-01 03:36:08 -05:00
Lioncash cad8ae3be1 WiimoteConfigDiag: Rename to ControllerConfigDiag. 2014-12-01 03:36:07 -05:00
Lioncash e801fcead9 WiimoteConfigDiag: Unify controller menu with the GameCube controllers. 2014-12-01 03:36:04 -05:00
Lioncash 00dcaba37d WiimoteConfigDiag: Size the config buttons correctly 2014-12-01 03:36:02 -05:00
Lioncash 22c547f6fb WiimoteConfigDiag: Remove trailing whitespace 2014-12-01 03:36:01 -05:00
Lioncash 1791897815 WiimoteConfigDiag: Fix assertion problems on non-OSX OSes. 2014-12-01 03:35:59 -05:00
Lioncash 94d033020e WiimoteConfigDiag: Split UI sizer creation into their own functions. 2014-12-01 03:35:58 -05:00
Lioncash d17a054e75 WiimoteConfigDiag: Move GameCube controller settings over
Beginning of unifying the controller settings. No functionality yet.
2014-12-01 03:35:57 -05:00
Lioncash 6df67bf38f Merge pull request #1597 from unknownbrackets/gcz-tweaks
Tweaks to gcz compression / decompression
2014-12-01 03:18:24 -05:00
Ryan Houdek 4946c6876d Merge pull request #1607 from Sonicadvance1/armv7-optimizations
A whole bunch of ARMv7 optimizations and minor fixes.
2014-11-30 15:48:27 -06:00
Ryan Houdek 414e36d8c9 Merge pull request #1258 from FioraAeterna/avoidfmulround
JIT: optimize single-precision ops based on knowledge of their inputs
2014-11-30 15:47:34 -06:00
Ryan Houdek d3c278cc33 Merge pull request #1610 from rohit-n/sign-compare
VideoCommon: Fix -Wsign-compare warnings.
2014-11-30 15:42:34 -06:00
Ryan Houdek 7c38d04a40 Merge pull request #1614 from Sonicadvance1/fix_aarch64_bswap
[AArch64] Workaround builtin byteswap bug.
2014-11-30 15:41:35 -06:00
Ryan Houdek 4a687f2641 Merge pull request #1616 from Sonicadvance1/asimd_is_neon
[Android] Fix NEON detection with AArch64
2014-11-30 15:41:28 -06:00
Fiora 644a661bf1 JIT: remove unnecessary pxor in paired stores
I don't think this is necessary anymore?
2014-11-30 08:11:45 -08:00
magumagu a09283cf9f ISOProperties: show all paritions on property page. 2014-11-30 16:38:15 +01:00
magumagu 4bb48d09dd DiskIO: Clean up GetTMD() API. 2014-11-30 16:38:13 +01:00
magumagu b1df4e5986 Make DVDLowOpenPartition actually change partitions. 2014-11-30 16:01:05 +01:00
Ryan Houdek 50582b1d74 [Android] Fix NEON detection with AArch64
On AArch64 asimd is the new name for NEON.
This fixes a message on application start in Android about the device not supporting NEON.
If it's AArch64 then it supports NEON!
2014-11-30 01:33:11 -06:00
Ryan Houdek c27ee21dd9 [AArch64] Workaround builtin byteswap bug.
The builtin byteswap routines cause critical failure on AArch64 when built with the Android toolchain.
I didn't experience this issue when building for Linux using a local qemu chroot.
Seems to be only an issue with the Android toolchain when building AArch64.
Use our generic version instead.
2014-11-30 01:23:03 -06:00
Ryan Houdek b689954a71 Update the android cmake toolchain to latest.
To properly support 64bit architectures and clang we need the latest version.
2014-11-30 01:05:37 -06:00
Ryan Houdek cd13d2d66f [ARM32] Fix a couple bugs in the paired loadstore routines.
This code was obviously wrong, we were sign extending 8 bit unsigned values and loading from the wrong offset as well.
This fixes a bug in Muramasa where some colours were going insane.
2014-11-30 04:10:17 +00:00
Ryan Houdek b848365f78 [ARM32] Minor optimization in paired loadstores.
When the offset can fit in the instruction encoding make sure to do so.
2014-11-30 04:10:16 +00:00
Ryan Houdek 52c6fb180b [ARM32] Moves loadstore extend flag to backpatch code. 2014-11-30 04:10:16 +00:00
Ryan Houdek 32dc105aa3 [ARM32] Eat a register to store our memory base.
This saves at least two instructions per fastmem operation.
2014-11-30 04:10:16 +00:00
Ryan Houdek e2f8286415 [ARM32] Adds unsigned compares.
Superscedes PR #1131.
Optimizes cmpi a bit.
2014-11-30 04:10:16 +00:00
Ryan Houdek 581ab9edec [ARM32] cntlzwx optimization if source is immediate 2014-11-30 04:10:16 +00:00
Ryan Houdek 9c82adb14f [ARM32] negx optimization if source is immediate 2014-11-30 04:10:15 +00:00
Ryan Houdek 1dbb39f791 [ARM32] srawix optimization when source is an immediate. 2014-11-30 04:10:15 +00:00
Ryan Houdek fca0fd9dd5 [ARM32] rlwimix and rlwnmx optimizations. 2014-11-30 04:10:15 +00:00
Rohit Nirmal 239eaf122a VideoCommon: Fix -Wsign-compare warnings. 2014-11-29 17:40:14 -06:00
magumagu c693cf46e9 JIT: remove unused flag. 2014-11-29 12:41:36 -08:00
Fiora 72c96c20d3 JIT: more optimizing of float ops based on known input characteristics
If the inputs are both float singles, and the top half is known to be identical
to the bottom half, we can use packed arithmetic instead of scalar to skip
the movddup.

This is slower on a few rather old CPUs, plus the Atom+Silvermont, so detect
Atom and disable it in that case.

Also avoid PPC_FP on stores if we know that the output came from a float op.
2014-11-29 11:33:11 -08:00
Fiora 4e0591cdf1 JIT: float instruction attribute fixes, fix binding mistakes
These instructions modify only the bottom halves of the output register,
so the output register needs to be treated as an input too.
2014-11-29 11:30:52 -08:00
Fiora 8d039a77af JIT: minor cleanup, avoid MOVSD where MOVAPD will do
Avoids false dependencies.
2014-11-29 11:30:51 -08:00
Fiora 7df50b0710 JIT: skip weird fmul rounding if the input is known to be single precision 2014-11-29 11:30:51 -08:00
Yuriy O'Donnell 36b886cb80 D3D: Viewport min and max depth is now clamped to [0..1] range 2014-11-29 11:42:53 +01:00
Yuriy O'Donnell a886d8a8ee Renamed DEPTHPARAMS to PIXELCENTERCORRECTION
This shader constant was previously used for depth remapping in D3D and for pixel center correction. Now it only serves one purpose and the new name makes it clear.
2014-11-29 11:42:52 +01:00
Yuriy O'Donnell 1fe3d07cbd D3D: Removed somewhat mysterious comment
It would be good to know which games exactly exhibited the issue.
2014-11-29 11:11:28 +01:00
Yuriy O'Donnell cc2227fbc3 D3D: Replaced shader-based depth range remap with viewport
This fixes UI rendering in some games mentioned in https://code.google.com/p/dolphin-emu/issues/detail?id=7785
2014-11-29 11:11:28 +01:00
Ryan Houdek 38dfc970df Fixes OpenGL ES rendering.
sampler2DArray doesn't have a default precision, so we need to set it ourselves.
2014-11-29 01:27:47 -06:00
Ryan Houdek f588a82b9a Merge pull request #1294 from FioraAeterna/noaccuratefcmp
JIT: remove "accurate fcmp" option
2014-11-28 22:48:11 -06:00
Ryan Houdek 1aed2542c7 Merge pull request #1602 from FioraAeterna/fixforce25bitimprecise
JIT: fix Force25BitPrecision with accurate single precision mode off
2014-11-28 22:42:44 -06:00
Ryan Houdek e7daf6b3bc Merge pull request #1606 from FioraAeterna/vertexloadercall
Vertex loader: use ABI_CallFunction
2014-11-28 22:40:06 -06:00
Ryan Houdek 5003618587 Merge pull request #1605 from FioraAeterna/fixcrormerge
JIT: fix fcmp+cror merging bug
2014-11-28 22:39:13 -06:00
Ryan Houdek 1a85df0459 Merge pull request #1603 from FioraAeterna/nofastinterrupts
JIT: remove "fast interrupts" option set and then used nowhere
2014-11-28 22:37:52 -06:00
Ryan Houdek 2d2baec65d Merge pull request #1595 from degasus/master
OGL: require GL version >= 3.0
2014-11-28 22:37:35 -06:00
Fiora 7acd5eba17 Vertex loader: use ABI_CallFunction
Should result in faster/shorter code sequences on platforms where generated
code is close enough to the code segment (e.g. Windows).
2014-11-28 20:26:00 -08:00
Ryan Houdek ec3d6da7b5 [ARM32] Remove conditional execution from store instructions. 2014-11-29 02:44:17 +00:00
Ryan Houdek 6c399ce9ae [ARM32] Removes a block of conditional execution in the dispatcher. 2014-11-29 02:42:30 +00:00
Ryan Houdek e358696d46 [ARM32] Removes conditional execution from ARMv7's Jit function. 2014-11-29 02:42:22 +00:00
Lioncash c2e5715034 Merge pull request #1601 from RachelBryk/wiimote-hotkey2
Fix wiimote connect hotkeys.
2014-11-28 19:50:13 -05:00
Fiora d42305aba0 JIT: fix fcmp+cror merging bug
Destination CR bit needs to be cleared if it's not one of the sources.
2014-11-28 16:11:04 -08:00
Jasper St. Pierre 854f6b8688 HW: Poll system input from system timers
Rather than playing terrible hacks to determine the start of input
frames, just update system input periodically. Specifically, every
60th of a second.
2014-11-28 10:56:11 -08:00
Jasper St. Pierre f3b739341e HW: Remove UpdateOutput
All of the rumble interfaces are now immediate mode.
2014-11-28 10:54:04 -08:00
Jasper St. Pierre 86e4da2c07 ForceFeedback: Apply immediately as well 2014-11-28 10:54:04 -08:00
Jasper St. Pierre 1958a10b6f XInput: Apply immediately as well 2014-11-28 10:54:04 -08:00
Jasper St. Pierre 1b3d0173f5 SDL: Apply updates immediately rather than going through UpdateOutput
We're going to remove UpdateOutput as it's redundant, and horribly
complicates the code.
2014-11-28 10:54:03 -08:00
Jasper St. Pierre 1cee3b8cc6 WiimoteEmu: Hardcode acceleration calibration values
Now we don't have any runtime calibration at all.
2014-11-28 10:51:30 -08:00
Jasper St. Pierre 5f6cfd67b7 Nunchuk: Hardcode Nunchuk accelerometre calibration values as well 2014-11-28 10:51:30 -08:00
Jasper St. Pierre 211eafc130 Nunchuk: Hardcode Nunchuk stick calibration values
The game can never change these, so there's no reason to make it
dynamic. Just put the constants in the code.

While we're at it, take the time to clean up the code and also
and document several of the hacks we're doing inside to make the code
clearer to understand.
2014-11-28 10:51:30 -08:00
Jasper St. Pierre 64014d1dcd Nunchuk: Use the accel_cal struct directly in nu_cal 2014-11-28 10:51:30 -08:00
Jasper St. Pierre cd95002356 WiimoteHid: Remove unused structs 2014-11-28 10:51:30 -08:00
Jasper St. Pierre fca9b491cc WiimoteEmu: Remove Spy method
This is the only use for a lot of unused methods and structs, and it's a
poorly written mess that doesn't even compile. Just remove it so we can
clean up the rest of a lot of code.
2014-11-28 10:51:30 -08:00
Jasper St. Pierre e43ad58a3a GCPad: Clean up Motor/Rumble interfaces
Remove the duplication here and just have one Rumble interface that
takes a single strength parameter.
2014-11-28 10:50:45 -08:00
Jasper St. Pierre f2787f620e ControllerInterface: Make UpdateInput / UpdateOutput return void
The return values here have never been checked, so it doesn't make sense
to return a value to begin with.
2014-11-28 10:50:45 -08:00
Jasper St. Pierre 61fcfc4bf2 ControllerInterface: Remove unused ClearInputState 2014-11-28 10:50:45 -08:00
Jasper St. Pierre 367a42dcfd ControllerInterface: Implement dummy UpdateInput / UpdateOutputs
Make the implementation here a bit easier.
2014-11-28 10:50:45 -08:00
Jasper St. Pierre 0c056c6411 DInput: Remove the unsupported Lights output
The LEDs feature doesn't actually do anything: the SetState method is
entirely commented out.
2014-11-28 10:50:45 -08:00
Jasper St. Pierre b5d4e8d37e ControllerInterface: Remove unused "force" parameter
I'm not sure when this nonsense of forcing locking the mutex when it's
already taken should have ever taken effect, but let's be thankful it
isn't now. That was a badly worded sentence.
2014-11-28 10:50:45 -08:00
Jasper St. Pierre 6aa1a59ee8 SI: Clean up controller-like devices with subclassing
This takes the giant mess of controller-like devices (dance mat and
steering wheel) down to something more manageable, similar to how
the Donkey Konga bongo controller works.

Based-on-a-patch-by: comex <comexk@gmail.com>
2014-11-28 10:50:45 -08:00
Ryan Houdek ce059769f6 Merge pull request #1439 from Armada651/ogl-stereo-3d
OGL: Stereoscopic 3D Support
2014-11-28 11:45:38 -06:00
Fiora 41f5ef3304 JIT: remove "fast interrupts" option set and then used nowhere 2014-11-28 06:42:40 -08:00
Fiora 3e893913dd JIT: fix Force25BitPrecision with accurate single precision mode off
Doesn't affect anything now, but it's more correct (and should make setting
AccurateSinglePrecision to false work properly now).
2014-11-28 06:39:47 -08:00
Rachel Bryk df9ace0985 Fix wiimote connect hotkeys. 2014-11-28 08:55:19 -05:00
Fiora 561e96b080 JIT: clear FIFO write addresses when block cache is cleared
Fixes a spurious FIFO write check which caused a flags locking assert in
Splinter Cell: Double Agent.
2014-11-27 17:15:01 -08:00
Unknown W. Brackets 815b7bec96 DiscIO: Change a memset() to zero initialization. 2014-11-27 11:12:17 -08:00
Unknown W. Brackets f54bf81520 DiscIO: Avoid zeroing buffer when compressing gcz.
This saves 6% time.
2014-11-27 08:58:09 -08:00
Unknown W. Brackets 2635e7d9ea DiscIO: Decompress to file using a larger buffer.
This improves performance by around 20% for me, and the memory use impact
is negligible considering Dolphin is otherwise unusable.
2014-11-27 08:34:44 -08:00
Unknown W. Brackets f2f83a0c60 DolphinWX: Allow cancelling gcz compression. 2014-11-27 07:53:28 -08:00
Jules Blok 6d51455195 VideoConfig: Further optimize convergence and separation values and update their descriptions.
Previous convergence distance was much too large.
2014-11-27 16:19:26 +01:00
Jules Blok b3c6602d06 OGL: Only show the options when stereoscopy was enabled in the INI file.
We'll enable the stereoscopy options globally when it is ready for release.
2014-11-27 16:17:37 +01:00
Augustin Cavalier 74291017e5 SystemInfo: various cleanup.
* Rename the copy slot to match naming convention elsewhere
 * Remove the Mac 10.7/10.8 detection as we don't support it now
2014-11-26 15:40:38 -05:00
Augustin Cavalier 59c4ccfa75 GameGrid: enable uniform item sizes.
Looks much nicer this way.
2014-11-26 15:37:12 -05:00
degasus c63a38088a OGL: require GL version >= 3.0
This "fix" a crash because of glVertexAttribI only available on gl3+ contexts.
2014-11-26 21:33:47 +01:00
Augustin Cavalier 9180257c4a "Gamelist view style" -> "List style"
* Cleaner & more concise.
 * Also add some "Alt" shortcuts
2014-11-26 15:32:55 -05:00
Augustin Cavalier ca8316ac54 Remove note about reusing the render widget.
This is actually not possible due to how Qt manages child widgets...
2014-11-26 15:30:35 -05:00
Rohit Nirmal 84b060d313 Fix building with PCH disabled. 2014-11-26 10:21:04 -06:00
Lioncash 25492f3d70 Merge pull request #1593 from lioncash/arm
Arm(64)Emitter: Make some variables static
2014-11-26 07:56:21 -05:00
Lioncash e9b09a4c9f Arm(64)Emitter: Make some variables static 2014-11-25 23:27:48 -05:00
skidau b806680eac Merge pull request #1522 from jcowgill/sfml-2.1
Update / Port to SFML 2.1
2014-11-26 12:33:03 +11:00
skidau 69bd1562e2 Merge pull request #1561 from comex/10.9
Update OS X Requirement to 10.9 + fixes
2014-11-26 12:31:28 +11:00
Fiora 3be31ca2c8 JIT: remove "accurate fcmp" option
This doesn't seem to be necessary anymore now that FPRF is implemented in the
JIT. Technically, this isn't the same as before, since the JIT doesn't
implement the fcmp exception semantics, but as far as testing has shown, this
doesn't seem necessary.

This should make games that use FPRF a few percent faster (e.g. F-Zero GX)
since fcmpx no longer has to be fallbacked.
2014-11-25 09:54:40 -08:00
Lioncash 4afb85ef33 Merge pull request #1584 from degasus/master
OGL: also show driver warnings on release builds
2014-11-25 12:41:47 -05:00
Lioncash aa92797f93 Merge pull request #1582 from Stevoisiak/newImprovedFormatting
More formatting and consistency fixes
2014-11-25 12:41:32 -05:00
Lioncash dcdd4e51f6 Merge pull request #1589 from lioncash/x11
VideoOGL: Move X11 wxWidgets utilities to DolphinWX
2014-11-25 12:41:00 -05:00
James Cowgill a93f86330e Port dolphin to SFML 2.1 2014-11-25 16:44:38 +00:00
Pringo 217ca9ba2b http -> https for Wiki Seach 2014-11-24 22:06:41 -08:00
comex b36b55cfcb Upgrade AudioUnit API usage.
weird that such a simple change doesn't seem to have any obvious
documentation on Apple's website or elsewhere...
2014-11-25 00:42:21 -05:00
comex 759ea3bce7 Update Main.cpp version checks. 2014-11-25 00:27:13 -05:00
comex e631f68c1b Switch from deprecated Carbon idle tickling to Cocoa power assertions.
Also, this avoids keeping the system awake if a game is not being
played.

Frankly, I don't know what the point of precisely tracking these things
is, but that's how the API works.  Feel free to add analogous
functionality on other platforms.
2014-11-25 00:27:13 -05:00
comex aae234c5d7 Fix name conflict between SoundTouch BOOL and ObjC BOOL. 2014-11-25 00:27:13 -05:00
comex 245ff601b7 Merge pull request #1552 from waddlesplash/dolphin-qt
DolphinQt: GameList!
2014-11-25 00:24:32 -05:00
Lioncash c0fd319295 VideoOGL: Move X11 wxWidgets utilities to DolphinWX 2014-11-24 21:15:52 -05:00
Gabriel Corona 5b9aeaa686 Use CLI argument for Linux perf JIT support 2014-11-24 23:30:29 +01:00
Gabriel Corona 9722ae2a5d Move the JIT registration logic in its own file
Move the JITed function/basic-block registration logic out of the CPU
subsystem in order to add JIT registration to JITed DSP and
Video/VertexLoader code.

This necessary in order to add /tmp/perf-$pid.map support to other
JITed code as they need to write to the same file.
2014-11-24 23:18:18 +01:00
Gabriel Corona cdce5ace25 Add Linux perf JIT support (/tmp/perf-$pid.map)
'perf' is the standard builtin tool for performance analysis on recent
Linux kernel. Its source code is shipped within the kernel repository.

'perf' has basic support for JIT. For each process, it can read a file
named /tmp/perf-$PID.map. This file contains mapping from address
range to function name in the format:

  41187e2a 1a EmuCode_804a33fc

with the following entries:

 1. beginning of the range (hexadecimal);
 2. size of the range (hexadecimal);
 3. name of the function.

We supply the PowerPC address of the basic block as function name.

Usage:

    DOLPHIN_PERF_DIR=/tmp dolphin-emu &
    perf record -F99 -p $(pgrep dolphin-emu) --call-graph dwarf
    perf script | stackcollapse-perf.pl | grep EmuCode__ | flamegraph.pl > profile.svg

Issue: perf does not have support for region invalidation. It reads
the file in postprocessing. It probably does not work very well if a
JIT region is reused for another basic block: wrong results should be
expected in this case. Currently, nothing is done to prevent this.
2014-11-24 23:18:18 +01:00
Stevoisiak 6da394a4d0 More formatting and consistency fixes 2014-11-24 17:16:59 -05:00
Rohit Nirmal 4d931c16ad Silence a few "zero as null pointer" warnings. 2014-11-24 12:36:46 -06:00
Jules Blok 145e0cc84c OGL: Display the stereoscopy support warning before the stereo setting is reset.
Previously the message would never display, because stereoscopy would be turned off before the warning.
2014-11-24 15:11:00 +01:00
Jules Blok a04edbcb9a VideoConfig: Add separation and convergence modifiers to the game ini. 2014-11-24 15:10:52 +01:00
Jules Blok f64aadd362 VideoConfig: Limit the StereoMonoEFBDepth option to the game ini and introduce a separate section for it. 2014-11-24 12:25:35 +01:00
Jules Blok 0f4d59f612 VideoConfig: Rename StereoFocalLength to StereoConvergence. 2014-11-24 11:58:38 +01:00
Jules Blok 9b2cd82da5 GeometryShaderGen: Set the properties of the VS_OUTPUT struct in the uid. 2014-11-23 14:30:12 +01:00
degasus ed9f258b27 GeometryShader: Don't read from output variables 2014-11-23 14:30:12 +01:00
Jules Blok 106df04e8e GeometryShaderGen: Declare the vertex array size. 2014-11-23 14:30:12 +01:00
Jules Blok 422125c1a9 GeometryShaderGen: Add comments. 2014-11-23 14:30:12 +01:00
Jules Blok a565317a6a VideoConfigDiag: Update convergence description.
The switch to the Nvidia formula reversed this setting.
2014-11-23 14:30:12 +01:00
Jules Blok 72c01e3083 VideoConfigDiag: Remove value labels. 2014-11-23 14:30:12 +01:00
Jules Blok 24e4de3643 VideoConfig: Move stereoscopy settings to the Enhancements section. 2014-11-23 14:30:12 +01:00
Jules Blok 6e62dd3415 Add stereoscopy hotkeys. 2014-11-23 14:30:12 +01:00
Jules Blok 21eabc1b9d OGL: Add warning message when stereoscopic 3D is enabled but unsupported. 2014-11-23 14:27:40 +01:00
Jules Blok 0f63186371 TextureCache: Add "Mono EFB Depth Copy" stereoscopy option. 2014-11-23 14:27:40 +01:00
Jules Blok 9994ccb342 PostProcessing: Invalidate shader when anaglyph stereoscopy is toggled. 2014-11-23 14:27:40 +01:00
Jules Blok f3ddf37d07 VideoCommon: Switch to Nvidia stereoscopy offset formula. 2014-11-23 14:27:40 +01:00
Jules Blok 8210b9c915 TextureCache: Ensure that all render target textures have as many layers as the frame buffer.
Also fixes a case where the D3D code path did not initialize num_layers leading to undefined behaviour.
2014-11-23 14:27:40 +01:00
Jules Blok 02ad1a36ea VideoConfigDiag: Update descriptions.
Since we cannot accurately calculate the eye seperation or the focal length without headtracking these values are purely virtual.
2014-11-23 14:27:40 +01:00
Jules Blok 27f3f804a0 ShaderGen: Only pass VS_OUTPUT between shaders if stereo 3D is enabled.
GLSL130 doesn't support passing structs between shaders.
This is not a problem for stereo 3D which has a GLSL150 requirement.
2014-11-23 14:27:40 +01:00
Jules Blok 51a4d6a4be GeometryShader: Adjust positions after projection.
By adjusting the positions in clip space we can avoid the re-projection.
2014-11-23 14:27:40 +01:00
Jules Blok ee76c03160 TextureCache: Recompile EFB2Tex shaders when stereo 3D is toggled. 2014-11-23 14:27:40 +01:00
Jules Blok 4d075c2efb ProgramShaderCache: Abort shader compilation if geometry shader failed to compile. 2014-11-23 14:27:40 +01:00
Jules Blok 6642af2404 OGL: Remove Virtual XFB SBS support. 2014-11-23 14:27:40 +01:00
Jules Blok acc65ee608 GeometryShader: Replicate missing position manipulations from vertex shader. 2014-11-23 14:27:40 +01:00
Jules Blok ab76cf8b5e PostProcessing: Apply color correction to the anaglyph shader.
The eyes were accidentally swapped, the left filter only allows red to pass so the left eye texture should be used in the red channel.
2014-11-23 14:27:39 +01:00
Jules Blok 081212b765 TextureCache: Force mono copies of the depth buffer.
Fixes stereoscopic stencil shadows in some games.
2014-11-23 14:27:39 +01:00
Jules Blok 3baa01fc73 VideoConfig: Use a smaller focal length default. 2014-11-23 14:27:39 +01:00
Jules Blok 6b2261deca VideoConfigDiag: Update descriptions of stereoscopy settings. 2014-11-23 14:27:39 +01:00
Jules Blok 2cb2290910 TextureCache: Fix invalid cast. 2014-11-23 14:27:39 +01:00
Jules Blok c0a5ae1746 OGL: Also redefine glFramebufferTexture on OpenGL ES. 2014-11-23 14:27:39 +01:00
Jules Blok aa57feb9a8 ProgramShaderCache: Don't call glAttachShader if no geometry shader was compiled. 2014-11-23 14:27:39 +01:00
Jules Blok f74d1b16ed OGL: Add Top-and-Bottom stereoscopy mode. 2014-11-23 14:27:39 +01:00
Jules Blok 1261bd02ca VertexShaderManager: Add stereoscopy options to swap the left and right eye. 2014-11-23 14:27:39 +01:00
Jules Blok c3ad6e7820 PostProcessing: Add support for anaglyph stereoscopy mode. 2014-11-23 14:27:39 +01:00
Jules Blok 6c8f3fa861 VideoConfig: Add StereoMode enumeration. 2014-11-23 14:27:39 +01:00
Jules Blok 0eb0c47eba Render: Improve SBS presentation.
New calculation properly takes pillar boxing into account.
2014-11-23 14:27:39 +01:00
Jules Blok d7804a4d3e Cosmetics. 2014-11-23 14:27:39 +01:00
Jules Blok 9b22e15180 VideoConfigDiag: Add stereoscopy options group. 2014-11-23 14:27:38 +01:00
Jules Blok 4d9589b35f Cosmetics. 2014-11-23 14:27:38 +01:00
Jules Blok 9b4185ffdf ShaderGen: Make use of padding to store the stereo flag. 2014-11-23 14:27:38 +01:00
Jules Blok 35342664e3 OGL: Disable stereoscopy if the GPU does not support geometry shaders. 2014-11-23 14:27:38 +01:00
Jules Blok f370cb386c ProgramShaderCache: Always generate a geometry shader UID, even if stereoscopy is disabled. 2014-11-23 14:27:38 +01:00
Jules Blok 6cacfad010 GeometryShader: Transform the projection within the geometry shader.
Reduces the amount of data transferred through uniforms.
The shearing transformation is reduced to a single multiplication/addition for optimization.
2014-11-23 14:27:38 +01:00
Jules Blok 4fd943aedd VideoConfig: Limit the Stereo 3D option to the OpenGL backend. 2014-11-23 14:27:38 +01:00
Jules Blok 284be96cd5 OGL: Recreate the framebuffers when the stereo setting changes. 2014-11-23 14:26:56 +01:00
Jules Blok 63b37e29d1 ShaderGen: Rename "eye" to "layer".
Keeping things generic.
2014-11-23 14:26:56 +01:00
Jules Blok d583720a59 GeometryShaderGen: Support stereoscopy on GPUs without support for instancing. 2014-11-23 14:26:56 +01:00
Jules Blok 176191dc16 ShaderGenCommon: Move uniforms into a common static string. 2014-11-23 14:24:09 +01:00
Jules Blok 0a72cf94cb TextureCache: Ignore the geometry shader if stereoscopy is disabled. 2014-11-23 14:24:09 +01:00
Jules Blok fa32f751d3 ShaderGen: Handle ShaderCode objects directly.
ShaderGeneratorInterface does not have virtual function members, so we have to implement each type explicitly.
2014-11-23 14:24:09 +01:00
Jules Blok b236c363de ShaderGen: Add a stereoscopy flag in the UID data. 2014-11-23 14:23:42 +01:00
Jules Blok 4fe9ceeee2 TextureCache: Set proper vertex limit in geometry shader.
Without instancing 6 vertices are output instead of 3.
2014-11-23 14:23:42 +01:00
Jules Blok 5944d15021 TextureCache: Check the number of layers before reusing a texture. 2014-11-23 14:23:42 +01:00