0

Update Supported Windows SDK to 10.0.26100.3323

The floor bug (https://crbug.com/374162585) which blocked the previous roll has been addressed, so we're trying to update the SDK again.

Code changes are essentially the same as the previous update attempt
(https://crrev.com/c/5898835). Some minor changes to gate new SDK features behind a #define while we transition, and some regenerated image baselines to support the new 3D emojis. Note that updating mc.exe and midl.exe outputs produced no changes.

Pleasantly, the linking change to d3dcompiler_47.dll has been undone, so we no longer need to patch in an older version. This means the update is about as straightforward as it gets.

-----------------------------------------------------------------
Instructions to reproduce:

These instructions are best done on a fresh VM. Make sure to uninstall any existing installations of Visual Studio and any existing SDK installations before starting.

1. Install git for windows from their website, with the default settings (https://git-scm.com/downloads/win)
2. Install depot_tools following the instructions on their webpage (https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up)
3. Run:
$ git config --global depot-tools.allowGlobalGitConfig true
4. Download Visual Studio Professional (Free Trial) from the official site (https://visualstudio.microsoft.com/downloads/)
5. Run the VS installer with the following arguments:
```
$ VisualStudioSetup.exe --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 --includeRecommended --passive
```
6. Open the VS installer (from the start menu), click “Modify”, and uninstall any existing SDK versions (search for “windows sdk”).
7. Open “Add or Remove Programs” and make sure there are no SDK versions installed; remove them if so (search for “windows software development kit”).
8. Download SDK Version 10.0.26100.3323 from the official site (https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/)
9. Run the SDK installer with default settings, except disable “insights”.
10. Run the packaging script from depot_tools, e.g
$ python3 depot_tools\win_toolchain\package_from_installed.py 2022 -w 10.0.26100.0

Link to packaging script version used for packaging: https://source.chromium.org/chromium/chromium/tools/depot_tools/+/main:win_toolchain/package_from_installed.py;drc=371aa997c04791d21e222ed43a1a0d55b450dd53

This resulted in the final package with hash 076960eda6.


Bug: 362650376
Change-Id: Ib6cb299ab20cfca1e72f34728e6ea165ab057d05
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6252774
Reviewed-by: Keren Zhu <kerenzhu@chromium.org>
Reviewed-by: Dominic Farolino <dom@chromium.org>
Reviewed-by: Zequan Wu <zequanwu@google.com>
Commit-Queue: Devon Loehr <dloehr@google.com>
Reviewed-by: Giovanni Ortuno Urquidi <ortuno@chromium.org>
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1435503}
This commit is contained in:
Devon Loehr
2025-03-20 09:54:01 -07:00
committed by Chromium LUCI CQ
parent b3fe2feb9c
commit fca8e8720f
24 changed files with 56 additions and 24 deletions

@ -289,7 +289,7 @@ config("runtime_library") {
# manually override this config for their compiles.
config("winver") {
defines = [
"NTDDI_VERSION=NTDDI_WIN10_NI",
"NTDDI_VERSION=NTDDI_WIN11_GE",
# We can't say `=_WIN32_WINNT_WIN10` here because some files do
# `#if WINVER < 0x0600` without including windows.h before,

@ -22,7 +22,7 @@ sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
import gn_helpers
SCRIPT_DIR = os.path.dirname(__file__)
SDK_VERSION = '10.0.22621.0'
SDK_VERSION = '10.0.26100.0'
def _ExtractImportantEnvironment(output_of_set):

@ -17,7 +17,7 @@ import sys
from gn_helpers import ToGNString
# VS 2022 17.9.2 with 10.0.22621.2428 SDK with ARM64 libraries and UWP support.
# VS 2022 17.13.4 with 10.0.26100.3323 SDK with ARM64 libraries and UWP support.
# See go/win-toolchain-reference for instructions about how to update the
# toolchain.
#
@ -59,8 +59,8 @@ from gn_helpers import ToGNString
# * docs/windows_build_instructions.md
# Make sure any version numbers in the documentation match the code.
#
TOOLCHAIN_HASH = '7393122652'
SDK_VERSION = '10.0.22621.0'
TOOLCHAIN_HASH = '076960eda6'
SDK_VERSION = '10.0.26100.0'
# Visual Studio versions are listed in descending order of priority.
# The first version is assumed by this script to be the one that is packaged,

@ -52,27 +52,17 @@ $ PATH_TO_INSTALLER.EXE ^
Required
* [Windows 11 SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/)
version 10.0.22621.2428. This can be installed separately or by checking the
version 10.0.26100.3323. This can be installed separately or by checking the
appropriate box in the Visual Studio Installer.
* (Windows 11) SDK Debugging Tools 10.0.22621.755 or higher. This version of the
* (Windows 11) SDK Debugging Tools 10.0.26100.3323 or higher. This version of the
Debugging tools is needed in order to support reading the large-page PDBs that
Chrome uses to allow greater-than 4 GiB PDBs. This can be installed after the
matching Windows SDK version is installed, from: Control Panel -> Programs and
Features -> Windows Software Development Kit [version] -> Change -> Debugging Tools for
Windows. If building on ARM64 Windows then you will need to manually copy the
Debuggers\x64 directory from another machine because it does not get installed
on ARM64 and is needed, whether you are building Chromium for x64 or ARM64 on
ARM64.
WARNING: On sufficiently old versions of Windows (1909 or earlier), dawn (or
related components) may fail with a D3d-related error when using the 26100 SDK.
This is because the d3dcompiler_47.dll file in the new SDK attempts to
dynamically link versions of the Universal C Runtime which are not present by
default on older systems. If you experience these errors, you can either update
the UCRT on your system, or install the 22612 SDK and use the d3dcompiler_47.dll
file included there, which statically links the UCRT.
This problem may also manifest as a DLL failure to load `__CxxFrameHandler4`.
Chrome uses to allow greater-than 4 GiB PDBs. If the current SDK installation
does not include debugging tools, they can be installed at:
Control Panel -> Programs and Features -> Windows Software Development Kit [version]
-> Change -> Debugging Tools for Windows. If building on ARM64 Windows then you
will need to manually copy the Debuggers\x64 directory from another machine because
it does not get installed on ARM64 and is needed, whether you are building Chromium
for x64 or ARM64 on ARM64.
## git installation

@ -6,6 +6,7 @@ module gpu.mojom;
// Corresponds to D3D_FEATURE_LEVEL in <d3dcommon.h>
enum Direct3DFeatureLevel {
k1_0_Generic,
k1_0_Core,
k9_1,
k9_2,

@ -14,6 +14,13 @@ gpu::mojom::Direct3DFeatureLevel
EnumTraits<gpu::mojom::Direct3DFeatureLevel, D3D_FEATURE_LEVEL>::ToMojom(
D3D_FEATURE_LEVEL d3d_feature_level) {
switch (d3d_feature_level) {
// TODO(crbug.com/362650376): This case is valid only for SDK version
// 10.0.26100.0 and up. Include it unconditionally once we start requiring this
// version
#ifdef NTDDI_WIN11_GE
case D3D_FEATURE_LEVEL_1_0_GENERIC:
return gpu::mojom::Direct3DFeatureLevel::k1_0_Generic;
#endif
case D3D_FEATURE_LEVEL_1_0_CORE:
return gpu::mojom::Direct3DFeatureLevel::k1_0_Core;
case D3D_FEATURE_LEVEL_9_1:
@ -45,6 +52,16 @@ bool EnumTraits<gpu::mojom::Direct3DFeatureLevel, D3D_FEATURE_LEVEL>::FromMojom(
gpu::mojom::Direct3DFeatureLevel input,
D3D_FEATURE_LEVEL* out) {
switch (input) {
case gpu::mojom::Direct3DFeatureLevel::k1_0_Generic:
// TODO(crbug.com/362650376): This case is valid only for SDK version
// 10.0.26100.0 and up.
#ifdef NTDDI_WIN11_GE
*out = D3D_FEATURE_LEVEL_1_0_GENERIC;
return true;
#else
// Should be impossible
return false;
#endif
case gpu::mojom::Direct3DFeatureLevel::k1_0_Core:
*out = D3D_FEATURE_LEVEL_1_0_CORE;
return true;

@ -0,0 +1,4 @@
This is a testharness.js-based test.
All subtests passed and are omitted for brevity.
See https://chromium.googlesource.com/chromium/src/+/HEAD/docs/testing/writing_web_tests.md#Text-Test-Baselines for details.
Harness: the test ran to completion.

@ -0,0 +1,4 @@
This is a testharness.js-based test.
All subtests passed and are omitted for brevity.
See https://chromium.googlesource.com/chromium/src/+/HEAD/docs/testing/writing_web_tests.md#Text-Test-Baselines for details.
Harness: the test ran to completion.

Binary file not shown.

Before

(image error) Size: 12 KiB

After

(image error) Size: 13 KiB

@ -0,0 +1,7 @@
This is a testharness.js-based test.
[PRECONDITION_FAILED] Eligibility (BroadcastChannel)
Could have been BFCached but actually wasn't
[PRECONDITION_FAILED] Eligibility (BroadcastChannel closed in the pagehide event)
Could have been BFCached but actually wasn't
Harness: the test ran to completion.

Binary file not shown.

Before

(image error) Size: 5.1 KiB

After

(image error) Size: 8.1 KiB

Binary file not shown.

Before

(image error) Size: 4.1 KiB

After

(image error) Size: 4.4 KiB

Binary file not shown.

Before

(image error) Size: 73 KiB

After

(image error) Size: 68 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

After

(image error) Size: 15 KiB

Binary file not shown.

Before

(image error) Size: 5.8 KiB

After

(image error) Size: 10 KiB

Binary file not shown.

Before

(image error) Size: 68 KiB

After

(image error) Size: 92 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

After

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 15 KiB

After

(image error) Size: 16 KiB

Binary file not shown.

Before

(image error) Size: 115 KiB

After

(image error) Size: 128 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

After

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 28 KiB

After

(image error) Size: 27 KiB

Binary file not shown.

Before

(image error) Size: 56 KiB

After

(image error) Size: 57 KiB

@ -300,6 +300,10 @@ constexpr auto kTouchDownContextResetTimeout = base::Milliseconds(500);
// same location as the cursor.
constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
// TODO(dloehr): As of SDK version 10.0.26100.0, IsWindowArranged is now
// declared in a header file, so we no longer need this version. Remove this
// code once the SDK update is finalized.
#ifndef NTDDI_WIN11_GE
// Returns true if the window is arranged via Snap. For example, the browser
// window is snapped via buttons shown when the mouse is hovered over window
// maximize button.
@ -312,6 +316,7 @@ bool IsWindowArranged(HWND window) {
base::win::GetUser32FunctionPointer("IsWindowArranged"));
return is_window_arranged_func ? is_window_arranged_func(window) : false;
}
#endif // NTDDI_WIN11_GE
} // namespace