diff --git a/.azuredevops/pipelines/DirectXTK12-GitHub-Dev17.yml b/.azuredevops/pipelines/DirectXTK12-GitHub-Dev17.yml
index c4738729..61408107 100644
--- a/.azuredevops/pipelines/DirectXTK12-GitHub-Dev17.yml
+++ b/.azuredevops/pipelines/DirectXTK12-GitHub-Dev17.yml
@@ -38,44 +38,6 @@ pool:
vmImage: windows-2022
jobs:
- - job: DESKTOP_BUILD
- displayName: 'Windows Desktop'
- timeoutInMinutes: 120
- cancelTimeoutInMinutes: 1
- strategy:
- maxParallel: 3
- matrix:
- Release_arm64:
- BuildPlatform: ARM64
- BuildConfiguration: Release
- Debug_arm64:
- BuildPlatform: ARM64
- BuildConfiguration: Debug
- Release_x64:
- BuildPlatform: x64
- BuildConfiguration: Release
- Debug_x64:
- BuildPlatform: x64
- BuildConfiguration: Debug
- Release_x86:
- BuildPlatform: x86
- BuildConfiguration: Release
- Debug_x86:
- BuildPlatform: x86
- BuildConfiguration: Debug
- steps:
- - checkout: self
- clean: true
- fetchTags: false
- - task: VSBuild@1
- displayName: Build solution DirectXTK_Desktop_2022_Win10.sln
- inputs:
- solution: DirectXTK_Desktop_2022_Win10.sln
- msbuildArgs: /p:PreferredToolArchitecture=x64
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- msbuildArchitecture: x64
-
- job: UWP_BUILD
displayName: 'Universal Windows Platform (UWP)'
timeoutInMinutes: 120
diff --git a/.azuredevops/pipelines/DirectXTK12-GitHub-Test-Dev17.yml b/.azuredevops/pipelines/DirectXTK12-GitHub-Test-Dev17.yml
index 1a72d5d7..abdae5d7 100644
--- a/.azuredevops/pipelines/DirectXTK12-GitHub-Test-Dev17.yml
+++ b/.azuredevops/pipelines/DirectXTK12-GitHub-Test-Dev17.yml
@@ -48,80 +48,6 @@ variables:
value: $(ADOFeedGUID)
jobs:
- - job: DESKTOP_BUILD
- displayName: 'Windows Desktop'
- timeoutInMinutes: 60
- cancelTimeoutInMinutes: 1
- workspace:
- clean: all
- strategy:
- maxParallel: 3
- matrix:
- Release_arm64:
- BuildPlatform: ARM64
- BuildConfiguration: Release
- Debug_arm64:
- BuildPlatform: ARM64
- BuildConfiguration: Debug
- Release_x64:
- BuildPlatform: x64
- BuildConfiguration: Release
- Debug_x64:
- BuildPlatform: x64
- BuildConfiguration: Debug
- Release_x86:
- BuildPlatform: x86
- BuildConfiguration: Release
- Debug_x86:
- BuildPlatform: x86
- BuildConfiguration: Debug
- steps:
- - checkout: self
- clean: true
- fetchTags: false
- fetchDepth: 1
- path: 's'
- - checkout: testRepo
- displayName: Fetch Tests
- clean: true
- fetchTags: false
- fetchDepth: 1
- path: 's/Tests'
- - task: NuGetToolInstaller@1
- displayName: 'Use NuGet'
- - task: NuGetAuthenticate@1
- displayName: 'NuGet Auth'
- - task: NuGetCommand@2
- displayName: NuGet restore tests
- inputs:
- solution: Tests/D3D12Test/packages.config
- feedRestore: $(GUID_FEED)
- includeNuGetOrg: false
- packagesDirectory: ../packages
- - task: MSBuild@1
- displayName: Log Information
- inputs:
- solution: build/LogInfo.targets
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- msbuildArchitecture: x64
- - task: VSBuild@1
- displayName: Build solution DirectXTK_Tests_Desktop_2022_Win10.sln
- inputs:
- solution: Tests/DirectXTK_Tests_Desktop_2022_Win10.sln
- msbuildArgs: /p:PreferredToolArchitecture=x64
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- msbuildArchitecture: x64
- - task: VSBuild@1
- displayName: Build solution DirectXTK_Tests_Desktop_2022_AgilitySDK.sln
- inputs:
- solution: Tests/DirectXTK_Tests_Desktop_2022_AgilitySDK.sln
- msbuildArgs: /p:PreferredToolArchitecture=x64
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- msbuildArchitecture: x64
-
- job: UWP_BUILD
displayName: 'Universal Windows Platform (UWP)'
timeoutInMinutes: 120
diff --git a/.azuredevops/pipelines/DirectXTK12-GitHub-Test.yml b/.azuredevops/pipelines/DirectXTK12-GitHub-Test.yml
deleted file mode 100644
index 6bd33808..00000000
--- a/.azuredevops/pipelines/DirectXTK12-GitHub-Test.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright (c) Microsoft Corporation.
-# Licensed under the MIT License.
-#
-# https://go.microsoft.com/fwlink/?LinkID=615561
-
-# Builds the library and test suite.
-
-schedules:
- - cron: "30 5 * * *"
- displayName: 'Nightly build'
- branches:
- include:
- - main
-
-# GitHub Actions handles test suite for CI/PR
-trigger: none
-pr:
- branches:
- include:
- - main
- paths:
- include:
- - '.azuredevops/pipelines/DirectXTK12-GitHub-Test.yml'
-
-resources:
- repositories:
- - repository: self
- type: git
- ref: refs/heads/main
- - repository: testRepo
- name: walbourn/directxtk12test
- type: github
- endpoint: microsoft
- ref: refs/heads/main
-
-name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
-
-pool:
- vmImage: windows-2022
-
-variables:
- - group: dxtk-shared-variables
- - name: Codeql.Enabled
- value: false
- - name: GUID_FEED
- value: $(ADOFeedGUID)
-
-jobs:
- - job: DESKTOP_BUILD
- displayName: 'Windows Desktop'
- timeoutInMinutes: 120
- cancelTimeoutInMinutes: 1
- workspace:
- clean: all
- strategy:
- maxParallel: 2
- matrix:
- Release_x64:
- BuildPlatform: x64
- BuildConfiguration: Release
- Debug_x64:
- BuildPlatform: x64
- BuildConfiguration: Debug
- Release_x86:
- BuildPlatform: x86
- BuildConfiguration: Release
- Debug_x86:
- BuildPlatform: x86
- BuildConfiguration: Debug
- steps:
- - checkout: self
- clean: true
- fetchTags: false
- fetchDepth: 1
- path: 's'
- - checkout: testRepo
- displayName: Fetch Tests
- clean: true
- fetchTags: false
- fetchDepth: 1
- path: 's/Tests'
- - task: NuGetToolInstaller@1
- displayName: 'Use NuGet'
- - task: NuGetAuthenticate@1
- displayName: 'NuGet Auth'
- - task: NuGetCommand@2
- displayName: NuGet restore tests
- inputs:
- solution: Tests/D3D12Test/packages.config
- feedRestore: $(GUID_FEED)
- includeNuGetOrg: false
- packagesDirectory: ../packages
- - task: MSBuild@1
- displayName: Log Information
- inputs:
- solution: build/LogInfo.targets
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- - task: VSBuild@1
- displayName: Build solution DirectXTK_Tests_Desktop_2019_Win10.sln
- inputs:
- solution: Tests/DirectXTK_Tests_Desktop_2019_Win10.sln
- msbuildArgs: /p:PreferredToolArchitecture=x64
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- - task: VSBuild@1
- displayName: Build solution DirectXTK_Tests_Desktop_2019_AgilitySDK.sln
- inputs:
- solution: Tests/DirectXTK_Tests_Desktop_2019_AgilitySDK.sln
- msbuildArgs: /p:PreferredToolArchitecture=x64
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
diff --git a/.azuredevops/pipelines/DirectXTK12-GitHub.yml b/.azuredevops/pipelines/DirectXTK12-GitHub.yml
deleted file mode 100644
index f8f6bea6..00000000
--- a/.azuredevops/pipelines/DirectXTK12-GitHub.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (c) Microsoft Corporation.
-# Licensed under the MIT License.
-#
-# http://go.microsoft.com/fwlink/?LinkID=615561
-
-# Builds the library for Windows Desktop and UWP.
-
-schedules:
- - cron: "5 5 * * *"
- displayName: 'Nightly build'
- branches:
- include:
- - main
-
-# GitHub Actions handles MSBuild for CI/PR
-trigger: none
-pr:
- branches:
- include:
- - main
- paths:
- include:
- - '.azuredevops/pipelines/DirectXTK12-GitHub.yml'
- - Src/Shaders/CompileShaders.cmd
-
-resources:
- repositories:
- - repository: self
- type: git
- ref: refs/heads/main
-
-name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
-
-variables:
- Codeql.Enabled: false
-
-pool:
- vmImage: windows-2022
-
-jobs:
- - job: DESKTOP_BUILD
- displayName: 'Windows Desktop'
- timeoutInMinutes: 120
- cancelTimeoutInMinutes: 1
- strategy:
- maxParallel: 2
- matrix:
- Release_x64:
- BuildPlatform: x64
- BuildConfiguration: Release
- Debug_x64:
- BuildPlatform: x64
- BuildConfiguration: Debug
- Release_x86:
- BuildPlatform: x86
- BuildConfiguration: Release
- Debug_x86:
- BuildPlatform: x86
- BuildConfiguration: Debug
- steps:
- - checkout: self
- clean: true
- fetchTags: false
- - task: MSBuild@1
- displayName: Log Information
- inputs:
- solution: build/LogInfo.targets
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
- - task: VSBuild@1
- displayName: Build solution DirectXTK_Desktop_2019_Win10.sln
- inputs:
- solution: DirectXTK_Desktop_2019_Win10.sln
- msbuildArgs: /p:PreferredToolArchitecture=x64
- platform: '$(BuildPlatform)'
- configuration: '$(BuildConfiguration)'
diff --git a/.github/linters/actionlint.yml b/.github/linters/actionlint.yml
index 8f70803a..5a720176 100644
--- a/.github/linters/actionlint.yml
+++ b/.github/linters/actionlint.yml
@@ -2,3 +2,4 @@ self-hosted-runner:
# Workaround until linter is updated
labels:
- windows-11-arm
+ - windows-2025-vs2026
diff --git a/.github/workflows/clangcl.yml b/.github/workflows/clangcl.yml
new file mode 100644
index 00000000..1229333b
--- /dev/null
+++ b/.github/workflows/clangcl.yml
@@ -0,0 +1,149 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+#
+# http://go.microsoft.com/fwlink/?LinkID=615561
+
+name: 'CMake (clang-cl)'
+
+on:
+ push:
+ branches: "main"
+ paths-ignore:
+ - '*.md'
+ - LICENSE
+ - '.azuredevops/**'
+ - '.nuget/*'
+ - build/*.cmd
+ - build/*.json
+ - build/*.props
+ - build/*.ps1
+ - build/*.targets
+ - build/*.xvd
+ pull_request:
+ branches: "main"
+ paths-ignore:
+ - '*.md'
+ - LICENSE
+ - '.azuredevops/**'
+ - '.nuget/*'
+ - build/*.cmd
+ - build/*.json
+ - build/*.props
+ - build/*.ps1
+ - build/*.targets
+ - build/*.xvd
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: windows-2022
+
+ strategy:
+ fail-fast: false
+
+ matrix:
+ build_type: [x64-Debug-Clang, x64-Release-Clang]
+ arch: [amd64]
+ include:
+ - build_type: x64-Debug-Clang
+ arch: amd64
+ - build_type: x64-Release-Clang
+ arch: amd64
+ - build_type: x86-Debug-Clang
+ arch: amd64_x86
+ - build_type: x86-Release-Clang
+ arch: amd64_x86
+ - build_type: arm64-Debug-Clang
+ arch: amd64_arm64
+ - build_type: arm64-Release-Clang
+ arch: amd64_arm64
+
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+
+ - name: Clone test repository
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ repository: walbourn/directxtk12test
+ path: Tests
+ ref: main
+
+ - name: 'Install Ninja'
+ run: choco install ninja
+
+ - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
+ with:
+ arch: ${{ matrix.arch }}
+
+ - name: 'Configure CMake'
+ working-directory: ${{ github.workspace }}
+ run: cmake --preset=${{ matrix.build_type }} -DBUILD_TESTING=ON
+
+ - name: 'Build'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ - name: 'Clean up'
+ working-directory: ${{ github.workspace }}
+ run: Remove-Item -Path out -Recurse -Force
+
+ - name: 'Configure CMake (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: >
+ cmake --preset=${{ matrix.build_type }} -DBUILD_TESTING=ON
+ -DBUILD_SHARED_LIBS=ON
+
+ - name: 'Build (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ build2026:
+ runs-on: windows-2025-vs2026
+
+ strategy:
+ fail-fast: false
+
+ matrix:
+ build_type: [x64-Debug-Clang, x64-Release-Clang]
+ arch: [amd64]
+ include:
+ - build_type: x86-Debug-Clang
+ arch: amd64_x86
+ - build_type: x86-Release-Clang
+ arch: amd64_x86
+ - build_type: arm64-Debug-Clang
+ arch: amd64_arm64
+ - build_type: arm64-Release-Clang
+ arch: amd64_arm64
+
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+
+ - name: 'Install Ninja'
+ run: choco install ninja
+
+ - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
+ with:
+ arch: ${{ matrix.arch }}
+
+ - name: 'Configure CMake'
+ working-directory: ${{ github.workspace }}
+ run: cmake --preset=${{ matrix.build_type }}
+
+ - name: 'Build'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ - name: 'Clean up'
+ working-directory: ${{ github.workspace }}
+ run: Remove-Item -Path out -Recurse -Force
+
+ - name: 'Configure CMake (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --preset=${{ matrix.build_type }} -DBUILD_SHARED_LIBS=ON
+
+ - name: 'Build (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 4f39d7a4..ddecb47e 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -72,27 +72,74 @@ jobs:
- toolver: '14'
build_type: arm64ec-Release
arch: amd64_arm64
- - toolver: '14'
- build_type: x64-Debug-Clang
- arch: amd64
- - toolver: '14'
- build_type: x64-Release-Clang
- arch: amd64
- - toolver: '14'
- build_type: x86-Debug-Clang
+
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+
+ - name: 'Install Ninja'
+ run: choco install ninja
+
+ - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
+ with:
+ arch: ${{ matrix.arch }}
+ toolset: ${{ matrix.toolver }}
+
+ - name: 'Configure CMake'
+ working-directory: ${{ github.workspace }}
+ run: cmake --preset=${{ matrix.build_type }}
+
+ - name: 'Build'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ - name: 'Clean up'
+ working-directory: ${{ github.workspace }}
+ run: Remove-Item -Path out -Recurse -Force
+
+ - if: matrix.arch != 'amd64_arm64'
+ name: 'Configure CMake (Spectre)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --preset=${{ matrix.build_type }} -DENABLE_SPECTRE_MITIGATION=ON
+
+ - if: matrix.arch != 'amd64_arm64'
+ name: 'Build (Spectre)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ - if: matrix.arch != 'amd64_arm64'
+ name: 'Clean up'
+ working-directory: ${{ github.workspace }}
+ run: Remove-Item -Path out -Recurse -Force
+
+ - name: 'Configure CMake (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --preset=${{ matrix.build_type }} -DBUILD_SHARED_LIBS=ON
+
+ - name: 'Build (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ build2026:
+ runs-on: windows-2025-vs2026
+
+ strategy:
+ fail-fast: false
+
+ matrix:
+ build_type: [x64-Debug, x64-Release]
+ arch: [amd64]
+ include:
+ - build_type: x86-Debug
arch: amd64_x86
- - toolver: '14'
- build_type: x86-Release-Clang
+ - build_type: x86-Release
arch: amd64_x86
- - toolver: '14'
- build_type: arm64-Debug-Clang
+ - build_type: arm64-Debug
arch: amd64_arm64
- - toolver: '14'
- build_type: arm64-Release-Clang
+ - build_type: arm64-Release
arch: amd64_arm64
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: 'Install Ninja'
run: choco install ninja
@@ -100,7 +147,6 @@ jobs:
- uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
with:
arch: ${{ matrix.arch }}
- toolset: ${{ matrix.toolver }}
- name: 'Configure CMake'
working-directory: ${{ github.workspace }}
diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml
index 4e526b35..eacc0736 100644
--- a/.github/workflows/msbuild.yml
+++ b/.github/workflows/msbuild.yml
@@ -42,7 +42,7 @@ jobs:
platform: ARM64
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
@@ -67,3 +67,25 @@ jobs:
msbuild /m /p:Configuration=${{ matrix.build_type }} /p:Platform=${{ matrix.platform }}
/p:SpectreMitigation=Spectre
DirectXTK_Desktop_${{ matrix.vs }}_Win10.sln
+
+ build2026:
+ runs-on: windows-2025-vs2026
+
+ strategy:
+ fail-fast: false
+
+ matrix:
+ build_type: [Debug, Release]
+ platform: [x86, x64, ARM64]
+
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+
+ - name: Add MSBuild to PATH
+ uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
+
+ - name: 'Build'
+ working-directory: ${{ github.workspace }}
+ run: >
+ msbuild /m /p:Configuration=${{ matrix.build_type }} /p:Platform=${{ matrix.platform }}
+ DirectXTK_Desktop_2026.slnx
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 52c250b7..4a90a871 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -61,18 +61,6 @@ jobs:
- toolver: '14'
build_type: x86-Release
arch: amd64_x86
- - toolver: '14'
- build_type: x64-Debug-Clang
- arch: amd64
- - toolver: '14'
- build_type: x64-Release-Clang
- arch: amd64
- - toolver: '14'
- build_type: x86-Debug-Clang
- arch: amd64_x86
- - toolver: '14'
- build_type: x86-Release-Clang
- arch: amd64_x86
- toolver: '14'
build_type: arm64-Debug
arch: amd64_arm64
@@ -87,10 +75,10 @@ jobs:
arch: amd64_arm64
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Clone test repository
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: walbourn/directxtk12test
path: Tests
@@ -131,3 +119,73 @@ jobs:
- name: 'Build (DLL)'
working-directory: ${{ github.workspace }}
run: cmake --build out\build\${{ matrix.build_type }}
+
+ build2026:
+ runs-on: windows-2025-vs2026
+ timeout-minutes: 20
+
+ strategy:
+ fail-fast: false
+
+ matrix:
+ build_type: [x64-Debug, x64-Release]
+ arch: [amd64]
+ include:
+ - build_type: x86-Debug
+ arch: amd64_x86
+ - build_type: x86-Release
+ arch: amd64_x86
+ - build_type: x86-Debug
+ arch: amd64_x86
+ - build_type: x86-Release
+ arch: amd64_x86
+ - build_type: arm64-Debug
+ arch: amd64_arm64
+ - build_type: arm64-Release
+ arch: amd64_arm64
+
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+
+ - name: Clone test repository
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ repository: walbourn/directxtk12test
+ path: Tests
+ ref: main
+
+ - name: 'Install Ninja'
+ run: choco install ninja
+
+ - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
+ with:
+ arch: ${{ matrix.arch }}
+
+ - name: 'Configure CMake'
+ working-directory: ${{ github.workspace }}
+ run: >
+ cmake --preset=${{ matrix.build_type }} -DBUILD_TESTING=ON
+
+ - name: 'Build'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
+
+ - if: (matrix.build_type == 'x64-Release') || (matrix.build_type == 'x86-Release')
+ timeout-minutes: 10
+ name: 'Test (Math only)'
+ working-directory: ${{ github.workspace }}
+ run: ctest --preset=${{ matrix.build_type }} -L Math
+
+ - name: 'Clean up'
+ working-directory: ${{ github.workspace }}
+ run: Remove-Item -Path out -Recurse -Force
+
+ - name: 'Configure CMake (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: >
+ cmake --preset=${{ matrix.build_type }} -DBUILD_TESTING=ON
+ -DBUILD_SHARED_LIBS=ON
+
+ - name: 'Build (DLL)'
+ working-directory: ${{ github.workspace }}
+ run: cmake --build out\build\${{ matrix.build_type }}
diff --git a/DirectXTK_Desktop_2026.slnx b/DirectXTK_Desktop_2026.slnx
new file mode 100644
index 00000000..2bd6738b
--- /dev/null
+++ b/DirectXTK_Desktop_2026.slnx
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/DirectXTK_Desktop_2026.vcxproj b/DirectXTK_Desktop_2026.vcxproj
new file mode 100644
index 00000000..5180a3cf
--- /dev/null
+++ b/DirectXTK_Desktop_2026.vcxproj
@@ -0,0 +1,489 @@
+
+
+
+
+ Debug
+ ARM64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ ARM64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Document
+
+
+
+
+ Document
+
+
+ Document
+
+
+ Document
+
+
+ Document
+
+
+
+
+ Document
+
+
+
+
+ Document
+
+
+
+
+ Document
+
+
+ Document
+
+
+
+
+ Document
+
+
+
+
+ Document
+
+
+
+ {3E0E8608-CD9B-4C76-AF33-29CA38F2C9F0}
+ Win32Proj
+ DirectXTK12
+ DirectXTK12
+ 10.0
+ x64
+
+
+
+ StaticLibrary
+ true
+ v145
+ Unicode
+
+
+ StaticLibrary
+ true
+ v145
+ Unicode
+
+
+ StaticLibrary
+ true
+ v145
+ Unicode
+
+
+ StaticLibrary
+ false
+ v145
+ Unicode
+
+
+ StaticLibrary
+ false
+ v145
+ Unicode
+
+
+ StaticLibrary
+ false
+ v145
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ DirectXTK12
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ DirectXTK12
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ DirectXTK12
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ DirectXTK12
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ DirectXTK12
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)\
+ DirectXTK12
+
+
+ Bin\Desktop_2026\$(Platform)\$(Configuration)Spectre\
+ Bin\Desktop_2026\$(Platform)\$(Configuration)Spectre\
+ DirectXTK12_Spectre
+
+
+
+ Use
+ EnableAllWarnings
+ Disabled
+ _WIN32_WINNT=0x0A00;WIN32;_DEBUG;_LIB;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)
+ pch.h
+ $(ProjectDir)Inc;$(ProjectDir)Src;$(ProjectDir)Src\Shaders\Compiled;%(AdditionalIncludeDirectories)
+ Fast
+ $(IntDir)$(TargetName).pdb
+ true
+ true
+ /Zc:__cplusplus %(AdditionalOptions)
+ ProgramDatabase
+ false
+ Level4
+
+
+ 6.0
+ true
+ /Fd "$(OutDir)%(Filename).pdb" %(AdditionalOptions)
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ EnableAllWarnings
+ Disabled
+ _WIN32_WINNT=0x0A00;WIN32;_DEBUG;_LIB;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)
+ pch.h
+ $(ProjectDir)Inc;$(ProjectDir)Src;$(ProjectDir)Src\Shaders\Compiled;%(AdditionalIncludeDirectories)
+ Fast
+ $(IntDir)$(TargetName).pdb
+ true
+ true
+ /Zc:__cplusplus %(AdditionalOptions)
+ ProgramDatabase
+ false
+ Level4
+
+
+ 6.0
+ true
+ /Fd "$(OutDir)%(Filename).pdb" %(AdditionalOptions)
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ EnableAllWarnings
+ Disabled
+ _WIN32_WINNT=0x0A00;WIN32;_DEBUG;_LIB;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)
+ pch.h
+ $(ProjectDir)Inc;$(ProjectDir)Src;$(ProjectDir)Src\Shaders\Compiled;%(AdditionalIncludeDirectories)
+ Fast
+ StreamingSIMDExtensions2
+ $(IntDir)$(TargetName).pdb
+ true
+ true
+ /Zc:__cplusplus %(AdditionalOptions)
+ ProgramDatabase
+ false
+ Level4
+
+
+ 6.0
+ true
+ /Fd "$(OutDir)%(Filename).pdb" %(AdditionalOptions)
+
+
+ Windows
+ true
+
+
+
+
+ EnableAllWarnings
+ Use
+ MaxSpeed
+ _WIN32_WINNT=0x0A00;WIN32;NDEBUG;_LIB;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)
+ pch.h
+ $(ProjectDir)Inc;$(ProjectDir)Src;$(ProjectDir)Src\Shaders\Compiled;%(AdditionalIncludeDirectories)
+ Fast
+ $(IntDir)$(TargetName).pdb
+ true
+ true
+ /Zc:__cplusplus %(AdditionalOptions)
+ Level4
+ true
+
+
+ 6.0
+ true
+ /Fd "$(OutDir)%(Filename).pdb" %(AdditionalOptions)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ EnableAllWarnings
+ Use
+ MaxSpeed
+ _WIN32_WINNT=0x0A00;WIN32;NDEBUG;_LIB;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)
+ pch.h
+ $(ProjectDir)Inc;$(ProjectDir)Src;$(ProjectDir)Src\Shaders\Compiled;%(AdditionalIncludeDirectories)
+ Fast
+ $(IntDir)$(TargetName).pdb
+ true
+ true
+ /Zc:__cplusplus %(AdditionalOptions)
+ Level4
+ true
+
+
+ 6.0
+ true
+ /Fd "$(OutDir)%(Filename).pdb" %(AdditionalOptions)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ EnableAllWarnings
+ Use
+ MaxSpeed
+ _WIN32_WINNT=0x0A00;WIN32;NDEBUG;_LIB;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)
+ pch.h
+ $(ProjectDir)Inc;$(ProjectDir)Src;$(ProjectDir)Src\Shaders\Compiled;%(AdditionalIncludeDirectories)
+ Fast
+ StreamingSIMDExtensions2
+ $(IntDir)$(TargetName).pdb
+ true
+ true
+ /Zc:__cplusplus %(AdditionalOptions)
+ Level4
+
+
+ 6.0
+ true
+ /Fd "$(OutDir)%(Filename).pdb" %(AdditionalOptions)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
+
+ <_ATGFXCPath>$(WindowsSDK_ExecutablePath_x64.Split(';')[0])
+ <_ATGFXCPath>$(_ATGFXCPath.Replace("x64",""))
+ <_ATGFXCPath Condition="'$(_ATGFXCPath)' != '' and !HasTrailingSlash('$(_ATGFXCPath)')">$(_ATGFXCPath)\
+ <_ATGFXCVer>$([System.Text.RegularExpressions.Regex]::Match($(_ATGFXCPath), `10\.0\.\d+\.0`))
+ <_ATGFXCVer Condition="'$(_ATGFXCVer)' != '' and !HasTrailingSlash('$(_ATGFXCVer)')">$(_ATGFXCVer)\
+
+
+
+ <_ATGFXCPath />
+ <_ATGFXCVer />
+
+
+
+
+ <_ATGShaderHeaders Include="$(ProjectDir)Src/Shaders/Compiled/*.inc" Exclude="$(ProjectDir)Src/Shaders/Compiled/*Xbox*.inc" />
+ <_ATGShaderSymbols Include="$(ProjectDir)Src/Shaders/Compiled/*.pdb" Exclude="$(ProjectDir)Src/Shaders/Compiled/*Xbox*.pdb" />
+
+
+
+
+
\ No newline at end of file
diff --git a/DirectXTK_Desktop_2026.vcxproj.filters b/DirectXTK_Desktop_2026.vcxproj.filters
new file mode 100644
index 00000000..1ec33539
--- /dev/null
+++ b/DirectXTK_Desktop_2026.vcxproj.filters
@@ -0,0 +1,384 @@
+
+
+
+
+ {771f5f80-d173-49c3-8afb-790e8f7cb0ce}
+
+
+ {c52e19b6-8703-49a1-9b36-101a05b4745d}
+
+
+ {28d5fa16-99e2-471c-8cd8-2020e81f0024}
+
+
+ {16e1c974-4e01-4cff-948c-076e9914e033}
+
+
+ {5c972584-03dd-4b7d-9026-0e53ac731582}
+
+
+ {95983e6d-a96c-4fb5-b014-8e0527c1d68b}
+
+
+ {bb6c909b-3081-409a-a30f-5129414801ce}
+
+
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Src
+
+
+ Inc
+
+
+ Src
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Src
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Src
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Inc\Shared
+
+
+ Inc\Shared
+
+
+ Inc\Shared
+
+
+ Inc\Shared
+
+
+ Inc\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Inc
+
+
+ Src\Shared
+
+
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Audio
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src\Shared
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Src
+
+
+ Audio
+
+
+ Src
+
+
+ Src
+
+
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shared
+
+
+ Src\Shaders\Shared
+
+
+ Src\Shaders\Shared
+
+
+ Src\Shaders\Shared
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+ Src\Shaders\Shared
+
+
+ Src\Shaders
+
+
+ Src\Shaders\Shared
+
+
+ Src\Shaders\Shared
+
+
+ Src\Shaders
+
+
+ Src\Shaders
+
+
+
+ Src\Shaders\Shared
+
+
+
\ No newline at end of file
diff --git a/build/CompilerAndLinker.cmake b/build/CompilerAndLinker.cmake
index c2220f53..72ff2a91 100644
--- a/build/CompilerAndLinker.cmake
+++ b/build/CompilerAndLinker.cmake
@@ -205,6 +205,10 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
list(APPEND COMPILER_SWITCHES $<$:/Zc:templateScope>)
endif()
endif()
+
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.50)
+ list(APPEND COMPILER_SWITCHES /Zc:u8EscapeEncoding)
+ endif()
endif()
#--- Windows API Family
diff --git a/build/promotenuget.ps1 b/build/promotenuget.ps1
index ce067ba2..294a9be2 100644
--- a/build/promotenuget.ps1
+++ b/build/promotenuget.ps1
@@ -33,7 +33,7 @@ param(
# Parse PAT
if ($PAT.Length -eq 0) {
- $PAT = $env:ADO_PERSONAL_ACCESS_TOKEN
+ $PAT = [string]$env:ADO_PERSONAL_ACCESS_TOKEN
if ($PAT.Length -eq 0) {
Write-Error "##[error]This script requires a valid ADO Personal Access Token!" -ErrorAction Stop