Capture costly compute builds and restore matching recipes after checking
full recipes, driver fingerprints and Vulkan compatibility keys. Add size
and time thresholds, opt-out, atomic persistence and corruption/rejection
fallback.
Remember below-threshold recipes in separate files so competing decisions
cannot overwrite captured binaries. Prefer saved binaries and retry
capture when the time threshold is lowered.
Cover compatibility, fallback, deterministic competing writers and
cross-process capture, restore and corruption.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The 13 exports whose body is mov al,1; ret write only the low byte, so the
upper bits of EAX are unspecified; the test now masks them and the debt
entry separates those 13 from the 124 bodies that write EAX. The inventory
count returns to 7440, the 134 rows removed from the 7574 that were listed,
because three of the 137 belong to the separate known-name group.
137 exports that were throwing stubs return a fixed value in the PS5 11.00
module: 111 end in xor eax,eax and return 0, 13 load an immediate with
mov eax,imm32 and return it, and 13 return true through mov al,1. Their
bodies in src/ConstantExports.cpp reproduce those values.
The functions were matched to the firmware export table by recomputing each
NID from the declared symbol, and the body and size of every selected
address were checked against the image. The declared prototypes stay the
no-parameter int placeholders, so only the 32-bit return value is covered.
The technical-debt inventory drops the rows that no longer throw and records
the measurement and that limit.
Implement the EGL 1.4 and OpenGL ES 2.0 exports that do not need a shader compiler or rasterizer as a host-side state machine following the Khronos specifications: the default display, a single RGBA8/depth16/stencil8 pbuffer configuration, ES2 contexts with share groups, per-thread current state and errors, buffers, textures with mipmap generation, renderbuffers, framebuffers and their completeness, shader and program objects, vertex attributes, every fixed-function state setter and query, clears, pixel uploads, copies and reads on CPU storage.
The 22 unknown NIDs are named from the NID database and the Piglet, Orbis texture and compositor exports, together with shader compilation, program linking and reflection, uniforms, draws, native window surfaces and the Sony-specific APIs, stay NotImplemented_nid_no_patch; the gaps are in docs/dev/debt/libSceGLSlimVSH.md.
Preserve the nearbyint implementation and regression coverage while incorporating current main. The write-watch registration prerequisite is now part of main.
Validation: freshly compiled production MathExact.cpp regression passes; ASan/UBSan passes with detect_leaks=0. The same fixture compiles against main Math.cpp and fails at the FE_INEXACT assertion (exit 134). Conventions, whitespace and 235 script registrations pass. Full product build and full CTest were not rerun for this synchronization.
A title is jailed (agreed on #11216). FreeBSD 11.4 prison_priv_check denies
PRIV_SCHED_RTPRIO, PRIV_SCHED_SET and PRIV_SCHED_SETPRIORITY to a jailed caller.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>