Roll build folder
This patch rolls the `build/` folder and other third-party folders
to match their revisions to the ones used by the latest Chromium in
order to use the latest Windows 11 SDK 26100.
Fixed: chromium:374852565
Change-Id: I16185ff539e113c1c4bafcc04932d59769bbff48
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/211954
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/.gitmodules b/.gitmodules
index a52398c..7484713 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -18,6 +18,10 @@
path = third_party/libc++abi/src
url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi
gclient-condition = dawn_standalone
+[submodule "third_party/libdrm/src"]
+ path = third_party/libdrm/src
+ url = https://chromium.googlesource.com/chromiumos/third_party/libdrm
+ gclient-condition = dawn_standalone and host_os == "linux"
[submodule "build"]
path = build
url = https://chromium.googlesource.com/chromium/src/build
diff --git a/DEPS b/DEPS
index 83c75d3..88a0903 100644
--- a/DEPS
+++ b/DEPS
@@ -117,19 +117,25 @@
'condition': 'dawn_standalone',
},
+ # Required by //build on Linux
+ 'third_party/libdrm/src': {
+ 'url': '{chromium_git}/chromiumos/third_party/libdrm.git@ad78bb591d02162d3b90890aa4d0a238b2a37cde',
+ 'condition': 'dawn_standalone and host_os == "linux"',
+ },
+
# Dependencies required to use GN, Clang, and Rust in standalone.
# The //build, //tools/clang, and //tools/rust deps should all be updated
# in unison, as there are dependencies between them.
'build': {
- 'url': '{chromium_git}/chromium/src/build@a6c1c751fd8c18d9e051b12600aec2753c1712c3',
+ 'url': '{chromium_git}/chromium/src/build@9d5c32282de17517d92763af2d11dbeb1f6539aa',
'condition': 'dawn_standalone',
},
'tools/clang': {
- 'url': '{chromium_git}/chromium/src/tools/clang@06a29b5bbf392c68d73dc8df9015163cc5a98c40',
+ 'url': '{chromium_git}/chromium/src/tools/clang@53554bf3da41153f2e01f9ff234c194c156b7a93',
'condition': 'dawn_standalone',
},
'tools/rust': {
- 'url': '{chromium_git}/chromium/src/tools/rust@a69a8ecdbf7a19fb129ae57650cac9f704cb7cf9',
+ 'url': '{chromium_git}/chromium/src/tools/rust@ed0fe5c0e067bd64ab43eb7457e71680a81bd8e3',
'condition': 'dawn_standalone and checkout_rust',
},
'tools/clang/dsymutil': {
@@ -243,7 +249,7 @@
'condition': 'dawn_standalone',
},
'third_party/google_benchmark/src': {
- 'url': '{chromium_git}/external/github.com/google/benchmark.git' + '@' + 'efc89f0b524780b1994d5dddd83a92718e5be492',
+ 'url': '{chromium_git}/external/github.com/google/benchmark.git' + '@' + '761305ec3b33abf30e08d50eb829e19a802581cc',
'condition': 'dawn_standalone',
},
diff --git a/build b/build
index a6c1c75..9d5c322 160000
--- a/build
+++ b/build
@@ -1 +1 @@
-Subproject commit a6c1c751fd8c18d9e051b12600aec2753c1712c3
+Subproject commit 9d5c32282de17517d92763af2d11dbeb1f6539aa
diff --git a/generator/templates/api_cpp.h b/generator/templates/api_cpp.h
index 61fed4f..d7fc632 100644
--- a/generator/templates/api_cpp.h
+++ b/generator/templates/api_cpp.h
@@ -189,11 +189,11 @@
}
// Comparison functions.
- bool operator==({{OptionalBoolCType}} rhs) const {
- return mValue == rhs;
+ friend bool operator==(const {{OptionalBoolCppType}}& lhs, const {{OptionalBoolCppType}}& rhs) {
+ return lhs.mValue == rhs.mValue;
}
- bool operator!=({{OptionalBoolCType}} rhs) const {
- return mValue != rhs;
+ friend bool operator!=(const {{OptionalBoolCppType}}& lhs, const {{OptionalBoolCppType}}& rhs) {
+ return lhs.mValue != rhs.mValue;
}
private:
diff --git a/src/dawn/node/interop/Core.h b/src/dawn/node/interop/Core.h
index 438ffcd..eb07517 100644
--- a/src/dawn/node/interop/Core.h
+++ b/src/dawn/node/interop/Core.h
@@ -215,8 +215,10 @@
inline operator Napi::Promise() const { return state_->deferred.Promise(); }
// Comparison operator between promises
- bool operator==(const PromiseBase& other) { return state_ == other.state_; }
- bool operator!=(const PromiseBase& other) { return !(*this == other); }
+ friend bool operator==(const PromiseBase& lhs, const PromiseBase& rhs) {
+ return lhs.state_ == rhs.state_;
+ }
+ friend bool operator!=(const PromiseBase& lhs, const PromiseBase& rhs) { return !(lhs == rhs); }
// Reject() rejects the promise with the given failure value.
void Reject(Napi::Value value) const {
diff --git a/src/tint/lang/spirv/reader/ast_lower/atomics.cc b/src/tint/lang/spirv/reader/ast_lower/atomics.cc
index ea2b778..54588d6 100644
--- a/src/tint/lang/spirv/reader/ast_lower/atomics.cc
+++ b/src/tint/lang/spirv/reader/ast_lower/atomics.cc
@@ -262,7 +262,7 @@
for (auto* node : ctx.src->ASTNodes().Objects()) {
if (auto* load = ctx.src->Sem().Get<sem::Load>(node)) {
if (is_ref_to_atomic_var(load->Source())) {
- ctx.Replace(load->Source()->Declaration(), [=] {
+ ctx.Replace(load->Source()->Declaration(), [load, this] {
auto* expr = ctx.CloneWithoutTransform(load->Source()->Declaration());
return b.Call(wgsl::BuiltinFn::kAtomicLoad, b.AddressOf(expr));
});
@@ -270,7 +270,7 @@
} else if (auto* assign = node->As<ast::AssignmentStatement>()) {
auto* sem_lhs = ctx.src->Sem().GetVal(assign->lhs);
if (is_ref_to_atomic_var(sem_lhs)) {
- ctx.Replace(assign, [=] {
+ ctx.Replace(assign, [assign, this] {
auto* lhs = ctx.CloneWithoutTransform(assign->lhs);
auto* rhs = ctx.CloneWithoutTransform(assign->rhs);
auto* call = b.Call(wgsl::BuiltinFn::kAtomicStore, b.AddressOf(lhs), rhs);
diff --git a/src/tint/lang/spirv/reader/ast_parser/function.cc b/src/tint/lang/spirv/reader/ast_parser/function.cc
index 6ce6314..475e339 100644
--- a/src/tint/lang/spirv/reader/ast_parser/function.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/function.cc
@@ -886,7 +886,7 @@
auto* cond = builder_.Expr(Source{}, guard_name);
auto* builder = AddStatementBuilder<IfStatementBuilder>(cond);
- PushNewStatementBlock(top.GetConstruct(), end_id, [=](const StatementList& stmts) {
+ PushNewStatementBlock(top.GetConstruct(), end_id, [builder, this](const StatementList& stmts) {
builder->body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
});
}
@@ -898,7 +898,7 @@
auto* cond = MakeTrue(Source{});
auto* builder = AddStatementBuilder<IfStatementBuilder>(cond);
- PushNewStatementBlock(top.GetConstruct(), end_id, [=](const StatementList& stmts) {
+ PushNewStatementBlock(top.GetConstruct(), end_id, [builder, this](const StatementList& stmts) {
builder->body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
});
}
@@ -2927,7 +2927,7 @@
// But make sure we do it in the right order.
auto push_else = [this, builder, else_end, construct, false_is_break, false_is_continue] {
// Push the else clause onto the stack first.
- PushNewStatementBlock(construct, else_end, [=](const StatementList& stmts) {
+ PushNewStatementBlock(construct, else_end, [builder, this](const StatementList& stmts) {
// Only set the else-clause if there are statements to fill it.
if (!stmts.IsEmpty()) {
// The "else" consists of the statement list from the top of
@@ -2978,7 +2978,7 @@
}
// Push the then clause onto the stack.
- PushNewStatementBlock(construct, then_end, [=](const StatementList& stmts) {
+ PushNewStatementBlock(construct, then_end, [builder, this](const StatementList& stmts) {
builder->body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
});
if (true_is_break) {
@@ -3091,10 +3091,11 @@
// for the case, and fill the case clause once the block is generated.
auto case_idx = swch->cases.Length();
swch->cases.Push(nullptr);
- PushNewStatementBlock(construct, end_id, [=](const StatementList& stmts) {
- auto* body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
- swch->cases[case_idx] = create<ast::CaseStatement>(Source{}, selectors, body);
- });
+ PushNewStatementBlock(
+ construct, end_id, [swch, case_idx, selectors, this](const StatementList& stmts) {
+ auto* body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
+ swch->cases[case_idx] = create<ast::CaseStatement>(Source{}, selectors, body);
+ });
if (i == 0) {
break;
@@ -3106,9 +3107,10 @@
bool FunctionEmitter::EmitLoopStart(const Construct* construct) {
auto* builder = AddStatementBuilder<LoopStatementBuilder>();
- PushNewStatementBlock(construct, construct->end_id, [=](const StatementList& stmts) {
- builder->body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
- });
+ PushNewStatementBlock(
+ construct, construct->end_id, [builder, this](const StatementList& stmts) {
+ builder->body = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
+ });
return success();
}
@@ -3121,7 +3123,7 @@
return Fail() << "internal error: starting continue construct, "
"expected loop on top of stack";
}
- PushNewStatementBlock(construct, construct->end_id, [=](const StatementList& stmts) {
+ PushNewStatementBlock(construct, construct->end_id, [loop, this](const StatementList& stmts) {
loop->continuing = create<ast::BlockStatement>(Source{}, stmts, tint::Empty);
});
diff --git a/third_party/google_benchmark/BUILD.gn b/third_party/google_benchmark/BUILD.gn
index 779cf2a..00f9282 100644
--- a/third_party/google_benchmark/BUILD.gn
+++ b/third_party/google_benchmark/BUILD.gn
@@ -2,8 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import("//build_overrides/build.gni")
-
config("benchmark_config") {
include_dirs = [ "src/include" ]
@@ -64,10 +62,8 @@
all_dependent_configs = [ ":benchmark_config" ]
- if (build_with_chromium) {
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ "//build/config/compiler:no_chromium_code" ]
- }
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
if (is_win) {
configs -= [ "//build/config/win:nominmax" ]
@@ -77,9 +73,10 @@
"benchmark_EXPORTS=1",
# Tell gtest to always use standard regular expressions.
- "HAVE_GNU_POSIX_REGEX=0",
- "HAVE_POSIX_REGEX=0",
"HAVE_STD_REGEX=1",
+
+ # google_benchmark expects a BENCHMARK_VERSION definition
+ "BENCHMARK_VERSION=\"1.9.0\"",
]
}
diff --git a/third_party/google_benchmark/src b/third_party/google_benchmark/src
index efc89f0..761305e 160000
--- a/third_party/google_benchmark/src
+++ b/third_party/google_benchmark/src
@@ -1 +1 @@
-Subproject commit efc89f0b524780b1994d5dddd83a92718e5be492
+Subproject commit 761305ec3b33abf30e08d50eb829e19a802581cc
diff --git a/third_party/libdrm/BUILD.gn b/third_party/libdrm/BUILD.gn
new file mode 100644
index 0000000..f3a486d
--- /dev/null
+++ b/third_party/libdrm/BUILD.gn
@@ -0,0 +1,109 @@
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+assert(is_linux || is_chromeos)
+
+generated_static_table_fourcc_file =
+ "$target_gen_dir/src/generated_static_table_fourcc.h"
+fourcc_file = "src/include/drm/drm_fourcc.h"
+
+action("make_generated_static_table_fourcc") {
+ script = "src/gen_table_fourcc.py"
+ args = [
+ rebase_path(fourcc_file, root_build_dir),
+ rebase_path(generated_static_table_fourcc_file),
+ ]
+ outputs = [ generated_static_table_fourcc_file ]
+ inputs = [ fourcc_file ]
+}
+
+config("libdrm_config") {
+ # TODO(thomasanderson): Remove this hack once
+ # https://patchwork.kernel.org/patch/10545295/ lands.
+ defines = [ "typeof(x)=__typeof__(x)" ]
+
+ include_dirs = [
+ "src",
+ "src/include",
+ "src/include/drm",
+ ]
+
+ # libdrm uses macros defined by <sys/types.h> which are being moved to
+ # <sys/sysmacros.h>. GLIBC headers give a pragma warning in this case.
+ # Suppress this warning for now. This may be removed once
+ # https://patchwork.kernel.org/patch/9628231/ lands.
+ cflags = [ "-Wno-#pragma-messages" ]
+
+ # glibc version >= 2.25 explicitly include <sys/sysmacros.h>
+ cflags += [ "-DMAJOR_IN_SYSMACROS=1" ]
+
+ # TODO(b/357680612): unused function 'swap32'.
+ cflags += [ "-Wno-unused-function" ]
+
+ if (is_clang) {
+ cflags += [
+ "-Wno-enum-conversion",
+
+ # TODO(crbug.com/932060) fix unused result from asprintf in modetest.c.
+ "-Wno-unused-result",
+
+ # modetest.c has an improper conversion in a printf statement.
+ "-Wno-format",
+ ]
+ }
+}
+
+static_library("libdrm") {
+ sources = [
+ "src/xf86drm.c",
+ "src/xf86drmHash.c",
+ "src/xf86drmMode.c",
+ "src/xf86drmRandom.c",
+ ]
+
+ deps = [ ":make_generated_static_table_fourcc" ]
+
+ include_dirs = [
+ get_path_info(generated_static_table_fourcc_file, "dir"),
+ "src",
+ "src/include",
+ ]
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ cflags = [
+ # xf86drm.c uses readdir_r, which has been deprecated as of
+ # glibc-2.24. This causes a build error when using the Debian
+ # Stretch sysroot.
+ "-Wno-deprecated-declarations",
+ ]
+
+ public_configs = [ ":libdrm_config" ]
+}
+
+executable("modetest") {
+ sources = [
+ "src/tests/modetest/buffers.c",
+ "src/tests/modetest/buffers.h",
+ "src/tests/modetest/cursor.c",
+ "src/tests/modetest/cursor.h",
+ "src/tests/modetest/modetest.c",
+ "src/tests/util/common.h",
+ "src/tests/util/format.c",
+ "src/tests/util/format.h",
+ "src/tests/util/kms.c",
+ "src/tests/util/kms.h",
+ "src/tests/util/pattern.c",
+ "src/tests/util/pattern.h",
+ ]
+
+ include_dirs = [
+ "src/tests",
+ "src/tests/modetest",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ configs += [ ":libdrm_config" ]
+
+ deps = [ ":libdrm" ]
+}
diff --git a/third_party/libdrm/README.chromium b/third_party/libdrm/README.chromium
new file mode 100644
index 0000000..e87b10e
--- /dev/null
+++ b/third_party/libdrm/README.chromium
@@ -0,0 +1,13 @@
+Name: libdrm
+Short Name: libdrm
+URL: https://chromium.googlesource.com/chromiumos/third_party/libdrm
+Version: 2.4.122
+License: MIT
+Security Critical: yes
+Shipped: no
+
+Description:
+Userspace interface to kernel DRM services.
+
+Local Modifications:
+None
diff --git a/third_party/libdrm/src b/third_party/libdrm/src
new file mode 160000
index 0000000..ad78bb5
--- /dev/null
+++ b/third_party/libdrm/src
@@ -0,0 +1 @@
+Subproject commit ad78bb591d02162d3b90890aa4d0a238b2a37cde
diff --git a/tools/clang b/tools/clang
index 06a29b5..53554bf 160000
--- a/tools/clang
+++ b/tools/clang
@@ -1 +1 @@
-Subproject commit 06a29b5bbf392c68d73dc8df9015163cc5a98c40
+Subproject commit 53554bf3da41153f2e01f9ff234c194c156b7a93
diff --git a/tools/rust b/tools/rust
index a69a8ec..ed0fe5c 160000
--- a/tools/rust
+++ b/tools/rust
@@ -1 +1 @@
-Subproject commit a69a8ecdbf7a19fb129ae57650cac9f704cb7cf9
+Subproject commit ed0fe5c0e067bd64ab43eb7457e71680a81bd8e3