Repository navigation
Editor: fallback effects draw the untessellated mesh - #3475
Merged
Merged
Conversation
xen2
force-pushed
the
fix/tessellation-fallback
branch
from
September 24, 2026 06:15
7b748ee to
6b98222
Compare
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.
PR details
Fixes the GPU hang reported on Discord when switching a material to tessellation in Game Studio ("The GPU device instance has been suspended",
DriverInternalError).While the new effect compiles, the editor draws with a fallback effect that has no hull shader, but the mesh has already switched to the tessellated patch list. That draw is invalid (D3D11 debug layer: "input topology is Patch Control Points... You need either a Hull Shader and Domain Shader") and hangs the driver on real hardware.
MeshRenderFeature: a render node whose effect is compiling or errored draws the original mesh instead of the tessellated draw. The fallback stays a plain, shared permutation that never depends on user shaders.MeshFallbackEffects: the fallback material and parameter setup moved from the editor intoStride.Rendering, so the engine test runs the real thing. The editor only adds its compiling/error glow flags.EffectFallbackTest: a gated compiler holds back the tessellated permutation for one frame, so the fallback path runs on every GPU lane. It crashes without the fix.Effect: found by the test on a warm effect cache. Deserialized bytecode holds a resource group's cbuffer and the matchingConstantBuffersentry as two instances, and only the second one was hashed. All cached effects with the same descriptor layout then shared one PerView/PerFrame layout, with the size and member offsets of whichever effect came first. Both instances are hashed now. 4.4 only, and invisible on CI because CI always runs cold.