mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Wire the generated ExecInstruction dispatcher into the interpreter's hot loop
Adds Core/MIPS/InterpreterDispatch.cpp, the checked-in output of GenerateInterpreterDispatch() (see the previous commit), and hooks it into RunUntilFast() in MIPSTables.cpp in place of the old MIPSGetInstruction()-based table walk + indirect call through instr->interpret. The checked-with-breakpoints/memchecks path (RunUntilWithChecks) is untouched for now, since it inspects MIPSInstruction flags directly and correctness there matters most. Also fixes a real crash in headless.cpp found while testing this: cmdLineOptions.gpuBackend.value() would throw when unset (e.g. with --graphics=software), now uses value_or(). Verified with `test.py -g --cpu=interpreter --graphics=software`: 313/314 pass; the one failure (cpu/fpu/fpu) is a pre-existing interpreter-vs-JIT denormal (flush-to-zero) difference, confirmed to fail identically with the old table-walking dispatch, so unrelated to this change. Adds Tools/update-dispatcher.py to regenerate InterpreterDispatch.cpp from a built PPSSPPHeadless binary whenever the MIPSTables.cpp tables change. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019SKhm9wKEQzRUsx9mTrrtQ
This commit is contained in:
1 parent
65495c76c0
commit
d000d5366a
10 files changed
+869
-4
No files matched your search
@@ -716,7 +716,7 @@ int main(int argc, const char* argv[]) {
|
||||
return 1;
|
||||
#else
|
||||
// TODO: Will we need a larger window for higher resolutions? Well, not if we use buffered rendering.
|
||||
window = CreateHiddenWindow(480, 272, cmdLineOptions.gpuBackend.value(), &windowDesc);
|
||||
window = CreateHiddenWindow(480, 272, cmdLineOptions.gpuBackend.value_or(GPUBackend::OPENGL), &windowDesc);
|
||||
if (!windowDesc.Valid()) {
|
||||
fprintf(stderr, "Failed to create a window for graphics context");
|
||||
return 1;
|
||||
|
||||
Reference in new issue
Block a user