shader: complete faulting SRT walker loads as zero reads

This commit is contained in:
nmzik committed 2026-10-24 01:39:42 +02:00
1 parent f356fa3730
commit bdf48dcf3b
6 files changed
+72 -6

No files matched your search

+6
View File
@@ -14,6 +14,7 @@
#include "common/threads.h"
#include "common/virtualMemory.h"
#include "graphics/host_gpu/pageManager.h"
#include "graphics/shader/recompiler/ir/passes/SrtWalker.h"
#include "kernel/fileSystem.h"
#include "kernel/memory.h"
#include "kernel/pthread.h"
@@ -672,6 +673,11 @@ static bool KytyExceptionHandler(const Common::HostException::ExceptionInfo& exc
Common::DebugCounters::Add(Common::DebugCounters::Counter::GpuFaults);
return true;
}
if (const auto length =
Libs::Graphics::ShaderRecompiler::IR::SrtWalkerLoadLength(info->exception_address)) {
Loader::X64InstructionEmulator::SkipLoad(info->native_context, length);
return true;
}
}
// Report whatever guest context can be read safely before terminating: which guest thread
// faulted, the register file, the faulting code bytes and the top of its stack.