Repository navigation
fix(libSceVideoOut): return RESOURCE_BUSY when a bus is opened twice - #4863
Conversation
|
Ran the rest of the VideoOut tests on c15e9f2 against a real display (Windows 11, RTX 3080, WinLibs GCC 15.2), since headless they mostly skip:
|
|
#4690 has merged, so Porpoise now reaches this on plain With this PR on the same base it carries on and renders, as described above. I've updated "Depends on" to none. |
|
Porpoise (PPSA99764, DolphinPS5) on Windows. Windows 11 (26300), Radeon 860M, WinLibs GCC 15.2.0, Release. Head
AI-assisted: yes (Claude Code) |
|
Linux test with a display (Arch, Intel Arc B390 on Mesa 26.2.2 ANV, Xwayland, GCC 16.2.1, Release), this PR merged onto |
|
Title run with this PR: Windows 11, MinGW GCC 15.2.0 (WinLibs), Release. Built on
AI-assisted (Claude Code). |
What
sceVideoOutOpenon a bus that is already open now returnsSCE_VIDEO_OUT_ERROR_RESOURCE_BUSY(0x80290009) instead of throwingVideoOut: port already open.VideoOutDriver::Openreturns -1 for an open bus, andsceVideoOutOpenturns that into the error. It already mapped a negative handle toVIDEO_OUT_ERROR_RESOURCE_BUSY, but threw it.ORBIS_VIDEO_OUT_ERROR_RESOURCE_BUSYwhen its main port is already open. The PS5 result is unverified, and that's recorded under Functional indocs/dev/debt/libSceVideoOut.md.guest_video_out_output_modechecks that a second open of the main bus returns the error while the first handle stays open.Where a title reaches it
Porpoise (PPSA99764, Porpoise 3.0) opens the main bus twice. On
main1c5e628 + #4690 (/dataat start-up, which it needs to get past its jailbreak check), Windows 11 (WinLibs GCC 15.2, RTX 3080):PlayStation 5 GPU (RADV NAVI21)) and stops atVideoOut: port already open.test/verify-busystack52ec5e4) the second open returns the error and Porpoise carries on. It logsvk: the console outputs 0x0 (handle 0x80290009, status 0xffffffff)for its own display probe, then creates its swapchain (1920x1080, 3 images), presents through the first handle (vk: VideoOut output 1 for V-Sync) and renders. In two 60 s runs it kept up about 60 GPU submissions per second (radv/ps5 submissions: window count=600), with no throw.On Linux the title doesn't get this far in a headless run.
Tested
On the PR head c15e9f2, Release:
guest_video_out_output_mode5/5 (--repeat until-fail:5) withANYPS5_REQUIRE_DISPLAY=1, so the open and the second open ran with a real window.guest_video_out_output_mode5/5. The display part is skipped there, as before.Output.cpp,VideoOutDriver.cpporGuestVideoOutOutputMode.cpp.check_conventions.pypasses.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)main)