Repository navigation
perf(pyrowave): convert on a high-priority D3D12 compute queue by default - #374
Open
RamazanKara wants to merge 1 commit into
Open
RamazanKara wants to merge 1 commit into
RamazanKara wants to merge 1 commit into
Conversation
…ault The D3D12 conversion backend was an OFF-by-default prototype. Make it the default Windows PyroWave conversion path so the colour conversion no longer queues behind the game's own work on the D3D11 immediate context. - The compute queue is created at HIGH priority. If the driver refuses it, the queue is created at NORMAL and the host log says so. Realtime priority is never requested. - The option is now SUNSHINE_PYROWAVE_D3D12_CONVERSION, default ON, and the core config field is d3d12_conversion. The "experimental" and "prototype" wording is gone from code, logs, CTest labels and docs; the doc moves to docs/windows-pyrowave-d3d12-conversion.md. - Fallback is decided once at session start and logged: RTX HDR sessions, the VIBESHINE_PYROWAVE_CONVERSION=d3d11 override and a build without the backend use D3D11 with a log line; an unavailable D3D12 device or queue is a warning, not a silent per-frame switch. A source the backend cannot convert still falls back to D3D11 for the rest of the session with one warning. A submission error still ends the session. - PyroWave keeps using the capture image's own texture and keyed mutex. - test_pyrowave_d3d12_default.py pins the default, the HIGH priority with a NORMAL fallback, the override and the session-start warning. The existing source-text harnesses are updated for the renamed macro and warning text. This does not depend on the PyroWave SDK 1.0 move; the native qualification list is in the doc. Signed-off-by: Ramazan Kara <github@r-kara.de>
RamazanKara
marked this pull request as ready for review
October 27, 2026 23:03
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
co-written by Claude Opus 5.5
Split out of #354 so the default-on policy can be evaluated apart from the PyroWave SDK 1.0 move. It doesn't depend on SDK 1.0 and applies on canary as is.
Why
The D3D11 conversion runs on the immediate context, so under a game load it queues behind the game's own submissions. The D3D12 backend converts on its own compute queue, and this makes it the default at HIGH priority.
Changes
SUNSHINE_EXPERIMENTAL_PYROWAVE_D3D12becomesSUNSHINE_PYROWAVE_D3D12_CONVERSION, default ON, and sessions request the D3D12 conversion by default.D3D12_COMMAND_QUEUE_PRIORITY_HIGH, with a logged NORMAL fallback. Realtime is never requested.VIBESHINE_PYROWAVE_CONVERSION=d3d11forces D3D11, with a warning.docs/windows-pyrowave-d3d12-conversion.md. A newtest_pyrowave_d3d12_default.pypins the default, the priority, the override and the session-start warning.Still to qualify on hardware
VIBESHINE_PYROWAVE_CONVERSION=d3d11on AMD, NVIDIA and Intel.