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
Jules Blok
272ea90ca5
GeometryShaderGen: Allow stereoscopy to be disabled.
...
Will facilitate future use of this generator for other purposes.
2014-11-23 14:23:41 +01:00
Jules Blok
80616c6e9e
TextureCache: Implement layered framebuffer support.
...
Stereoscopic EFB2Tex is now supported.
2014-11-23 14:23:41 +01:00
Jules Blok
d9e280e338
PixelShaderGen: Sample the correct texture layer.
2014-11-23 14:23:41 +01:00
Jules Blok
f6ea293027
VertexShaderManager: Compute stereoscopy projection matrices.
2014-11-23 14:23:41 +01:00
Jules Blok
c64486075d
PostProcessing: Add layered stereoscopy support.
2014-11-23 14:23:41 +01:00
Jules Blok
81e9004679
VideoConfigDiag: Add Stereo 3D option.
2014-11-23 14:23:41 +01:00
Jules Blok
2d8ec62beb
Pass VS_OUTPUT structs between shaders.
2014-11-23 14:23:41 +01:00
Jules Blok
b005f61a2e
Add geometry shader generator for stereo 3D.
2014-11-23 14:22:55 +01:00
Jules Blok
03e1bd0995
Limit Borderless Fullscreen to Windows systems.
2014-10-09 11:30:26 +02:00
Jules Blok
39f421d45d
Support the borderless fullscreen option in all backends.
2014-10-07 16:48:43 +02:00
Jules Blok
7344f752b7
Replace BorderlessFullscreenEnabled by ExclusiveFullscreenEnabled.
...
Special handling was associated with this function, which only applies to exclusive fullscreen.
2014-10-07 16:43:32 +02:00
Jules Blok
9818bd3edf
CFrame: Render to a child on Linux and Mac OS X.
...
This is needed to fix the hotkeys on those platforms.
2014-08-04 13:22:41 +02:00
Jules Blok
b67ec4ea58
CFrame: Always exit fullscreen before showing the stop dialog.
2014-08-03 23:38:20 +02:00
Jules Blok
857c116210
CFrame: Add fullscreen window styles to enable exclusive mode in OpenGL.
...
This is not implemented within the backend, but relies purely on driver heuristics.
2014-08-03 23:36:54 +02:00
Jules Blok
b6e7e0d57f
CFrame: Only re-assign focus when "Render to main" is enabled.
...
It may cause fullscreen loops and since m_RenderFrame == m_RenderParent now it's not necessary to re-assign focus anymore.
2014-08-03 13:37:19 +02:00
Jules Blok
6ab6d07948
FrameTools: Add a wxPanel as the child of the RenderFrame.
...
Needed for hotkeys to be captured on Linux.
2014-08-02 13:55:23 +02:00
Jules Blok
3b5625c76b
VideoConfig: Ignore Borderless Fullscreen setting when the backend does not support exclusive fullscreen.
...
This was expected to be handled by VerifyValidity(), but that only verifies the validity of the INI files.
2014-07-30 12:15:58 +02:00
Jules Blok
5bbd34637b
CFrame: Don't check the video config fullscreen setting.
...
Checking this flag could sometimes incorrectly have the UI assume fullscreen is already off when we're still exiting.
2014-07-30 12:15:32 +02:00
Jules Blok
4501aeefbe
CFrame: Check borderless fullscreen setting before enabling exclusive fullscreen in the video config.
...
Fixes a bug where "Use Fullscreen" would initialize into exclusive fullscreen regardless of the borderless fullscreen setting.
Also relieves the need for the video renderer to check the borderless fullscreen setting each time.
2014-07-30 12:15:26 +02:00
Jules Blok
e07c06cb16
CFrame: Handle close events that can't be vetoed.
...
This can happen during shutdown.
As long as we don't call event.Skip() the CFrame won't be closed yet, so even if we can't veto the shutdown will still happen in the correct order.
2014-07-29 12:36:10 +02:00
Jules Blok
1f24122d35
Frame: Only prevent exclusive fullscreen switches when the emulator is paused.
...
This fixes the "Use Fullscreen" setting in which case the switch is done while the emulator is uninitialized.
2014-07-27 00:08:27 +02:00
Jules Blok
ec402a0d5f
FPSCounter: Initialize members.
2014-07-26 14:37:18 +02:00
Jules Blok
ed2c74a024
D3D: Set s_last_fullscreen_mode when constructing the renderer.
2014-07-26 13:47:11 +02:00
Jules Blok
06b13f12d3
D3D: Make the global swapchain static again.
2014-07-26 13:04:46 +02:00
Jules Blok
6724ce6275
Cosmetic changes based on feedback on PR #506 .
2014-07-26 13:04:39 +02:00
Jules Blok
eea7086b23
CFrame: Prevent fullscreen switches if the renderer is halted.
2014-07-26 12:45:19 +02:00
Jules Blok
bd9953d97e
Remove the 3D Vision hack.
...
The hack was needed because the Nvidia 3D Vision heuristics are documented to only support surfaces that are the same size as the backbuffer. This would be the case if you enabled the hack and selected the "Auto (Window Size)" internal resolution.
However, on recent drivers the same effect is achieved by selecting the "Auto (Multiple)" internal resolution. Therefore the hack is no longer required.
2014-07-26 12:45:10 +02:00
Jules Blok
4b3d579573
Renderer: Only notify the host when exiting fullscreen
2014-07-21 20:50:50 +02:00
Jules Blok
0c81494c89
Frame: Make the fullscreen transitions more reliable.
2014-07-21 20:50:49 +02:00
Jules Blok
009b4dd376
Exit exclusive fullscreen when the stop confirmation is shown.
...
Also have the renderer remember its own fullscreen state. This is done to prevent a case where we exit exclusive fullscreen through the configuration and a focus shift at the same time. In this case the renderer would fail to detect that the fullscreen state was changed.
2014-07-21 20:50:48 +02:00
Jules Blok
36ea1890c8
Let the Renderer decide when to exit fullscreen.
...
This ensures the transition from/to exclusive mode happens while the RenderFrame is fullscreen.
This prevents fullscreen loops and relieves us of having to restore the window size after we exit fullscreen.
2014-07-21 17:11:13 +02:00
Jules Blok
cd94ff1966
VideoConfig: Add "Borderless Fullscreen" option.
...
This option will disable exclusive fullscreen for users who prefer the old behaviour.
2014-07-20 22:02:57 +02:00
Jules Blok
3400871992
Renderer: Don't attempt to switch to exclusive fullscreen if "render to main" is enabled.
2014-07-19 21:14:49 +02:00
Jules Blok
9064bf147d
D3D: Don't set the windowed mode size when we initialize in fullscreen.
2014-07-19 21:14:48 +02:00
Jules Blok
d00e76b3ef
Cosmetic changes based on feedback on PR #506 .
2014-07-19 21:14:47 +02:00
Jules Blok
5837b35add
Renderer: Restore exclusive mode after focus has been regained.
2014-07-19 21:14:47 +02:00
Jules Blok
5f04e9c526
D3D: Make the swapchain available outside of the namespace.
...
This commit reverts a part of pull request #579 .
2014-07-19 21:14:46 +02:00
Jules Blok
643c9ff173
D3D: Initialize the renderer in exclusive fullscreen mode if it is enabled.
2014-07-19 21:14:46 +02:00
Jules Blok
961076a3d5
D3D: Return to windowed mode before destroying the swapchain.
2014-07-19 21:14:45 +02:00
Jules Blok
77bc879384
D3D: Add exclusive fullscreen support.
2014-07-19 21:14:44 +02:00
Jules Blok
d72375fdfa
D3D: Request desktop resolution before overriding the buffer size.
...
This fixes issues where the wrong refresh rate is selected for some monitors.
2014-07-19 21:14:44 +02:00
Jules Blok
c323b386ae
Prevent DXGI from making changes to the window.
...
Prevents DXGI from responding to Alt+Enter and messing up our fullscreen handling.
2014-07-19 21:14:43 +02:00
Jules Blok
8d76dca30d
Frame: Make RendererHasFocus() compatible with the new window structure.
2014-07-19 21:14:38 +02:00
Jules Blok
66fec6d0bd
Remove CPanel.
...
Let the RenderFrame handle those messages.
2014-07-19 21:13:15 +02:00
Jules Blok
1b70bebb5a
Don't create a Panel for a seperate render window.
...
Instead of setting RenderParent to null and raising complexity RenderFrame can be its own parent.
2014-07-19 15:56:49 +02:00
Jules Blok
eaa7460636
FPSCounter: Remove redundant destructor.
2014-07-18 12:49:40 +02:00
Jules Blok
3b978f7c27
Turn the FPSCounter namespace into a class.
2014-07-16 20:40:40 +02:00
Jules Blok
aa2495205e
Shutdown the Core before other components.
...
Other components depend on the EmuThread being stopped.
2014-07-13 23:47:59 +02:00
Jules Blok
64801008a0
NoGUI: Add missing call to Core::Shutdown().
...
Fixes a crash when exiting the application.
2014-07-13 01:05:09 +02:00
Jules Blok
6def4ead01
FPSCounter: Flush the logs every second and close them when the renderer is shut down.
2014-07-10 23:11:28 +02:00
Jules Blok
1754cbda9d
Move FPSCounter calls to RenderBase.
2014-07-10 23:11:09 +02:00
Jules Blok
09304cab57
FPSCounter: Change format string to match value.
2014-07-09 19:45:56 +02:00
Jules Blok
95b579746f
Replace "Log FPS to file" by the "Log render time to file" feature.
2014-07-09 17:56:11 +02:00
Jules Blok
61d44cf73f
FPSCounter: Use a Timer for the FPS update time.
2014-07-09 17:53:41 +02:00
Jules Blok
efeadb7fe9
FPSCounter: Add "Log render time to file" feature.
...
Allows for a more accurate performance measurement.
2014-07-09 17:53:31 +02:00
Jules Blok
4df00ae544
Movie: Do not attempt to record input when the emulation has not started yet.
...
Fixes a null pointer exception when the user starts the recording during a state transition.
2014-07-08 22:32:35 +02:00
Jules Blok
db7e746cb4
Check whether the core is running instead of checking if it is unitialized.
...
This properly handles the stopping state and more accurately represents the intended check.
2014-07-08 22:30:44 +02:00
Jules Blok
ad1b61af2e
FrameTools: Update GUI and disable Play button when in stopping state.
2014-07-08 21:21:25 +02:00
Jules Blok
49eade69a3
Core: Return CORE_STOPPING even if hardware is already uninitialized.
2014-07-08 21:21:24 +02:00
Jules Blok
b30d5dccbe
Frame: OnClose now handles asynchronous behaviour of DoStop().
2014-07-08 21:21:24 +02:00
Jules Blok
3266394dfb
Make the emulation stop asynchronous to prevent deadlocks.
...
This may expose bugs which relied on the Main Thread to be suspended in the stopping state.
2014-07-08 21:21:23 +02:00
Jules Blok
8571d7aceb
RenderFrame: Set the background to black.
2014-06-28 16:02:51 +02:00
Jules Blok
6c52ec93b7
D3D: Reset viewport before drawing the OSD.
2014-06-16 23:34:54 +02:00
Jules Blok
f408dc72e7
Fix OpenGL video backend when using "render to main" on Windows.
2014-06-15 14:59:25 +02:00
Armada
f2759ffe65
Remove EmuWindow.
...
All it did was raise complexity.
2014-06-15 00:49:49 +02:00
Jules Blok
2063eddfa3
ForceFeedback: Fixed scoping bug
...
Previous code relied on a destroyed variable to still be valid.
2014-02-09 17:04:05 +09:00
Jules Blok
992b91c082
ForceFeedback: Don't depend on the force_type_name index.
...
Instead use a for-each loop, compare GUIDs and save the name pointers.
2014-02-09 17:01:45 +09:00
Jules Blok
c6d650c058
ForceFeedback: Add OSX rumble support
2014-02-09 17:01:45 +09:00
Jules Blok
02a95c139e
ControllerInterface: Move DInput ForceFeedback support to a seperate class
2014-02-09 17:01:38 +09:00
Jules Blok
5d1db5d717
Fix compilation
2014-01-27 21:40:28 +09:00
Jules Blok
76019848a4
Fix coding style
2014-01-27 21:24:35 +09:00
Armada
9594cac42c
Build fix: Android NDK doesn't support any locale switching.
...
Also, Mac OS X doesn't support DX9.
2013-06-16 14:51:38 +02:00
Armada
fc7099a905
Set the locale per-thread instead of globally when generating shaders. Add cross-compatible versions of newlocale, uselocale and freelocale.
...
This commit fixes a rare race condition when generating shaders because setlocale is global.
2013-06-16 12:33:13 +02:00