Skip to content

FMV (.vp6) black screen on the host render target path (D3D12 / Vulkan with render_target_path_vulkan="") #15

Description

@awemancba

Title

FMV (.vp6) black screen on the host render target path (D3D12 / Vulkan with render_target_path_vulkan="")

Platform

Windows 11, AMD Radeon RX 6700 (discrete desktop GPU), D3D12 backend (Windows default).
The README notes D3D12 is "first bring-up, only tested on Steam Deck APU" — this is a report from a desktop discrete GPU.

Summary

The intro FMVs (.vp6, VP6 codec) play with black video (audio OK) on the host render target path:

  • D3D12 — always (D3D12 only has the host RT path)
  • Vulkan when render_target_path_vulkan = "" is forced

The fragment shader interlock path (Vulkan default since 11f7e299) plays the videos perfectly on the same hardware.

Investigation summary (full details in attached DEBUG_REPORT.md)

The D3D12 presentation pipeline works end-to-end. Verified with a diagnostic cvar (vp6_test_pattern = "d") that fills the video's host RT (1280x2048, 1xMSAA, k_2_10_10_10) with solid blue before the dump:

  • Host RT readback: 100% non-zero (blue) — the fill lands
  • edram_buffer_ readback after dump: 100% non-zero (blue) — the dump shader works
  • The menu/animations display the fill (blue shown as red — an R↔B channel swap in the conversion) — dump → copy → swap texture → presenter all work

The FMV itself stays black because:

  • VP6-DIAG DUMPRT: the video RT is only dumped ~20 frames (~360 ms) at the start of each FMV; for the rest of the FMV a different RT (4xMSAA) is dumped instead — the game stops drawing to the video RT (or the host RT cache evicts it)
  • VP6-DIAG TEXLOAD: the frontbuffer (0x034EC000) is loaded as fmt=7 (k_2_10_10_10, 32bpb) although the fetch constant says fmt=54 (k_2_10_10_10_AS_16_16_16_16, 16-bit-per-channel storage, 64bpb) — suspected load-stride mismatch

Reproduction (D3D12)

# simpsons.toml
vp6_test_pattern = "d"   # diagnostic: fill the video RT with solid blue pre-dump

With "d": menu/animations turn red (the blue fill with R↔B swap) — proving the chain works — while the FMV stays black.

Logs (attached)

simpsons_017.log / 018.log (Test D), 021.log (TEXLOAD + DUMPRT), 022.log (DUMPRT per second).
Note: logs contain local diagnostic instrumentation (VP6-* prefixes) not part of the project.

Workaround

Use the Vulkan backend (FSI path) — videos play fine on the tested hardware. A 90-minute session with the Vulkan build ran without issues (see Issue # for the level-load workaround needed on top).

Suggested next step

Investigate why the video RT stops being dumped after ~20 frames in the host RT path (RT cache eviction vs the game stopping its draws), and/or the fmt=54 → fmt=7 load-stride mismatch.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions