summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon')
-rw-r--r--Source/Core/VideoCommon/Src/CommandProcessor.cpp4
-rw-r--r--Source/Core/VideoCommon/Src/VideoConfig.cpp3
-rw-r--r--Source/Core/VideoCommon/Src/VideoConfig.h1
3 files changed, 6 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/Src/CommandProcessor.cpp b/Source/Core/VideoCommon/Src/CommandProcessor.cpp
index 82e599432b..39da6aeb6f 100644
--- a/Source/Core/VideoCommon/Src/CommandProcessor.cpp
+++ b/Source/Core/VideoCommon/Src/CommandProcessor.cpp
@@ -495,7 +495,7 @@ void Write16(const u16 _Value, const u32 _Address)
case FIFO_HI_WATERMARK_HI:
WriteHigh((u32 &)fifo.CPHiWatermark, _Value);
// Tune this when you see lots of FIFO overflown by GatherPipe
- HiWatermark_Tighter = fifo.CPHiWatermark - 32 * 20;
+ HiWatermark_Tighter = fifo.CPHiWatermark - 32 * g_ActiveConfig.iFIFOWatermarkTightness;
DEBUG_LOG(COMMANDPROCESSOR,"\t write to FIFO_HI_WATERMARK_HI : %04x", _Value);
break;
@@ -616,7 +616,7 @@ void STACKALIGN GatherPipeBursted()
}
_assert_msg_(COMMANDPROCESSOR, fifo.CPReadWriteDistance <= fifo.CPEnd - fifo.CPBase,
- "FIFO is overflown by GatherPipe !\nCPU thread is too fast, lower the HiWatermark may help.");
+ "FIFO is overflown by GatherPipe !\nCPU thread is too fast, try changing the watermark tightness in the game properties.");
// check if we are in sync
_assert_msg_(COMMANDPROCESSOR, fifo.CPWritePointer == *(g_VideoInitialize.Fifo_CPUWritePointer), "FIFOs linked but out of sync");
diff --git a/Source/Core/VideoCommon/Src/VideoConfig.cpp b/Source/Core/VideoCommon/Src/VideoConfig.cpp
index 6df9bdd756..93b0548304 100644
--- a/Source/Core/VideoCommon/Src/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/Src/VideoConfig.cpp
@@ -95,6 +95,7 @@ void VideoConfig::Load(const char *ini_file)
iniFile.Get("Hacks", "EFBToTextureEnable", &bCopyEFBToTexture, false);
iniFile.Get("Hacks", "EFBScaledCopy", &bCopyEFBScaled, true);
iniFile.Get("Hacks", "FIFOBPHack", &bFIFOBPhack, false);
+ iniFile.Get("Hacks", "FIFOWatermarkTightness", &iFIFOWatermarkTightness, 50);
iniFile.Get("Hacks", "ProjectionHack", &iPhackvalue, 0);
iniFile.Get("Hardware", "Adapter", &iAdapter, 0);
@@ -145,6 +146,8 @@ void VideoConfig::GameIniLoad(const char *ini_file)
iniFile.Get("Video", "UseRealXFB", &bUseRealXFB);
if (iniFile.Exists("Video", "FIFOBPHack"))
iniFile.Get("Video", "FIFOBPHack", &bFIFOBPhack);
+ if (iniFile.Exists("Video", "FIFOWatermarkTightness"))
+ iniFile.Get("Video", "FIFOWatermarkTightness", &iFIFOWatermarkTightness);
if (iniFile.Exists("Video", "ProjectionHack"))
iniFile.Get("Video", "ProjectionHack", &iPhackvalue);
if (iniFile.Exists("Video", "UseNativeMips"))
diff --git a/Source/Core/VideoCommon/Src/VideoConfig.h b/Source/Core/VideoCommon/Src/VideoConfig.h
index 1184d2a6b4..2ace261fe6 100644
--- a/Source/Core/VideoCommon/Src/VideoConfig.h
+++ b/Source/Core/VideoCommon/Src/VideoConfig.h
@@ -120,6 +120,7 @@ struct VideoConfig
bool bSafeTextureCache;
int iSafeTextureCache_ColorSamples;
bool bFIFOBPhack;
+ int iFIFOWatermarkTightness;
int iPhackvalue;
bool bPhackvalue1, bPhackvalue2;
float fhackvalue1, fhackvalue2;