Media Engine LLE: add homebrew-focused ME support#21554
Open
frangarcj wants to merge 6 commits intohrydgard:masterfrom
Open
Media Engine LLE: add homebrew-focused ME support#21554frangarcj wants to merge 6 commits intohrydgard:masterfrom
frangarcj wants to merge 6 commits intohrydgard:masterfrom
Conversation
Add MIPSDebugInterface for the Media Engine (debugMe) alongside the existing debugr4k for the main CPU. The CPU menu now has a 'Media Engine' section with separate windows: - ME Debugger (disassembly view) - ME GPR regs - ME FPR regs These can be opened alongside the main CPU windows simultaneously. DrawGPRs/DrawFPRs/DrawVFPU accept optional title/openFlag parameters. ImDisasmWindow::Draw accepts optional title/openFlag for reuse.
Owner
|
This is very cool, thanks for doing this! I'm targeting getting this in after 1.20.4, which is kind of a smaller bugfix/UI release. Will take a little while to review as well. There are some CI errors but they should be fairly easily resolved, I think. Let me know if you have any issues. |
J_CC(CC_Z, bail, true) passed a FixupBranch as the second arg, but the x64 emitter only accepts (CCFlags, bool) or (CCFlags, const u8*, bool). Use a second FixupBranch bail2 and resolve both at the bail target.
Add a 'Media Engine Core' dropdown in Settings > Developer Tools with options: Disabled / Interpreter / IR Interpreter / Native JIT (recommended). The Dynarec/JIT option (value 1) is hidden since it's not a valid ME backend. Native JIT is hidden on unsupported architectures. Default changed from IR Interpreter to Native JIT.
Owner
|
By the way, it's great that you're relying on the IR JIT infra. The old non-IR JITs are going away in the future, likely for 1.21. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds homebrew-focused Media Engine LLE support to PPSSPP.
The goal of this branch is to make ME bare-metal homebrews usable without disturbing the main CPU JIT or the existing execution model. The implementation keeps the ME isolated in its own state and scheduler path, adds the missing ME-side hardware behavior needed by real homebrew, and wires it into interpreter, IR, and native execution paths.
Main pieces included in this PR:
A few implementation details were important for keeping this upstreamable:
About autotests / CI:
PPSSPP CI currently runs
python test.py -g --graphics=software, which only covers thetests_goodlist intest.py. The existingpspautotests/tests/me/metest is a legacy interactive sample rather than a self-terminating stdout autotest, and it is also explicitly ignored today. Because of that, this PR does not add ME coverage to the standard pspautotests CI path yet. I plan to handle that as a separate pspautotests/update-submodule follow-up once there is a proper ME autotest suitable for the headless harness.Testing performed on this branch:
me-core=0,me-core=2, andme-core=3:me-soft-interruptme-minimal-handlerme-spinlockpsp-me-bench-customme-dmacplus-drawing-transferme-feed-graphics-engineAll of the above passed on the ARM64 host used for development.
Note on x64:
The initial x64 native ME backend is included in this branch and compiles cleanly, but I have not yet runtime-validated it on a real x64 host. The ARM64 path and the interpreter/IR paths have been validated with the test matrix above.