Skip to content

Commit 3d05050

Browse files
dj2Dawn LUCI CQ
authored andcommitted
Update SubstituteOverrideHelper to work on IR.
Chanee the SubstituteOverrideHelper to use the IR directly to get the overrides. Instead of setting every value back into the map, only insert the ones we require which are any which don't have an initializer. This removes the inspector method added to get this information. Change-Id: I0e04004d5c9c92925cc41b9b40a9f4355cfd78a1 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/236815 Commit-Queue: dan sinclair <[email protected]> Reviewed-by: Peter McNeeley <[email protected]>
1 parent 924b2d7 commit 3d05050

File tree

14 files changed

+297
-271
lines changed

14 files changed

+297
-271
lines changed

src/tint/cmd/fuzz/ir/as/main.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,12 @@ tint::Result<tint::core::ir::Module> GenerateIrModule(const tint::Program& progr
177177
return tint::Failure{"Unsupported enable used in shader"};
178178
}
179179

180-
auto cfg = tint::fuzz::ir::SubstituteOverridesConfig(program);
181-
182180
auto ir = tint::wgsl::reader::ProgramToLoweredIR(program);
183181
if (ir != tint::Success) {
184182
return ir.Failure();
185183
}
186184

185+
auto cfg = tint::fuzz::ir::SubstituteOverridesConfig(ir.Get());
187186
auto substituteOverridesResult = tint::core::ir::transform::SubstituteOverrides(ir.Get(), cfg);
188187
if (substituteOverridesResult != tint::Success) {
189188
return substituteOverridesResult.Failure();

src/tint/cmd/fuzz/ir/fuzz.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ void Register(const IRFuzzer& fuzzer) {
6969
if (program.AST().Enables().Any(tint::wgsl::reader::IsUnsupportedByIR)) {
7070
return;
7171
}
72-
auto cfg = SubstituteOverridesConfig(program);
7372

7473
auto ir = tint::wgsl::reader::ProgramToLoweredIR(program);
7574
if (ir != Success) {
7675
return;
7776
}
7877

78+
auto cfg = SubstituteOverridesConfig(ir.Get());
7979
auto substituteOverridesResult =
8080
tint::core::ir::transform::SubstituteOverrides(ir.Get(), cfg);
8181
if (substituteOverridesResult != Success) {

src/tint/cmd/fuzz/ir/helpers/BUILD.bazel

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@ cc_library(
5151
"//src/tint/lang/core/ir",
5252
"//src/tint/lang/core/ir/transform",
5353
"//src/tint/lang/core/type",
54-
"//src/tint/lang/wgsl",
55-
"//src/tint/lang/wgsl/ast",
56-
"//src/tint/lang/wgsl/inspector",
57-
"//src/tint/lang/wgsl/program",
58-
"//src/tint/lang/wgsl/sem",
5954
"//src/tint/utils",
6055
"//src/tint/utils/containers",
6156
"//src/tint/utils/diagnostic",
@@ -71,4 +66,35 @@ cc_library(
7166
copts = COPTS,
7267
visibility = ["//visibility:public"],
7368
)
69+
cc_library(
70+
name = "test",
71+
alwayslink = True,
72+
srcs = [
73+
"substitute_overrides_config_test.cc",
74+
],
75+
deps = [
76+
"//src/tint/api/common",
77+
"//src/tint/cmd/fuzz/ir/helpers",
78+
"//src/tint/lang/core",
79+
"//src/tint/lang/core/constant",
80+
"//src/tint/lang/core/intrinsic",
81+
"//src/tint/lang/core/ir",
82+
"//src/tint/lang/core/ir/transform",
83+
"//src/tint/lang/core/type",
84+
"//src/tint/utils",
85+
"//src/tint/utils/containers",
86+
"//src/tint/utils/diagnostic",
87+
"//src/tint/utils/ice",
88+
"//src/tint/utils/macros",
89+
"//src/tint/utils/math",
90+
"//src/tint/utils/memory",
91+
"//src/tint/utils/rtti",
92+
"//src/tint/utils/symbol",
93+
"//src/tint/utils/text",
94+
"@gtest",
95+
"//src/utils",
96+
],
97+
copts = COPTS,
98+
visibility = ["//visibility:public"],
99+
)
74100

src/tint/cmd/fuzz/ir/helpers/BUILD.cmake

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ tint_target_add_dependencies(tint_cmd_fuzz_ir_helpers lib
5050
tint_lang_core_ir
5151
tint_lang_core_ir_transform
5252
tint_lang_core_type
53-
tint_lang_wgsl
54-
tint_lang_wgsl_ast
55-
tint_lang_wgsl_inspector
56-
tint_lang_wgsl_program
57-
tint_lang_wgsl_sem
5853
tint_utils
5954
tint_utils_containers
6055
tint_utils_diagnostic
@@ -70,3 +65,37 @@ tint_target_add_dependencies(tint_cmd_fuzz_ir_helpers lib
7065
tint_target_add_external_dependencies(tint_cmd_fuzz_ir_helpers lib
7166
"src_utils"
7267
)
68+
69+
################################################################################
70+
# Target: tint_cmd_fuzz_ir_helpers_test
71+
# Kind: test
72+
################################################################################
73+
tint_add_target(tint_cmd_fuzz_ir_helpers_test test
74+
cmd/fuzz/ir/helpers/substitute_overrides_config_test.cc
75+
)
76+
77+
tint_target_add_dependencies(tint_cmd_fuzz_ir_helpers_test test
78+
tint_api_common
79+
tint_cmd_fuzz_ir_helpers
80+
tint_lang_core
81+
tint_lang_core_constant
82+
tint_lang_core_intrinsic
83+
tint_lang_core_ir
84+
tint_lang_core_ir_transform
85+
tint_lang_core_type
86+
tint_utils
87+
tint_utils_containers
88+
tint_utils_diagnostic
89+
tint_utils_ice
90+
tint_utils_macros
91+
tint_utils_math
92+
tint_utils_memory
93+
tint_utils_rtti
94+
tint_utils_symbol
95+
tint_utils_text
96+
)
97+
98+
tint_target_add_external_dependencies(tint_cmd_fuzz_ir_helpers_test test
99+
"gtest"
100+
"src_utils"
101+
)

src/tint/cmd/fuzz/ir/helpers/BUILD.gn

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ import("../../../../../../scripts/tint_overrides_with_defaults.gni")
3939

4040
import("${tint_src_dir}/tint.gni")
4141

42+
if (tint_build_unittests || tint_build_benchmarks) {
43+
import("//testing/test.gni")
44+
}
45+
4246
libtint_source_set("helpers") {
4347
sources = [
4448
"substitute_overrides_config.cc",
@@ -52,11 +56,6 @@ libtint_source_set("helpers") {
5256
"${tint_src_dir}/lang/core/ir",
5357
"${tint_src_dir}/lang/core/ir/transform",
5458
"${tint_src_dir}/lang/core/type",
55-
"${tint_src_dir}/lang/wgsl",
56-
"${tint_src_dir}/lang/wgsl/ast",
57-
"${tint_src_dir}/lang/wgsl/inspector",
58-
"${tint_src_dir}/lang/wgsl/program",
59-
"${tint_src_dir}/lang/wgsl/sem",
6059
"${tint_src_dir}/utils",
6160
"${tint_src_dir}/utils/containers",
6261
"${tint_src_dir}/utils/diagnostic",
@@ -69,3 +68,30 @@ libtint_source_set("helpers") {
6968
"${tint_src_dir}/utils/text",
7069
]
7170
}
71+
if (tint_build_unittests) {
72+
tint_unittests_source_set("unittests") {
73+
sources = [ "substitute_overrides_config_test.cc" ]
74+
deps = [
75+
"${dawn_root}/src/utils:utils",
76+
"${tint_src_dir}:gmock_and_gtest",
77+
"${tint_src_dir}/api/common",
78+
"${tint_src_dir}/cmd/fuzz/ir/helpers",
79+
"${tint_src_dir}/lang/core",
80+
"${tint_src_dir}/lang/core/constant",
81+
"${tint_src_dir}/lang/core/intrinsic",
82+
"${tint_src_dir}/lang/core/ir",
83+
"${tint_src_dir}/lang/core/ir/transform",
84+
"${tint_src_dir}/lang/core/type",
85+
"${tint_src_dir}/utils",
86+
"${tint_src_dir}/utils/containers",
87+
"${tint_src_dir}/utils/diagnostic",
88+
"${tint_src_dir}/utils/ice",
89+
"${tint_src_dir}/utils/macros",
90+
"${tint_src_dir}/utils/math",
91+
"${tint_src_dir}/utils/memory",
92+
"${tint_src_dir}/utils/rtti",
93+
"${tint_src_dir}/utils/symbol",
94+
"${tint_src_dir}/utils/text",
95+
]
96+
}
97+
}

src/tint/cmd/fuzz/ir/helpers/substitute_overrides_config.cc

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,28 +27,24 @@
2727

2828
#include "src/tint/cmd/fuzz/ir/helpers/substitute_overrides_config.h"
2929

30-
#include <memory>
31-
#include <utility>
32-
30+
#include "src/tint/lang/core/ir/module.h"
31+
#include "src/tint/lang/core/ir/override.h"
3332
#include "src/tint/lang/core/ir/transform/substitute_overrides.h"
34-
#include "src/tint/lang/wgsl/inspector/inspector.h"
35-
#include "src/tint/lang/wgsl/program/program.h"
3633

3734
namespace tint::fuzz::ir {
3835

3936
tint::core::ir::transform::SubstituteOverridesConfig SubstituteOverridesConfig(
40-
const Program& program) {
37+
core::ir::Module& mod) {
4138
tint::core::ir::transform::SubstituteOverridesConfig cfg;
42-
inspector::Inspector inspector(program);
43-
auto default_values = inspector.GetOverrideDefaultValues();
44-
for (const auto& [override_id, scalar] : default_values) {
45-
// If the override is not null, then it has a default value, we can just let it use the
46-
// provided default instead of overriding.
47-
if (scalar.IsNull()) {
48-
cfg.map.insert({override_id, 0.0});
39+
40+
for (auto* inst : *(mod.root_block)) {
41+
auto* ov = inst->As<core::ir::Override>();
42+
if (!ov || ov->Initializer()) {
43+
continue;
4944
}
50-
}
5145

46+
cfg.map[ov->OverrideId().value()] = 0.0;
47+
}
5248
return cfg;
5349
}
5450

src/tint/cmd/fuzz/ir/helpers/substitute_overrides_config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@
3131
#include "src/tint/lang/core/ir/transform/substitute_overrides.h"
3232

3333
// Forward declarations
34-
namespace tint {
35-
class Program;
34+
namespace tint::core::ir {
35+
class Module;
3636
}
3737

3838
namespace tint::fuzz::ir {
3939

4040
/// Returns a IR substitute override config which may contain an empty map if there a no overrides
41-
/// @param program A valid program
41+
/// @param mod The IR to find the overrides from
4242
/// @return An IR substitute override config
43-
core::ir::transform::SubstituteOverridesConfig SubstituteOverridesConfig(const Program& program);
43+
core::ir::transform::SubstituteOverridesConfig SubstituteOverridesConfig(core::ir::Module& mod);
4444

4545
} // namespace tint::fuzz::ir
4646

0 commit comments

Comments
 (0)