Video_Software: Toggable zfreeze and early_z support for testing.

This commit is contained in:
NeoBrainX 2013-02-15 17:44:56 +01:00
parent 8923f0e13b
commit 183ad0c628
4 changed files with 18 additions and 6 deletions

View File

@ -125,7 +125,7 @@ inline void Draw(s32 x, s32 y, s32 xi, s32 yi)
if (z < 0 || z > 0x00ffffff) if (z < 0 || z > 0x00ffffff)
return; return;
if (bpmem.zcontrol.early_ztest && bpmem.zmode.testenable) if (bpmem.zcontrol.early_ztest && bpmem.zmode.testenable && g_SWVideoConfig.bZComploc)
{ {
// early z // early z
if (!EfbInterface::ZCompare(x, y, z)) if (!EfbInterface::ZCompare(x, y, z))

View File

@ -35,6 +35,9 @@ SWVideoConfig::SWVideoConfig()
bDumpObjects = false; bDumpObjects = false;
bDumpFrames = false; bDumpFrames = false;
bZComploc = true;
bZFreeze = true;
bDumpTevStages = false; bDumpTevStages = false;
bDumpTevTextureFetches = false; bDumpTevTextureFetches = false;
@ -52,6 +55,8 @@ void SWVideoConfig::Load(const char* ini_file)
iniFile.Get("Hardware", "RenderToMainframe", &renderToMainframe, false); iniFile.Get("Hardware", "RenderToMainframe", &renderToMainframe, false);
iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, false); iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, false);
iniFile.Get("Rendering", "ZComploc", &bZComploc, true);
iniFile.Get("Rendering", "ZFreeze", &bZFreeze, true);
iniFile.Get("Info", "ShowStats", &bShowStats, false); iniFile.Get("Info", "ShowStats", &bShowStats, false);
@ -74,6 +79,8 @@ void SWVideoConfig::Save(const char* ini_file)
iniFile.Set("Hardware", "RenderToMainframe", renderToMainframe); iniFile.Set("Hardware", "RenderToMainframe", renderToMainframe);
iniFile.Set("Rendering", "HwRasterizer", bHwRasterizer); iniFile.Set("Rendering", "HwRasterizer", bHwRasterizer);
iniFile.Set("Rendering", "ZComploc", &bZComploc);
iniFile.Set("Rendering", "ZFreeze", &bZFreeze);
iniFile.Set("Info", "ShowStats", bShowStats); iniFile.Set("Info", "ShowStats", bShowStats);

View File

@ -36,6 +36,10 @@ struct SWVideoConfig : NonCopyable
bool bHwRasterizer; bool bHwRasterizer;
// Emulation features
bool bZComploc;
bool bZFreeze;
bool bShowStats; bool bShowStats;
bool bDumpTextures; bool bDumpTextures;

View File

@ -784,11 +784,12 @@ void Tev::Draw()
output[BLU_C] = (output[BLU_C] * invFog + fogInt * bpmem.fog.color.b) >> 8; output[BLU_C] = (output[BLU_C] * invFog + fogInt * bpmem.fog.color.b) >> 8;
} }
if (!bpmem.zcontrol.early_ztest && bpmem.zmode.testenable) bool late_ztest = !bpmem.zcontrol.early_ztest || g_SWVideoConfig.bZComploc;
{ if (late_ztest && bpmem.zmode.testenable)
if (!EfbInterface::ZCompare(Position[0], Position[1], Position[2])) {
return; if (!EfbInterface::ZCompare(Position[0], Position[1], Position[2]))
} return;
}
#if ALLOW_TEV_DUMPS #if ALLOW_TEV_DUMPS
if (g_SWVideoConfig.bDumpTevStages) if (g_SWVideoConfig.bDumpTevStages)