Main fails linux since 24ed2d9adf: agc_driver_native_depth_aliased_depth_{depth_only,stencil,no_stencil} and native_depth_publication now refuse sampling an aliased multisample target earlier, with a message the HTILE-alias path in NativeMultisampleDepth.cpp does not expect. The parent c42e3a000c is green. Reverting so main is green again; #6973 can re-land together with the test update.
Recorded draws without BDA page tables now take the device-local staging
of written and atomic buffer elements that dispatches use; their
copy-backs are already recorded through MarkGpuWrites. A draw that ends
up synchronous with staged regions is rebuilt unstaged.
APS5_NO_DRAW_STAGING=1 keeps draws' elements in place.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The system libSceJson2.sprx of a retail PS5 (13.60) returns from
sce::Json::Array::pop_front on an empty array and the size stays 0
(orezraey on #10378); the host threw std::out_of_range.
Firmware 13.42's libSceHmd, run under an emulator (BunnyFl on #9577),
returns HANDLE_INVALID for any handle but 0 before initialization from
sceHmdGetDeviceInformationByHandle and sceHmdGetFieldOfView, and
NOT_INITIALIZED for handle 0 below SDK 4.50. The host returned
NOT_INITIALIZED for every handle.
The controller sound card path already scales its samples by ANYPS5_RUMBLE, but
the Bluetooth haptics stream took the vibration port samples before that, so
ANYPS5_RUMBLE=0 still left a Bluetooth DualSense vibrating.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
SDL sends scePadSetVibration rumble as report 0x31 with audio haptics
turned off. Once the rumble stopped, the stream's haptics came back at a
different strength than before it. The stream thread now sends its
configuration report 0x31 again 100 ms after slot 0's rumble stops, which
brought the haptics back to their level before the rumble.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The worker sent a backlog of buffered blocks back to back. It now sends at
most one report 0x32 per 10.67 ms, the length of one 32-frame block at
3 kHz, without a catch-up burst after a pause.
A failed report write cleared the stream-open flag, which sent the vibration
ports to motor rumble. The flag now stays set until the controller
disconnects, so the ports stay silent while the stream is stopped.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The 10.672 ms timer took a block only when it fired, so audio arriving in
blocks smaller than 32 haptic frames (16 from a 256-frame legacy port)
regularly found fewer than 32 frames and the report was skipped; catching
up after falling behind sent two reports back to back and left a ~21 ms
hole. The controller, asked to queue only 16 frames, then ran dry, and
the haptics dropped out about once per second on hardware.
The stream thread now waits on a condition variable until two blocks are
buffered and sends one, so reports follow the audio clock, and report
0x32 asks the controller to queue 64 frames (21 ms) to absorb Bluetooth
jitter and the difference between the title's rate and the controller's
crystal. Closing the stream wakes the waiting thread before the join.
Co-authored-by: seradavid <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>