Repository navigation
Conversation
Source: NotRexed/Hookshot#1150 Original proposal by: azlekayn Original head: a5bee1bec1484c9e10f07a799ee5ae216414d0b8 Verified source tree: 658db0e Reconstructed import commit, not a claim of original authorship. Source head author: AzleKayn <azlekayn@gitlab.com>
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.
Longshot is preserving this upstream proposal for review. This draft is not an adopted or functionally verified fix.
Source: NotRexed/Hookshot#1150
Original contributor: azlekayn.
Original head:
a5bee1bec1484c9e10f07a799ee5ae216414d0b8.Exact source tree:
658db0e6700a1784757914a95e87031fb1fe9366.Import parent:
7dbdcdc00889ccf038ad95c7481ad6e10397f8a5(common ancestor with the migration base).The source-tree checksum matches exactly. Original commits after the common ancestor are represented by one reconstructed import commit; source links and authorship are recorded. This snapshot can contain prerequisites beyond our migration base. Review its complete diff and overlapping proposals before merging.
Validation here: copying fidelity only. Platform builds, gameplay, functional behavior and the upstream author's claims have not been independently verified. Keep draft until reviewed, rebased and tested.
Original proposal
Draft: reworked after review. It still needs an NVIDIA retest before it can be considered.
What
A range the game invalidates to read (
nvnMemoryPoolInvalidateMappedRange,nvnBufferInvalidateMappedRange) holds GPU results. From a range's first invalidate on, a binding wholly inside it is bound in guest memory instead of the VRAM mirror, and the guest page table points there too. Ranges are rounded to pages.wb_pages_note, so the CPU's read still waits for that submission.RX_VK_RB_DIRECT=0restores the old behaviour. It only applies when mirrors are on.Measurements
RX 7800 XT, RADV (Mesa 26.2.6), Ryzen 7 7800X3D, Linux, ~2150-draw Kokiri Forest balcony view, default settings, base 7dbdcdc. Only the renderer
.sodiffers, runs were alternated, and frames were presented through a headless weston on the same GPU.RX_VK_RB_DIRECT=0)A 4-minute run averaged 54.7 fps over 13,146 frames with 0 flashes and no device loss. Direct bindings average 3.4 KB, against about 400 KB in the first version. The spike count takes every frame's mean brightness. With the read-back wait removed (
RX_VK_NO_READBACK_WAIT=1) it reports 270-360 spikes a minute, so it can see the bug.Limits
direct_write_epochupdate.Tests
tests/test_rb_direct.pychecks which bindings go direct, the range list's limits and reuse, and (from the source) the read-back wait, the size cap and the pool retirement.tests/run_all.pyhas the same two failures as main (nx2/test_nup_read_name.pyand the byte-compile step), plus this test passing.🤖 Generated with Claude Code