fix(vk): make frame dump copies visible to host reads #1621
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!1621
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/dump-readback"
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?
Frame dumps read mapped GPU copy destinations without invalidating non-coherent host caches, and their post-copy barriers cover device commands rather than host reads. Stale diagnostic pixels or buffer words can mislead investigations even after the submission has completed.
Record a COPY/TRANSFER_WRITE to HOST/HOST_READ dependency for each dump staging copy, then invalidate its copied allocation range before the existing CPU consumers run. Cover typed color, packed depth/RGB9E5 and storage-buffer dumps. Depth is invalidated before conversion changes the dimensions/map. Existing GPU barriers, allocation policy, submission waits, conversions and cleanup are preserved; no host/renderer ABI or intended visual change.
Validation at
1ea25d452c852d51023cd5dd365d6fb20a951d95, based on main779bdcf:This fixes opt-in diagnostic readback, not ultrawide framing itself. Native coverage is one checkpoint and does not prove physical non-coherent hardware, campaign coverage, performance or generic device-loss handling. Game-derived dumps and raw data stay private; only authored tests, source and documentation are included.
Details and primary references:
docs/dump-readback.md. Existing capture-readback work (#1502), PNG publication (#1604), stage diagnostics (#1541), and control bridges (#926/#1025) were checked for scope overlap: this package changes the separate frame-dump staging producers/consumers. Exact-head fork source, Windows-builder and AppImage checks will be reported when available.Native Windows compiler follow-up
The first source workflow exposed an existing packed-depth aspect enum ternary that native Windows clang rejects as a narrowing aggregate initializer.
08b6610explicitly converts that expression toVkImageAspectFlags; both selected Vulkan values and readback behavior are unchanged. All 56 LLVM/GCC/ASan/UBSan scenarios and nine negative variants pass again, and the official matching API12 build passes. The native checkpoint evidence above remains tied to1ea25d4; it is not relabeled as a new game run. Three new exact-head workflows are dispatched. No compiler diagnostics or test assertions were disabled.Current-head validation
Current head
f445caa, based on mainba40a1a. Earlier local/runtime results describe their recorded source hashes.The standalone contribution patch is unchanged after the audited main refresh; exact-head build/source checks are refreshed below. Earlier runtime evidence remains tied to its recorded hash.
Fork runs are separate from upstream Actions approval; no maintainer approval gate is bypassed.