dolphin/Source/Core/VideoCommon/Src
skidau a60a0825a3 Merged 'FifoBusy' branch. Thanks
to marcosvitali.

Added an external exception check when the CPU writes to the FIFO.  This allows
the CPU time to service FIFO overflows.  Fixes random hangs caused by FIFO
overflows and desyncs like in "The Last Story" and "Battalion Wars 2".  Thanks
to marcosvitali for the research.

Added some code to unlink invalidated blocks so that the recompiled block can be
linked (speed-up).

This release still fixed the hangs produced by fifo overflow without sacrifice
performance. For example you can test Tutorial moves at the beginning of The last history now
is fluid 30/60.

Fixed possibles random hangs in DC mode.
Fixed hangs in DC mode in (Simpsons, Monkey Island, Pokemon XD, etc)
Implemented accurate management of Pixel Engine Interrupts.  Now the GPU loop
is stopped when a PE Interrupt needs to be managed and resumed when Pixel Engine
finish.

Fixed Metroid Prime 3 and 2 desync. And other games with desync because of
FIFO Reset. That happens because  FIFO_RW_DISTANCE_HI must be written first, for checking
fifo.CPReadWriteDistance == 0, so some fifo resets was not managed in the right
way.

Fixed Super Monkey Ball in some cases when the game write the
WriteReadDistance need to be safe like the SafeCPRead.

Improved the CheckException for the GatherPipe writes in JIT, now only the
External Exceptions are processed.

Fixed definitely Pokemon XD in dual core mode. This game is doing something
not allowed. It attach to CPU the same fifo attached to the GPU in multibuffer
mode. I added a check to prevent overwrite the GPU FIFO with the CPU FIFO. If
the game do that on breakpoint the solution can fail.

Fixed ReadWriteDistance calc when CPRead > CPWrite.

Added Token and Finish cause to GP Jit checking.

Additional cleanup in CommandProcessor.



