[gpu] Keep a guest's early call queued while a job finishes #7
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
GRID0-net/Inkypaint!7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "doloro/Inkypaint:gpu-queue-early-call"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
We drop a lock while job is being polled, so we never get the item from the job (gpu read) and we dont know when its done.
Is what i think is going on.
Deepseek v4.1 explanation
run_pass drops the queue lock while a poll item or a job runs. gpu_call_early inserts a texel read or write ahead of the first non-early item, so the head or the predecessor that run_pass read before the run can be out of date. Unlinking the finished item with that value skipped the new early call. The item leaked, g_qearly stayed above the listed items, and a lost texel read never raised the readback syncpoint. nvn_read_texels then waited on it for good, and a game sat on a loading screen with no file reads and an idle GPU thread.queue_unlink re-finds the item from the head when prev no longer
leads to it, and fixes g_qtail with the real predecessor.
Verified with a run through the scene that hung. The load passed the
point, read 1541 more files in 25 s and completed 63506 readbacks,
against 12308 in the hung run. gdb at the hang showed g_qearly above
zero with no early item in the queue list.
[area] commit subject: why, one bullet for each commit. A pull request of one commit can skip this list.Testing: what you ran and what it showed. A test that fails without the change is the best proof. For a runtime change, the game, the scene and how many runs.
Not tested: what you did not check. Leave the line out if there is nothing.
Fixes #
SPDX-License-Identifier: GPL-3.0-or-laterand the project's copyright line.docs/CREDITS.md.cause you merged it
@doloro wrote in #7 (comment):
no worries
Pull request closed