Cherry-picks to fix builds with changes to build images#7847
Merged
Conversation
Currently, when internal pipelines build for ARM64X we use the older experimental `MSVC_BUILD_AS_X` feature. The latest VS release has regressed this functionality, resulting in the import libs for the ARM64 and ARM64X DLLs being written to the same location. Remember that ARM64X binaries are fat binaries containing both ARM64 and ARM64EC code. When building for ARM64 with MSVC_BUILD_AS_X, the Visual Studio cmake generator actually generates vcxproj files that build ARM64 and ARM64EC (with the ARM64EC version being the one that becomes the combined ARM64X binary. The generated project knows how to ensure that the ARM64 DLL is built to one location and the ARM64X one goes into the destination specified in the cmake scripts. However, the import libraries end up being configured to go into the same location, resulting in a race condition. Our cmake scripts have no knowledge of these two platforms, and so there's no direct way to address this. This workaround makes it so that when building in this mode the import libraries are written to a location containing `$(PLATFORM)`. This is a msbuild variable that's evaluated at build time. This is a short-term fix that allows us to unblock our internal pipelines. Longer-term we should move to using the [documented ARM64X approach](https://learn.microsoft.com/en-us/windows/arm/arm64x-build#building-an-arm64x-dll-with-cmake), at which point this change should be reverted. (cherry picked from commit ea7e910)
Previously using WARP from nuget was something that had to be opted in to. This change makes it the default behvior. This allows some simplifications. The nuget package is installed at configure time. If the user wants to override the nuget installation behavior then they can pass in extra parameters, rather than having an alternative mechanism for describing which package to use. The actual DLL to load is specified through a TAEF parameter and specifies the full path to the DLL. (cherry picked from commit 33dd542) Manually moved changes from HlslExecTestUtils.h into ExecutionTest.cpp
This change allows us to control which nuget.config is used. This is to allow internal builds to override the nuget feed that's used. (cherry picked from commit 06dcb00)
Contributor
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
Newer versions of clang include -Wcast-function-type-mismatch in -Wextra, which triggers a warning when we cast between function pointers that differ between a pointer and a reference in an argument. Resolve this by making the types consistent. This change is equivalent to llvm/llvm-project#86504 from upstream. (cherry picked from commit b05a11a)
…/microsoft/DirectXShaderCompiler into user/damyanp/fix-1.8.2505-builds
V-FEXrt
approved these changes
Oct 27, 2025
Previous version used type erasure through a `void* (*)()` pointer, which triggered gcc warning and implied a lot of reinterpret_cast. This version should make it harder to hit ourselves in the foot. Differential revision: https://reviews.llvm.org/D54203 (cherry picked from commit 86f8b70f1b7c3f92266197d580f6d86414650997) (cherry picked from commit 4ddee81)
hekota
approved these changes
Oct 28, 2025
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.
Since we last built this branch there have been various changes to the compilers and build images we use that require code updates to allow this to continue building.
Workaround broken ARM64X / MSVC_BUILD_AS_X builds (#7827)
(cherry picked from commit ea7e910)
Use WARP from nuget by default (#7427)
(cherry picked from commit 33dd542)
Manually moved changes from HlslExecTestUtils.h into ExecutionTest.cpp
Add hctbuild.cmd parameter to specify the nuget config file (#7785)
(cherry picked from commit 06dcb00)
Change type of DiagnosticHandlerTy
(cherry picked from commit b05a11a)
Type safe version of MachinePassRegistry
(cherry picked from commit 4ddee81)