mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-28 00:35:47 +00:00
test(job-manager): record worker wait reference divergence
This commit is contained in:
1 parent
a078f2a401
commit
31c4d801ea
2 files changed
+4
-2
No files matched your search
@@ -5,3 +5,5 @@
|
||||
- [Compute sequences](../../../core/libs/prx/libSceJobManager/Export.cpp) use explicit release packets instead of native rewind and completion-packet patching across GPU barriers. The bounded command area throws when exhausted; the original traps. Maximum register lists and markers can exhaust it before the logical dispatch limit. Compute dispatch on a CPU sequence throws.
|
||||
- [Scheduling](../../../core/libs/prx/libSceJobManager/Export.cpp) uses host mutexes and condition variables instead of native atomic queues and semaphores; spin intervals deliberately use unscaled host TSC. Blocks below 0x2d8 bytes, factory priorities above one, use of destroyed sequences and shutdown from a worker throw. New calls concurrent with shutdown are unverified.
|
||||
- [Pool allocation](../../../core/libs/prx/libSceJobManager/Export.cpp) reuses freed nodes in a different order; profiler dispatch IDs can differ from native allocation. The fallback Wait deliberately allocates no pool node; native Wait can stall on global pool exhaustion. Resource-creation failures throw after cleanup, where the original does not check every return. Vtable order was checked, but no calling title or PS5 timing equivalence has been tested.
|
||||
|
||||
- Console behavior for [worker waits](../../../core/libs/prx/libSceJobManager/Export.cpp) is unverified. The owned original module stalls on the zero-spin, zero-persistence `worker_wait` fixture with native Windows and Linux host kernel services; the fallback wakes a spare worker and completes the child. The reference runner keeps this case selectable but excludes it from the shared-behavior parity suite.
|
||||
@@ -17,7 +17,7 @@ sys.path.insert(0, str(ROOT / "core/relinker/relinker/tests"))
|
||||
from guest_import_fixtures import executable
|
||||
|
||||
CASES = ("memory", "owned_state", "concurrent_wait", "validation", "dispatch", "ordering", "nested", "limits", "node_pool", "priority", "shutdown", "worker_policy", "worker_wake", "worker_wait", "worker_count", "worker_spin")
|
||||
PARITY_CASES = tuple(case for case in CASES if case != "node_pool")
|
||||
PARITY_CASES = tuple(case for case in CASES if case not in ("node_pool", "worker_wait"))
|
||||
|
||||
|
||||
def stage_libraries(directory, build, toolchain, dependencies):
|
||||
@@ -122,7 +122,7 @@ def main():
|
||||
parser.add_argument("--output", type=Path, help="New directory for staged modules, per-case logs and results.json; defaults to a temporary directory")
|
||||
selection = parser.add_mutually_exclusive_group()
|
||||
selection.add_argument("--cases", nargs="+", choices=CASES)
|
||||
selection.add_argument("--suite", choices=("all", "parity"), help="all runs every case (default); parity excludes the known native node_pool Wait stall")
|
||||
selection.add_argument("--suite", choices=("all", "parity"), help="all runs every case (default); parity excludes original-module node_pool and worker_wait stalls with host kernel services")
|
||||
parser.add_argument("--timeout", type=float, default=20)
|
||||
args = parser.parse_args()
|
||||
if args.cases is None:
|
||||
|
||||
Reference in new issue
Block a user