Repository navigation
Conversation
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Windows NVIDIA run: this change fails Windows 11 Pro 26200, NVIDIA GeForce RTX 4080 (driver 617.42), AMD Ryzen 7 5800X, WinLibs GCC 15.2.0 r7, Ninja, Release, bundled dependencies,
The assertion is not NVIDIA-specific: with the AI-assisted: yes (runs done with Claude Code). |
|
AMD Windows run (RDNA 3): the change fails RX 7800 XT (
Full CTest with the PR: 1293 of 1298 pass. The other failures also occur on the baseline, so they're not from this PR: So dropping the AI-assisted: yes (Claude Code). |
17d8442 to
04ab941
Compare
|
Reverted the change in To resolve the AMD proprietary driver crash ( Verified:
|
|
Windows NVIDIA rerun of the new head: Windows 11 Pro 26200, NVIDIA GeForce RTX 4080 (driver 617.42), AMD Ryzen 7 5800X, WinLibs GCC 15.2.0 r7, Ninja, Release, bundled dependencies,
No AMD GPU here, so the AI-assisted: yes (runs done with Claude Code). |
…vent AMD crash Sanitize mesh layer outputs and fragment layer inputs in Pipeline creation while keeping the recompiler's mesh layer export intact so unit tests pass.
04ab941 to
c857ea6
Compare
|
A cross-vendor check, since the description lists AMD/Windows only: NVIDIA GeForce RTX 4070 Ti (595.99.02), Ubuntu 24.04, Release. This PR's head (
No regression on NVIDIA as far as these go. AI-assisted: yes (Claude Code) |
|
@Feuris I hit the same Branch:
With #6379 the layer output is removed from every mesh pipeline, so layered mesh draws always land in slice 0, and this test's last-mode case would fail. Would you take the block form into #6379 instead of dropping the layer? Or should I open it as a separate PR? Super Meat Boy 3D (PPSA31162) would be worth a rerun with it; I don't have the game. |
|
Thanks for tracking down the AMD mesh-shader crash. We're going with #7674 for it: that one keeps the mesh layer output and declares it the way glslang does, so layered mesh draws still land in the right slice on every vendor, while removing the layer here would send them all to slice 0. Closing this as superseded by #7674. If you hit an AMD case that #7674 doesn't fix, please reopen or open a follow-up on top of it. |
What
Sanitize mesh layer outputs and unconsumed fragment layer inputs in
Pipeline.cppprior tovkCreateShaderModulewhile keeping the shader recompiler's meshBuiltInLayerexport intact.In the proprietary AMD Windows Vulkan driver (
amdvlk64.dll), declaringgl_Layeras an output from a mesh shader marks the interface variable asPerPrimitiveEXT. When linking against a fragment shader, AMD's stage matcher (0x1821f30d0) fails to match the inputs, leaving a null pointer and triggering an unconditional dereference atamdvlk64.dll+0x21f3221(mov 0x4(%r9), %r10d).Reverting the changes in
SpirvModuleEmitter.cppensures that the recompiler emitsspv::BuiltInLayeras expected, passingagc_driver_layered_volume_draw. Sanitizing the SPIR-V at the Vulkan driver level inPipeline.cppviaDropMeshLayerOutputandDropFragmentLayerInputavoids the AMD crash duringvkCreateGraphicsPipelines.Tested
agc_driver_layered_volume_draw,agc_driver_mesh, andagc_vertex_layer_exportall pass 100%.PPSA31162): boots and renders continuously past the layered volume draw on AMD Radeon RX 6700 XT with zero crashes.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)