Skip to content

Fix specialization constant patching on D3D12.#111356

Merged
Repiteo merged 1 commit intogodotengine:masterfrom
blueskythlikesclouds:d3d12-spec-constant-patch-fix
Oct 13, 2025
Merged

Fix specialization constant patching on D3D12.#111356
Repiteo merged 1 commit intogodotengine:masterfrom
blueskythlikesclouds:d3d12-spec-constant-patch-fix

Conversation

@blueskythlikesclouds
Copy link
Contributor

@blueskythlikesclouds blueskythlikesclouds commented Oct 7, 2025

Fixes #100138.

The specialization constant patching code was rejecting signed values, assuming it needed to set the MSB to respect LLVM IR's VBR encoding. However, as explained here, the contents of the integer actually do not matter at all, because we can just keep emitting continue bits even if the bits are all zero.

Godot already uses an appropriate sentinel value to enforce 32 bits in the output bytecode, so this approach works fine.

@blueskythlikesclouds blueskythlikesclouds requested a review from a team as a code owner October 7, 2025 10:27
@AThousandShips AThousandShips added cherrypick:4.4 Considered for cherry-picking into a future 4.4.x release cherrypick:4.5 Considered for cherry-picking into a future 4.5.x release labels Oct 7, 2025
@AThousandShips AThousandShips added this to the 4.6 milestone Oct 7, 2025
@blueskythlikesclouds blueskythlikesclouds force-pushed the d3d12-spec-constant-patch-fix branch 2 times, most recently from 5458698 to c26d71f Compare October 7, 2025 12:46
Copy link
Member

@clayjohn clayjohn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems fine to me

@clayjohn clayjohn removed cherrypick:4.4 Considered for cherry-picking into a future 4.4.x release cherrypick:4.5 Considered for cherry-picking into a future 4.5.x release labels Oct 7, 2025
Copy link
Contributor

@Repiteo Repiteo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Local dev builds fail from the sign change. Given the lambda already expects a uint64_t, we should be doing the same with the base variable

@Repiteo Repiteo merged commit 599fd73 into godotengine:master Oct 13, 2025
20 checks passed
@Repiteo
Copy link
Contributor

Repiteo commented Oct 13, 2025

Thanks!

@akien-mga
Copy link
Member

Cherry-picked for 4.5.2.

@akien-mga akien-mga removed the cherrypick:4.5 Considered for cherry-picking into a future 4.5.x release label Jan 8, 2026
@blueskythlikesclouds blueskythlikesclouds deleted the d3d12-spec-constant-patch-fix branch January 15, 2026 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bicubic Lightmap Filtering Fails to Engage Under DX12

5 participants