dolphin/Source/Core/VideoCommon
comex 06dd0ba3b4 Exit ReadDataFromFifoOnCPU, PushFifoAuxBuffer early if shutting down (GpuRunningState=false)
This was causing a race condition where the "absurdly large aux buffer"
panic alert would be triggered in the last bit of fifo processing on the
CPU thread in deterministic mode (i.e. netplay).  SyncGPU is supposed to
move the auxiliary queue data to the beginning of the containing buffer
so we don't have to deal with wraparound; if GpuRunningState is false,
however, it just returns, because it's set to false by another thread -
thus it doesn't know whether RunGpuLoop is still executing (in which
case it can't just reset the pointers, because it may still be using the
buffer) or not (in which case the condition variable it normally waits
for to avoid the previous problem will never be signaled).  However,
SyncGPU's caller PushFifoAuxBuffer wasn't aware of this, so if the
buffer was filling at just the right time, it'd stay full and that
function would complain that it was about to overflow it.  Similar
problem with ReadDataFromFifoOnCPU afaik.  Fix this by returning early
from those as well; other callers of SyncGPU should be safe.  A
*slightly* cleaner alternative would be giving the CPU thread a way to
tell when RunGpuLoop has actually exited, but whatever, this works.
2015-04-21 22:33:29 -04:00
..
AsyncRequests.cpp Fifo: Replace busy loop with condition variable 2015-04-06 12:35:27 +02:00
AsyncRequests.h VideoCommon: perf querys by async events 2015-02-22 08:41:15 +01:00
AVIDump.cpp Windows AVIDump: support "silent" frame dumping 2015-02-14 23:38:14 +01:00
AVIDump.h
BoundingBox.cpp
BoundingBox.h
BPFunctions.cpp VideoCommon: always enable efb copy 2015-02-24 23:01:01 +01:00
BPFunctions.h
BPMemory.cpp
BPMemory.h
BPStructs.cpp
BPStructs.h
CMakeLists.txt VideoCommon: use a new async event system for efb access 2015-02-22 08:41:15 +01:00
CommandProcessor.cpp Fifo: only sleep once within every ms of emulated time 2015-04-06 12:35:35 +02:00
CommandProcessor.h Fifo: only sleep once within every ms of emulated time 2015-04-06 12:35:35 +02:00
ConstantManager.h
CPMemory.cpp
CPMemory.h
DataReader.h
Debugger.cpp
Debugger.h
DriverDetails.cpp
DriverDetails.h
Fifo.cpp Exit ReadDataFromFifoOnCPU, PushFifoAuxBuffer early if shutting down (GpuRunningState=false) 2015-04-21 22:33:29 -04:00
Fifo.h Fifo: rewrite sync on idle skipping hack 2015-04-06 12:35:35 +02:00
FPSCounter.cpp
FPSCounter.h
FramebufferManagerBase.cpp Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
FramebufferManagerBase.h Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
GeometryShaderGen.cpp GeometryShaderGen: Perspective divide the line coordinates before comparing the angle. 2015-01-31 23:32:23 +01:00
GeometryShaderGen.h
GeometryShaderManager.cpp
GeometryShaderManager.h
HiresTextures.cpp
HiresTextures.h
ImageWrite.cpp
ImageWrite.h
IndexGenerator.cpp
IndexGenerator.h
LightingShaderGen.h
LookUpTables.h
MainBase.cpp Fifo: rewrite sync on idle skipping hack 2015-04-06 12:35:35 +02:00
MainBase.h VideoCommon: implement swap requests in the full async way 2015-02-22 08:41:15 +01:00
NativeVertexFormat.h
OnScreenDisplay.cpp OnScreenDisplay: Allow for different colored messages 2015-02-07 17:35:21 -05:00
OnScreenDisplay.h OnScreenDisplay: Allow for different colored messages 2015-02-07 17:35:21 -05:00
OpcodeDecoding.cpp Fix warnings 2015-03-16 19:02:30 +01:00
OpcodeDecoding.h Show no more than one FIFO error per session. 2015-03-13 23:25:15 +11:00
PerfQueryBase.cpp
PerfQueryBase.h PerfQueryBase: Move common implementation variables into base class 2015-04-15 19:22:16 -04:00
PixelEngine.cpp Fifo: rewrite sync on idle skipping hack 2015-04-06 12:35:35 +02:00
PixelEngine.h
PixelShaderGen.cpp Merge pull request #2075 from magumagu/titantron-fix 2015-02-21 10:09:47 +01:00
PixelShaderGen.h
PixelShaderManager.cpp TextureCache: load all mipmap levels from custom textures 2015-03-02 00:09:09 +01:00
PixelShaderManager.h TextureCache: load all mipmap levels from custom textures 2015-03-02 00:09:09 +01:00
PostProcessing.cpp Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
PostProcessing.h
RenderBase.cpp Merge pull request #2058 from Stevoisiak/Codemaid-Cleanup-Take2 2015-02-25 18:07:56 -05:00
RenderBase.h TextureCache: load all mipmap levels from custom textures 2015-03-02 00:09:09 +01:00
sfont.inc
ShaderGenCommon.h Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
Statistics.cpp Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
Statistics.h
TextureCacheBase.cpp TextureCache: load all mipmap levels from custom textures 2015-03-02 00:09:09 +01:00
TextureCacheBase.h General: Apply the const specifier where applicable 2015-04-15 02:04:03 -04:00
TextureConversionShader.cpp TextureConversionShader: Use a Texture2DArray to match the shader resource view. 2015-02-21 11:50:20 +01:00
TextureConversionShader.h
TextureDecoder_Common.cpp Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
TextureDecoder_Generic.cpp
TextureDecoder_x64.cpp Clean up the intrinsics #ifdef mess 2015-02-24 01:02:36 +01:00
TextureDecoder.h Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
VertexLoader_Color.cpp Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
VertexLoader_Color.h
VertexLoader_Normal.cpp
VertexLoader_Normal.h
VertexLoader_Position.cpp VertexLoaders: make positions more compact 2015-03-18 12:09:06 +01:00
VertexLoader_Position.h
VertexLoader_TextCoord.cpp
VertexLoader_TextCoord.h
VertexLoader.cpp VertexLoaders: make positions more compact 2015-03-18 12:09:06 +01:00
VertexLoader.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderARM64.cpp VertexLoaders: make positions more compact 2015-03-18 12:09:06 +01:00
VertexLoaderARM64.h [AArch64] Change the vertex loader over to using unscaled loadstores. 2015-02-16 22:03:09 -06:00
VertexLoaderBase.cpp Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
VertexLoaderBase.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderManager.cpp Merge pull request #2050 from Tilka/reset_vertex_loader_stats 2015-02-23 13:10:38 +11:00
VertexLoaderManager.h VertexLoaderManager: assimilate GetVertexSize() 2015-01-31 09:23:50 +01:00
VertexLoaderUtils.h
VertexLoaderX64.cpp VertexLoaderX64: use common code for FORMAT_FLOAT 2015-03-18 12:12:21 +01:00
VertexLoaderX64.h VertexLoaderX64: support SSE2 as a fallback 2015-03-18 12:12:21 +01:00
VertexManagerBase.cpp TextureCache: load all mipmap levels from custom textures 2015-03-02 00:09:09 +01:00
VertexManagerBase.h Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
VertexShaderGen.cpp Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
VertexShaderGen.h
VertexShaderManager.cpp Formatting/Whitespace Cleanup 2015-02-25 10:48:21 -05:00
VertexShaderManager.h
VideoBackendBase.cpp
VideoBackendBase.h Fifo: rewrite sync on idle skipping hack 2015-04-06 12:35:35 +02:00
VideoCommon.h
VideoCommon.vcxproj VideoCommon: use a new async event system for efb access 2015-02-22 08:41:15 +01:00
VideoCommon.vcxproj.filters VideoCommon: use a new async event system for efb access 2015-02-22 08:41:15 +01:00
VideoConfig.cpp Merge pull request #2058 from Stevoisiak/Codemaid-Cleanup-Take2 2015-02-25 18:07:56 -05:00
VideoConfig.h VideoCommon: rename efb2tex and efb2ram 2015-02-24 23:10:13 +01:00
VideoState.cpp
VideoState.h
XFMemory.cpp
XFMemory.h
XFStructs.cpp
XFStructs.h