obsproject / obsproject/obs-studio
OBS does not properly hook applications (PCSX2 2.7.57 or newer) that load the Agility SDK via Independent devices
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 76.4k
- Forks
- 10.2k
- Avg merge
- 4d 23h
- Merged PRs (30d)
- 12
Description
Operating System Info
Windows 11
Other OS
No response
OBS Studio Version
32.2.1
OBS Studio Version (Other)
No response
OBS Studio Log URL
https://obsproject.com/logs/ZV7GtXwxKBUMQBpL
OBS Studio Crash Log URL
No response
Expected Behavior
OBS is able to capture PCSX2 with DX12
Current Behavior
OBS, if launched before PCSX2 starts emulation, is unable to capture PCSX2 with DX12
Steps to Reproduce
- Launch OBS, set to Game capture PCSX2.
- Launch PCSX2, configured to use DX12 (Auto should use that on recent builds).
- Start emulation in PCSX2.
- Observe that OBS isn't able to capture.
Anything else we should know?
PCSX2 uses the D3D12 independent devices API to load the Agility SDK and then assign that as the global D3D12.
This is performed on emulation start, if OBS hooks before that (as would be the case with the repo steps) then OBS would hook the system D3D12 dlls instead of the loaded Agility SDK that PCSX2 is using to render.
Documentation on independent devices here https://microsoft.github.io/DirectX-Specs/d3d/IndependentDevices.html
Relevant loader code here https://github.com/PCSX2/pcsx2/blob/93f10864c1a5e202ee3b9c584d6bbd39463f84f3/pcsx2/GS/Renderers/DX12/GSDevice12.cpp#L194-L255
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with OBS 32.2.1 and PCSX2 2.7.57 or newer using the listed steps, then inspect the OBS log and the DirectX Independent Devices documentation. Read PCSX2's GSDevice12.cpp loader code at the linked lines to understand when the Agility SDK becomes the global D3D12. Done means OBS can capture PCSX2 with DX12 when OBS starts first.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100