Merge an endless story. The branch name is a lie, it was started as glsl, but now it is a complete reworked opengl3 backend.
It just began with simple changes which aren't supported on osx.
They either support ogl2 OR ogl3 core, but mixing isn't allowed.
As the branch name says, the vicious circle starts with GLSL, but just implementing one wasn't possible either:
- OSX supports only GLSL100 which doesn't support our shaders.
- Vertex Array Objects are needed for ogl3, but not supported on ogl2
- immediate mode isn't supported any more, so we must implement vertex buffers
- uniform buffers are recommended as else we would need tons glUniform
- postprocessing shaders have to be converted to glsl
- lots of smaller outdated issues and bug fixes :-)
Thanks at all for testing and at Sonic for converting all of our shaders to glsl130
And sorry for all upcoming bugs...
# By skidau (30) and Pierre Bourdon (1)
* FIFO-BP: (31 commits)
Set g_bSignalTokenInterrupt on the main thread. Fixes the random hang in Harry Potter: Prisoner of Azkaban.
Used a scheduled event to generate the ARAM DMA interrupt if the DMA is greater than a certain size. Fixes NFS:HP2 GC.
Bumped up the disc transfer speed enough to prevent audio stuttering in Gauntlet: Dark Legacy.
Enabled Synchronise GPU on "SPEED CHALLENGE - Jacques Villeneuve's Racing Vision". Required to go in-game.
Added direct GameCube controller commands to the Serial Interface emulation. Fixes the controls in MaxPlay Classic Games Volume 1 and the Action Replay disc.
Increased the FIFO buffer size to 2MB from 1MB. Fixes Killer 7's Angel boss.
Used an immediate GenerateDSPInterrupt when transferring data from ARAM to MRAM and a scheduled DSP interrupt when transferring data from MRAM to ARAM.
Fixes the audio cutting in and out in the Resident Evil GC games using DSP HLE. Triggered the ARAM interrupt by the scheduler instead of directly in function.
Implemented proper timing for the sample counter in the AudioInterface, removing the previous hack. Cleaned up some of the audio streaming code.
Skipped the EE check if there is a CP interrupt pending.
Disabled "Speed up disc transfer" from the ZTP GC game ini.
Removed the disc seek times for GC games and removed the disc speed option on Wii games. Checked for external exceptions only in mtmsr.
Delayed the interrupts in the EXI Channel.
Merge aram-dma-fixes (r76a13604ef49b522281af75675f044d59a74e871)
Added a patch that bypasses the FIFO reset code in Wallace and Gromit: Project Zoo, allowing it to go in-game.
Made vertex loading take constant time.
Increased the cycle time of the vertex command. Fixes "Speed Challenge: Jacques Villeneuve's Racing Vision".
Moved the setting of the Finish interrupt signal back to the main thread as it was causing Wii games like Resident Evil 4 (Wii) to hang.
Profile stores, fp stores and ps stores only to the fifo write addresses list. This should make the JIT a little faster as it will not be checking for external exceptions unnecessarily.
...
Conflicts:
Source/Core/VideoCommon/Src/PixelEngine.cpp
Some cleanup throughout related code. (try to make logic in ISOFile understandable by a human)
Encode strings in UTF-8 rather than somehow trying to determine the encoding in the GUI code.
Non-windows OSes temporarily broken.
# By Jordan Woyak (46) and others
# Via Jordan Woyak (2) and others
* master: (70 commits)
Fixes two memory leaks, one is pretty bad for OSX. Yell at pauldachz if this doesn't work. Or... say thanks.
Added a BluetoothEnumerateInstalledServices call so that the wiimote remembers the pairing.
Make ARMJit core default CPU core on ARM architecture
Fix a StringUtil regression from the arm-noglsl merge
Small improvement to cmpli/cmpi in ARMJit.
Merge latest ArmEmitter changes from ppsspp while we're at it.
Ah. I blame vim on this typo entirely.
Add disabled code for authenticating wiimotes on Windows.
Add the missing FPR cache
Buildfix.
Yell at the user if they change window size while dumping frames, and some other avi dumping stuff.
Not sure if this is the right way to handle this, but it makes the save states perfectly stable. That's all that really matters, right?
Abort loading states from incompatible graphics backends.
ARM Support without GLSL
Improve VideoSoftware save states. They are fairly stable, but not perfect. OpcodeDecoder::DoState() needs to be fixed.
Begin implementing save states to video software. Kind of works, sometimes.
Make error message for loading save state with wrong dsp engine shorter.
Abort load state if it uses a different dsp engine, instead of crashing.
Update the gameini of F-zero. Efb to Ram is no longer the default choice.
fix last commit by neobrain
...
Conflicts:
Source/Core/VideoCommon/Src/Fifo.cpp
# By Jordan Woyak (9) and others
* master:
Fixed a buffer overflow in the OpenAL buffer.
TextureCache: Fix D3D backends crashing when a game uses multiple 1x1-sized LODs.
WII_IPC_HLE_Device_FileIO: don't rebuild the filename on every operation.
Some cleanup of CWII_IPC_HLE_Device_FileIO: The real file was never kept open for longer than a single operation so there was no point in dealing with it in DoState. Saving the real path in the savestate was also probably a bad idea. Savestates should be a bit more portable now.
Removing destination on rename when source isn't present doesn't make sense. IOCTL_RENAME_FILE still might not be totally correct.
Change some CNANDContentLoader logic to what was probably intended. Kills some warn logs when opening Dolphin.
Let's not CreateDir an empty string every time CreateFullPath is used, logging an error every time.
Fix a memleak. Probably/maybe improve USBGecko performance.
Remove the core count from the cpu info OSD message. It was often wrong and not rather important.
Use omp_get_num_procs to set the number of OpenMP threads rather than our core count detection.
Bulk send TCP data to the client with the emulated USB Gecko.
Added the ability to reverse the direction of the force feedback by allowing negative range values.
Changes/cleanup to TextureCache::Load and other mipmap related code. The significant change is what is now line 520 of TextureCacheBase.cpp: ((std::max(mipWidth, bsw) * std::max(mipHeight, bsh) * bsdepth) >> 1) to TexDecoder_GetTextureSizeInBytes(expanded_mip_width, expanded_mip_height, texformat);
Conflicts:
Source/Core/VideoCommon/Src/PixelShaderGen.cpp
Source/Plugins/Plugin_VideoSoftware/Src/SWRenderer.cpp
immediate-removal is a new created branch seperated from master but reverted the revert of immediate-removal
so we get less conflicts by merging
* OpenAL:
Changed SoundTouch to use float samples, allowing SSE to be used. Made the DPL2 decoder disabled by default. Re-added the audio hack used by the Accurate VBeam emulation option.
Added a latency setting to the audio settings. Removed the Sample Rate setting. It is now hardcoded to 48000hz (accurate audio timing).
Skipped timestretching if the emulator is running below 10% speed to prevent buffer overflows.
Removed the synchronisation between the CPU thread and the audio thread. Added code to detect and resume from buffer underruns. Disabled the ability to change the DPL2 option after the game has started. Fixed a memory leak that occurred in the DPL2 decoder. Fixed the OSX build.
Build fix
Added a Dolby Pro Logic II (DPL2) decoder in the OpenAL backend. DPL2 audio is decoded to 5.1. Code adapted from ffdshow. Added an option in the DSP settings to disable the DPL2 decoder in case Dolphin incorrectly detects a 5.1 audio system. Updated the OpenAL files to OpenAL Soft 1.15.1 in the Windows build.
Removed the system timing hack which was activated when the Accurate VBeam option was enabled.
Fixed the include directories in Audio Common for the Windows 32bit build.
Fixed the include directories in Audio Common for the Windows build.
Messed up the static include line
Fix include paths and compiling in Linux. Externals soundtouch is 1.7.1, while Ubuntu 12.10 is 1.6.x. Externals soundtouch is compiled with integer samples, while ubuntu is compiled with float samples. Float samples is probably the more common route. If you're going to use soundtouch, you should probably use SAMPLETYPE instead of explicitly choosing short. This probably breaks the windows build since its includes aren't setup.
OSX: typedef signed char BOOL
OSX build fix
Build fix
Added audio time stretching by using the SoundTouch library.
Implemented correct audio timing.
OpenAL for Windows initial commit
Added code to detect and resume from buffer underruns.
Disabled the ability to change the DPL2 option after the game has started.
Fixed a memory leak that occurred in the DPL2 decoder.
Fixed the OSX build.
Added an option in the DSP settings to disable the DPL2 decoder in case Dolphin incorrectly detects a 5.1 audio system.
Updated the OpenAL files to OpenAL Soft 1.15.1 in the Windows build.
Fixes issue 3023.
Depth calculations are always done in the pixel shader now.
Due to the unpredictability of our zcomploc hacks this commit probably changes the behavior of some games which use zcomploc.
To set it up, change the Port 1 controller to "Steering Wheel" under the GameCube tab. This will tell the game that you have a force feedback steering wheel connected.
In the Gamecube Pad Settings, change the Rumble Motor to "Constant".
Configure the controls:
Main Stick Left/Right = Steer Left/Right
Main Stick Up = Accelerate
Main Stick Down = Brake
Thanks to ulao for the device communications info.
- In icon retrieving I removed the "format check" as it shouldn't really matter to have mixed icon formats. Also removed the "Time splitters hack" as there's no reason for it since we are only checking the last 3 bits and I'm pretty sure having bits 1 and 2 set is the same as having them unset.
- Icon retrieving uses AnimSpeed as stop signal (every icon must have an speed set, the first speed that is 0 means there are no more icons)
- Also, in icon retrieving I added support for "blank frames"(Luigi's Mansion and Pikmin that I know of). With this the base for icon animation is complete.
- Fixed PSOIII savegame patch which was wrong before.
Signed-off-by: LPFaint99 <lpfaint99@gmail.com>
Very useful to compare performance between two builds, check the impact of
a configuration option, etc. FPS log is stored in User/Logs/fps.txt and is
reset each time you launch a game. Only enabled if you check the "Log FPS
to file" option in your graphics settings.
Could be improved a bit: currently logs only every 1s (so you can't really
see small variations), maybe output more infos to the fps.txt like
average/stddev (but Excel/Libreoffice/Google Docs can compute that easily
too).
The problem here was the logic that detects SDL in the main CMakeLists.txt
is not the same as it is in DolphinWX/CmakeLists.txt to set libraries. When
using SDL from Externals it failed at link time because -lSDL was never set.
This fixes the problem by using the same condition logic to set the libs
as used when detecting SDL in the first place.