Fixes issue 5209
Fixes issue 5055
Fixes issue 4889
Fixes issue 4061
Fixes issue 4010
Fixes issue 3902
2012-03-20 19:37:25 +11:00
..
OpenCL Make titlebar and about dialog fancy for cmake build. 2011-08-21 17:43:05 -05:00
AVIDump.cpp fix some clang compilation errors 2012-02-24 14:25:02 -06:00
AVIDump.h When using the "Start Renderer in Fullscreen" option, really start in fullscreen. In other words this now switches to fullscreen before the renderer is initiated instead of after. This is a partial fix for issue 4316. 2011-03-25 18:12:40 +00:00
BPFunctions.cpp Merge some scissor rect related code to VideoCommon. 2011-09-05 22:04:28 +02:00
BPFunctions.h Merge some scissor rect related code to VideoCommon. 2011-09-05 22:04:28 +02:00
BPMemory.cpp fix some clang compilation errors 2012-02-24 14:25:02 -06:00
BPMemory.h Prepare texture preloading support 2012-02-03 21:20:34 +01:00
BPStructs.cpp Prepare texture preloading support 2012-02-03 21:20:34 +01:00
BPStructs.h Now ALL copyright dates are fixed to the legally correct year: The year in which the project began. Now we don't have to change it every year :) 2009-07-28 21:32:10 +00:00
CPMemory.cpp Now ALL copyright dates are fixed to the legally correct year: The year in which the project began. Now we don't have to change it every year :) 2009-07-28 21:32:10 +00:00
CPMemory.h Add graphics FIFO recorder and player for debugging the graphics system. 2011-03-27 02:55:08 +00:00
CommandProcessor.cpp Ive fixed definitely Pokemon XD in dual core mode. This game is doing something not allowed. It attach to CPU the same fifo attached to the GPU in multibuffer mode. I added a check to prevent overwrite the GPU FIFO with the CPU FIFO. If the game do that on breakpoint the solution can fail. 2012-03-18 22:54:58 -03:00
CommandProcessor.h Ive fixed definitely Pokemon XD in dual core mode. This game is doing something not allowed. It attach to CPU the same fifo attached to the GPU in multibuffer mode. I added a check to prevent overwrite the GPU FIFO with the CPU FIFO. If the game do that on breakpoint the solution can fail. 2012-03-18 22:54:58 -03:00
DLCache.cpp A long time since my last commit but i have a lot of work. hope to find some time to fix more things. 2011-05-25 02:05:48 +00:00
DLCache.h Experimental commit: this is the base for a more complex dlist control code, is incomplete but i need some feedback. 2011-02-08 00:28:28 +00:00
DataReader.h Simplify the SSSE3 code for better understanding. 2011-01-11 07:25:36 +00:00
Debugger.cpp Various UI and documentation improvements to the GFX debugger. 2011-07-01 20:59:57 +00:00
Debugger.h Virtual base classes should have a virtual destructor. 2011-01-30 01:58:54 +00:00
EmuWindow.cpp fixed a freeze on emu shutdown in windows build 2011-12-19 15:13:26 -08:00
EmuWindow.h fixed a freeze on emu shutdown in windows build 2011-12-19 15:13:26 -08:00
Fifo.cpp - I've fixed possibles random hangs in DC mode. 2012-03-08 02:47:55 -03:00
Fifo.h Big Fifo Commit Part2: Now the fifo is more stable than my first commit, so is time... 2011-02-17 04:25:21 +00:00
FramebufferManagerBase.cpp Make sure to not do any XFB emulation at all if it's not enabled. 2011-03-19 00:21:59 +00:00
FramebufferManagerBase.h Second Experimental commit: 2010-12-27 03:18:01 +00:00
HiresTextures.cpp More conversion from char * to std::string. 2011-03-01 03:06:14 +00:00
HiresTextures.h Changes to hi-res textures. Textures now load correctly when loading/saving a savestate, and can be toggled on and off in game. 2011-02-05 10:08:06 +00:00
ImageWrite.cpp Wrapped fopen/close/read/write functions inside a simple "IOFile" class. Reading, writing, and error checking became simpler in most cases. It should be near impossible to forget to close a file now that the destructor takes care of it. (I hope this fixes Issue 3635) I have tested the functionality of most things, but it is possible I broke something. :p 2011-03-11 10:21:46 +00:00
ImageWrite.h Remove SaveTexture declaration in VideoCommon since it's only actually defined in OpenGL 2012-01-31 19:52:02 +01:00
IndexGenerator.cpp Related to Texture's glitches: 2010-11-25 20:39:54 +00:00
IndexGenerator.h Some work on changing comments, log messages, and variable and function names to reflect that the plugins are not plugins anymore. 2011-02-14 02:18:03 +00:00
LightingShaderGen.cpp Fix pixel lighting. 2011-09-29 23:32:39 +02:00
LightingShaderGen.h Fix pixel lighting. 2011-09-29 23:32:39 +02:00
LookUpTables.h Don't use lookup tables. It's better to use CPU registers and reduce memory accesses. 2009-07-30 20:29:52 +00:00
MainBase.cpp This release still fixed the hangs produced by fifo overflow without sacrifice performance. 2012-03-05 02:40:10 -03:00
MainBase.h Some work on changing comments, log messages, and variable and function names to reflect that the plugins are not plugins anymore. 2011-02-14 02:18:03 +00:00
NativeVertexFormat.h Some work on changing comments, log messages, and variable and function names to reflect that the plugins are not plugins anymore. 2011-02-14 02:18:03 +00:00
OnScreenDisplay.cpp Remove PluginSpecs.h. Merge the few needed enums from that file into Common.h for now. I am up for suggestions on a better place for those. 2011-02-02 04:40:27 +00:00
OnScreenDisplay.h Remove PluginSpecs.h. Merge the few needed enums from that file into Common.h for now. I am up for suggestions on a better place for those. 2011-02-02 04:40:27 +00:00
OpcodeDecoding.cpp Add graphics FIFO recorder and player for debugging the graphics system. 2011-03-27 02:55:08 +00:00
OpcodeDecoding.h Add graphics FIFO recorder and player for debugging the graphics system. 2011-03-27 02:55:08 +00:00
OpenCL.cpp Some work on changing comments, log messages, and variable and function names to reflect that the plugins are not plugins anymore. 2011-02-14 02:18:03 +00:00
OpenCL.h Fix *BSD build. 2011-01-31 03:02:23 +00:00
PixelEngine.cpp Merged 'FifoBusy' branch. Thanks 2012-03-20 19:37:25 +11:00
PixelEngine.h This commit fix games hanging because of my prior Revision c2e6fdf09f 2012-03-09 18:58:23 -03:00
PixelShaderGen.cpp Fix some minor bugs pointed out by PVS Studio (thanks!) 2012-03-03 20:07:20 +01:00
PixelShaderGen.h PixelShaderGen: For custom textures and scaled EFB copies, use correct texel to pixel mapping when sampling textures 2012-02-20 20:32:08 +01:00
PixelShaderManager.cpp PixelShaderGen: For custom textures and scaled EFB copies, use correct texel to pixel mapping when sampling textures 2012-02-20 20:32:08 +01:00
PixelShaderManager.h PixelShaderGen: For custom textures and scaled EFB copies, use correct texel to pixel mapping when sampling textures 2012-02-20 20:32:08 +01:00
RenderBase.cpp Compile fix. 2011-09-29 23:32:38 +02:00
RenderBase.h Merge some frame dumping code to VideoCommon, fixes a memory leak in D3D9 and OpenGL if emulation is stopped while dumping frames. 2011-09-29 23:32:38 +02:00
Statistics.cpp D3D9: Delete some long dead code. Also add one more statistic: number of compiled shaders that actually have unique code (not accurate unless you delete the shader cache before running). This stat clearly shows that in f-zero we create 5x as many pixel shaders as we should, so there's clearly a problem with the shader ID generation. 2010-06-20 22:23:34 +00:00
Statistics.h added the possibility to allocate aligned memory, an use it to allocate the buffer utilized in texture decoding, this will make a little easy to use aligned writes when possible in sse2/3 optimized algorithms. 2011-02-25 20:35:05 +00:00
TextureCacheBase.cpp TextureCacheBase: Remove a superfluous TODO (texture hashing takes care of that stuff) 2012-02-04 13:01:52 +01:00
TextureCacheBase.h Implement texture preloading 2012-02-03 21:21:13 +01:00
TextureConversionShader.cpp just a little cleanup to maintain minimal interfaces 2011-06-10 19:16:09 +00:00
TextureConversionShader.h hopefully fixed zww issue with new efb to ram. 2010-07-12 19:30:25 +00:00
TextureDecoder.cpp fix a memleak and quiet some warnings 2011-03-22 15:23:39 +00:00
TextureDecoder.h Prepare texture preloading support 2012-02-03 21:20:34 +01:00
VertexLoader.cpp Bounding Box bugfixes. 2011-10-28 21:12:12 +01:00
VertexLoader.h Changed macro for disallowing copy-ctor and =operator into an inheritable class. Removed IrPointer.ini (no longer used) 2010-11-15 05:29:10 +00:00
VertexLoaderManager.cpp Add graphics FIFO recorder and player for debugging the graphics system. 2011-03-27 02:55:08 +00:00
VertexLoaderManager.h fully implemented display list cache with vertex data included and added in all the plugins. 2010-08-29 23:08:56 +00:00
VertexLoader_Color.cpp little fix for one piece unlimited cruise 2 and ju-on the grudge 2011-01-26 17:22:09 +00:00
VertexLoader_Color.h Now ALL copyright dates are fixed to the legally correct year: The year in which the project began. Now we don't have to change it every year :) 2009-07-28 21:32:10 +00:00
VertexLoader_Normal.cpp Moved per-game graphics configuration to the game-list right click menu. It will be too difficult to make the "profiles" drop-down thing work with 3-state vs 2-state checkboxes. The per-game settings now have "undetermined" states, except for the radio buttons(I'll fix that later). It's super hacky right now. Video config (probably all config stuff) could be redone. 2011-03-21 05:46:33 +00:00
VertexLoader_Normal.h Moved per-game graphics configuration to the game-list right click menu. It will be too difficult to make the "profiles" drop-down thing work with 3-state vs 2-state checkboxes. The per-game settings now have "undetermined" states, except for the radio buttons(I'll fix that later). It's super hacky right now. Video config (probably all config stuff) could be redone. 2011-03-21 05:46:33 +00:00
VertexLoader_Position.cpp Align stack variables on a 16-bytes boundary in SSSE3 functions 2011-10-08 17:36:01 +02:00
VertexLoader_Position.h VideoCommon: Added automatic selection routines for SSSE3/SSE4.1 codes. It selects SSSE3/SSE4.1 codes only if a proper preprocessor definition is defined and the target cpu supports SSSE3/SSE4.1. The selection routines in VertexLoader_* use function pointers. TextureDecoder uses a combination of "#if" and "if" statements. 2010-04-09 15:13:42 +00:00
VertexLoader_TextCoord.cpp Align stack variables on a 16-bytes boundary in SSSE3 functions 2011-10-08 17:36:01 +02:00
VertexLoader_TextCoord.h VideoCommon: Added automatic selection routines for SSSE3/SSE4.1 codes. It selects SSSE3/SSE4.1 codes only if a proper preprocessor definition is defined and the target cpu supports SSSE3/SSE4.1. The selection routines in VertexLoader_* use function pointers. TextureDecoder uses a combination of "#if" and "if" statements. 2010-04-09 15:13:42 +00:00
VertexManagerBase.cpp Fix "Disable Lighting" in D3D9 and D3D11. 2011-04-30 17:34:08 +00:00
VertexManagerBase.h Some work on changing comments, log messages, and variable and function names to reflect that the plugins are not plugins anymore. 2011-02-14 02:18:03 +00:00
VertexShaderGen.cpp Clean up various things. 2011-09-29 23:32:39 +02:00
VertexShaderGen.h Clean up various things. 2011-09-29 23:32:39 +02:00
VertexShaderManager.cpp initialize the uninitialized 2012-01-04 01:36:09 -08:00
VertexShaderManager.h Rework XF register loading a bit and change how registers are arranged in memory. This removes the assumption that all data for a viewport or projection matrix will be available when index 0 is loaded. Fixes issue 3688 and probably breaks old save states (sorry). 2011-02-05 18:25:34 +00:00
VideoCommon.h Added proper Bounding Box support. 2011-10-26 01:19:10 +01:00
VideoConfig.cpp TextureCache: Remove unsafe texture cache 2012-01-31 18:09:35 +01:00
VideoConfig.h TextureCache: Remove unsafe texture cache 2012-01-31 18:09:35 +01:00
VideoState.cpp initialize the uninitialized 2012-01-04 01:36:09 -08:00
VideoState.h initialize the uninitialized 2012-01-04 01:36:09 -08:00
XFMemory.cpp Now ALL copyright dates are fixed to the legally correct year: The year in which the project began. Now we don't have to change it every year :) 2009-07-28 21:32:10 +00:00
XFMemory.h Fix an error introduced in r7083. In the pixel shader manager the farZ and zRange of the z bias were flipped. Switched to using the viewport struct rather than a raw float array to hopefully avoid such confusion in the future. Fixes issue 4060. 2011-04-11 01:49:32 +00:00
XFStructs.cpp Add a call to VertexManager::Flush() when changing TC gen settings 2011-10-01 02:36:03 +02:00
XFStructs.h Now ALL copyright dates are fixed to the legally correct year: The year in which the project began. Now we don't have to change it every year :) 2009-07-28 21:32:10 +00:00
memcpy_amd.cpp GL Vertex loader moved to VideoCommon. 2008-12-26 13:09:16 +00:00