A branch into a skipped word was only reported when the sweep ended at
s_endpgm or s_code_end; a sweep that ran to the end of the code threw
the generic code-boundary error instead. Only the decoder's error types
are skipped now, so other exceptions propagate, and the debt entry
records the exception per skipped word and what a misaligned sweep
through an unreachable span puts in the program.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
WebKit links these calls through GNU ld --wrap, so each export takes the
signature of the function it is named after and calls the libkernel_sys
or libSceLibcInternal implementation; the module now links both.
The SILK setup writes rate/50 at +0xE4 next to +0x58 and the state test
asserts it, and a create over a marked state replaces the entry its
instance id names so the surviving Destroy frees the codec and the
following Terminate runs clean. EncodeFloat reports the reservation
that cannot fit with a throw at the checks where the console module
dies after the marker and frame 0, with the 8 MiB bound recorded as our
host stack model, and the tests cover the negative frame and the bound
setup.
GFX11 renumbers the image formats past 29, so the raw codes 10, 37 and 1
read as other formats on the console's GFX10 numbering (37 is
11_11_10_UNORM there, 2_10_10_10_SNORM on gfx1100). Name them, and say
why the TYPE 9 depth compare control only answers at 32_FLOAT: gfx1100
compares 16_UNORM and 32_FLOAT only and answers zero for the others.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
The entry recorded TYPE 1 only from a gfx1010 measurement with format 22 and left other formats and
depth-compare reads open. Measured on a gfx1100 with the hardware oracle: image_sample_lz,
image_sample_b, image_load, image_sample_c_lz and image_get_resinfo return zero and no fault for
TYPE 0 and TYPE 1 over formats 22, 10, 37 and 1, with a nonzero base over readable memory and with a
zero base. A TYPE 9 control in the same kernel returns the stored texel, the raw dword, the declared
64 and 32, and 1.0 from image_sample_c_lz with an ALWAYS depth compare and format 22.
Co-Authored-By: Claude Opus 5 <[email protected]>
Encode and EncodeFloat run the decrypted-module measurements: the null
state +0x01, null samples +0x02 before the state marker, a markerless
state +0x16/+0x15, null data +0x04 before the frame check, maxDataBytes
0 +0x05 and frame sizes outside the accepted durations +0x03, while a
negative maxDataBytes reaches the backend as it reaches AJM on the
console. Create zero-fills the state and writes the measured word and
bitrate tables, Destroy clears the 0x17B2 marker leaving the other
bytes, the encoder registry keys on the instance id at +0x00, and
EncodeFloat aborts for a stack reservation that cannot fit, matching
the console process death. The tests byte-check the measured layout
with the per-rate bitrates and the new check orders behind both
libraries' Api.hpp, and the debt notes carry the module runs with the
remaining AJM gaps.
The [gputime] line printed a draw's range key with the draw flag still set, so an ordinary variant id 0x2 appeared as 0x8000000000000002 next to [drawvariant] 0x2. A draw's key now comes from Recorder::DrawTimingKey and the line prints it through Recorder::TimingKeyLabel as "draw 0x2", the id [drawvariant] names.
The [drawvariant] line was only printed when a draw was recorded inline, so a queued draw's first-seen variant had a timing range with no address line. It is now printed before the draw is handed to the pipeline.
The APS5_PROFILE_GPU_DRAWS row states the label, the shared per-batch query cap and that draws using a recipe are not timed.