tint: Make GLSL backend consistent with the others
Remove transform::Glsl and replace with a Sanitize function. Cleans up
the code, reduces allocations and copies, and makes it consistent with
the other backends.
Also add a copy of src/tint/.clang-format to include/tint/ to keep files
in there formatted as per the tint standard.
Bug: tint:1495
Change-Id: I8a44ffecc6b3d244517bceb374ed93063e96f218
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/86205
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro-Run: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
diff --git a/include/tint/.clang-format b/include/tint/.clang-format
new file mode 100644
index 0000000..2fb833a
--- /dev/null
+++ b/include/tint/.clang-format
@@ -0,0 +1,2 @@
+# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
+BasedOnStyle: Chromium
diff --git a/include/tint/tint.h b/include/tint/tint.h
index 1a04196..2b8430e 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -61,7 +61,6 @@
#endif // TINT_BUILD_HLSL_WRITER
#if TINT_BUILD_GLSL_WRITER
-#include "src/tint/transform/glsl.h"
#include "src/tint/writer/glsl/generator.h"
#endif // TINT_BUILD_GLSL_WRITER
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 9567055..5594bf8 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -751,8 +751,6 @@
libtint_source_set("libtint_glsl_writer_src") {
sources = [
- "transform/glsl.cc",
- "transform/glsl.h",
"writer/glsl/generator.cc",
"writer/glsl/generator.h",
"writer/glsl/generator_impl.cc",
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index a6ad6f6..527eeaf 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -339,8 +339,6 @@
transform/for_loop_to_loop.h
transform/expand_compound_assignment.cc
transform/expand_compound_assignment.h
- transform/glsl.cc
- transform/glsl.h
transform/loop_to_for_loop.cc
transform/loop_to_for_loop.h
transform/manager.cc
diff --git a/src/tint/transform/glsl.cc b/src/tint/transform/glsl.cc
deleted file mode 100644
index f0120e8..0000000
--- a/src/tint/transform/glsl.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2021 The Tint Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "src/tint/transform/glsl.h"
-
-#include <utility>
-
-#include "src/tint/program_builder.h"
-#include "src/tint/transform/add_empty_entry_point.h"
-#include "src/tint/transform/add_spirv_block_attribute.h"
-#include "src/tint/transform/binding_remapper.h"
-#include "src/tint/transform/builtin_polyfill.h"
-#include "src/tint/transform/canonicalize_entry_point_io.h"
-#include "src/tint/transform/combine_samplers.h"
-#include "src/tint/transform/decompose_memory_access.h"
-#include "src/tint/transform/expand_compound_assignment.h"
-#include "src/tint/transform/fold_trivial_single_use_lets.h"
-#include "src/tint/transform/loop_to_for_loop.h"
-#include "src/tint/transform/manager.h"
-#include "src/tint/transform/promote_initializers_to_const_var.h"
-#include "src/tint/transform/promote_side_effects_to_decl.h"
-#include "src/tint/transform/remove_phonies.h"
-#include "src/tint/transform/renamer.h"
-#include "src/tint/transform/simplify_pointers.h"
-#include "src/tint/transform/single_entry_point.h"
-#include "src/tint/transform/unshadow.h"
-#include "src/tint/transform/unwind_discard_functions.h"
-#include "src/tint/transform/zero_init_workgroup_memory.h"
-#include "src/tint/writer/generate_external_texture_bindings.h"
-
-TINT_INSTANTIATE_TYPEINFO(tint::transform::Glsl);
-TINT_INSTANTIATE_TYPEINFO(tint::transform::Glsl::Config);
-
-namespace tint::transform {
-
-Glsl::Glsl() = default;
-Glsl::~Glsl() = default;
-
-Output Glsl::Run(const Program* in, const DataMap& inputs) const {
- Manager manager;
- DataMap data;
-
- auto* cfg = inputs.Get<Config>();
-
- { // Builtin polyfills
- BuiltinPolyfill::Builtins polyfills;
- polyfills.count_leading_zeros = true;
- polyfills.count_trailing_zeros = true;
- polyfills.extract_bits = BuiltinPolyfill::Level::kClampParameters;
- polyfills.first_leading_bit = true;
- polyfills.first_trailing_bit = true;
- polyfills.insert_bits = BuiltinPolyfill::Level::kClampParameters;
- data.Add<BuiltinPolyfill::Config>(polyfills);
- manager.Add<BuiltinPolyfill>();
- }
-
- if (cfg && !cfg->entry_point.empty()) {
- manager.Add<SingleEntryPoint>();
- data.Add<SingleEntryPoint::Config>(cfg->entry_point);
- }
- manager.Add<Renamer>();
- data.Add<Renamer::Config>(Renamer::Target::kGlslKeywords,
- /* preserve_unicode */ false);
- manager.Add<Unshadow>();
-
- // Attempt to convert `loop`s into for-loops. This is to try and massage the
- // output into something that will not cause FXC to choke or misbehave.
- manager.Add<FoldTrivialSingleUseLets>();
- manager.Add<LoopToForLoop>();
-
- if (!cfg || !cfg->disable_workgroup_init) {
- // ZeroInitWorkgroupMemory must come before CanonicalizeEntryPointIO as
- // ZeroInitWorkgroupMemory may inject new builtin parameters.
- manager.Add<ZeroInitWorkgroupMemory>();
- }
- manager.Add<CanonicalizeEntryPointIO>();
- manager.Add<ExpandCompoundAssignment>();
- manager.Add<PromoteSideEffectsToDecl>();
- manager.Add<UnwindDiscardFunctions>();
- manager.Add<SimplifyPointers>();
-
- manager.Add<RemovePhonies>();
-
- if (cfg && cfg->generate_external_texture_bindings) {
- auto new_bindings_map = writer::GenerateExternalTextureBindings(in);
- data.Add<MultiplanarExternalTexture::NewBindingPoints>(new_bindings_map);
- }
- manager.Add<MultiplanarExternalTexture>();
-
- manager.Add<CombineSamplers>();
- if (auto* binding_info = inputs.Get<CombineSamplers::BindingInfo>()) {
- data.Add<CombineSamplers::BindingInfo>(*binding_info);
- } else {
- data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap(),
- sem::BindingPoint());
- }
- manager.Add<BindingRemapper>();
- if (auto* remappings = inputs.Get<BindingRemapper::Remappings>()) {
- data.Add<BindingRemapper::Remappings>(*remappings);
- } else {
- BindingRemapper::BindingPoints bp;
- BindingRemapper::AccessControls ac;
- data.Add<BindingRemapper::Remappings>(bp, ac, /* mayCollide */ true);
- }
-
- manager.Add<PromoteInitializersToConstVar>();
-
- manager.Add<AddEmptyEntryPoint>();
- manager.Add<AddSpirvBlockAttribute>();
-
- data.Add<CanonicalizeEntryPointIO::Config>(
- CanonicalizeEntryPointIO::ShaderStyle::kGlsl);
- auto out = manager.Run(in, data);
- if (!out.program.IsValid()) {
- return out;
- }
-
- ProgramBuilder builder;
- CloneContext ctx(&builder, &out.program);
- ctx.Clone();
- return Output{Program(std::move(builder))};
-}
-
-Glsl::Config::Config(const std::string& entry_point_in,
- bool disable_workgroup_init_in,
- bool generate_external_texture_bindings_in)
- : entry_point(entry_point_in),
- disable_workgroup_init(disable_workgroup_init_in),
- generate_external_texture_bindings(
- generate_external_texture_bindings_in) {}
-Glsl::Config::Config(const Config&) = default;
-Glsl::Config::~Config() = default;
-
-} // namespace tint::transform
diff --git a/src/tint/transform/glsl.h b/src/tint/transform/glsl.h
deleted file mode 100644
index c84ff29..0000000
--- a/src/tint/transform/glsl.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2021 The Tint Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef SRC_TINT_TRANSFORM_GLSL_H_
-#define SRC_TINT_TRANSFORM_GLSL_H_
-
-#include <string>
-
-#include "src/tint/transform/transform.h"
-
-// Forward declarations
-namespace tint {
-class CloneContext;
-} // namespace tint
-
-namespace tint::transform {
-
-/// Glsl is a transform used to sanitize a Program for use with the Glsl writer.
-/// Passing a non-sanitized Program to the Glsl writer will result in undefined
-/// behavior.
-class Glsl final : public Castable<Glsl, Transform> {
- public:
- /// Configuration options for the Glsl sanitizer transform.
- struct Config final : public Castable<Data, transform::Data> {
- /// Constructor
- /// @param entry_point the root entry point function to generate
- /// @param disable_workgroup_init `true` to disable workgroup memory zero
- /// initialization
- /// @param generate_external_texture_bindings 'true' to generates binding
- /// mappings for external textures
- explicit Config(const std::string& entry_point,
- bool disable_workgroup_init,
- bool generate_external_texture_bindings);
-
- /// Copy constructor
- Config(const Config&);
-
- /// Destructor
- ~Config() override;
-
- /// GLSL generator wraps a single entry point in a main() function.
- std::string entry_point;
-
- /// Set to `true` to disable workgroup memory zero initialization
- bool disable_workgroup_init = false;
-
- /// Set to 'true' to generates binding mappings for external textures
- bool generate_external_texture_bindings = false;
- };
-
- /// Constructor
- Glsl();
- ~Glsl() override;
-
- /// Runs the transform on `program`, returning the transformation result.
- /// @param program the source program to transform
- /// @param data optional extra transform-specific data
- /// @returns the transformation result
- Output Run(const Program* program, const DataMap& data = {}) const override;
-};
-
-} // namespace tint::transform
-
-#endif // SRC_TINT_TRANSFORM_GLSL_H_
diff --git a/src/tint/transform/glsl_test.cc b/src/tint/transform/glsl_test.cc
deleted file mode 100644
index 555701b..0000000
--- a/src/tint/transform/glsl_test.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2021 The Tint Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "src/tint/transform/glsl.h"
-
-#include "src/tint/transform/test_helper.h"
-
-namespace tint::transform {
-namespace {
-
-using GlslTest = TransformTest;
-
-TEST_F(GlslTest, AddEmptyEntryPoint) {
- auto* src = R"()";
-
- auto* expect = R"(
-@stage(compute) @workgroup_size(1)
-fn unused_entry_point() {
-}
-)";
-
- auto got = Run<Glsl>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-} // namespace
-} // namespace tint::transform
diff --git a/src/tint/writer/glsl/generator.cc b/src/tint/writer/glsl/generator.cc
index ad06ac4..83ae8c4 100644
--- a/src/tint/writer/glsl/generator.cc
+++ b/src/tint/writer/glsl/generator.cc
@@ -16,7 +16,6 @@
#include "src/tint/transform/binding_remapper.h"
#include "src/tint/transform/combine_samplers.h"
-#include "src/tint/transform/glsl.h"
#include "src/tint/writer/glsl/generator_impl.h"
namespace tint::writer::glsl {
@@ -34,34 +33,25 @@
const std::string& entry_point) {
Result result;
- // Run the GLSL sanitizer.
- transform::DataMap data;
- data.Add<transform::BindingRemapper::Remappings>(options.binding_points,
- options.access_controls,
- options.allow_collisions);
- data.Add<transform::CombineSamplers::BindingInfo>(
- options.binding_map, options.placeholder_binding_point);
- data.Add<transform::Glsl::Config>(entry_point,
- /* disable_workgroup_init */ false,
- options.generate_external_texture_bindings);
- transform::Glsl sanitizer;
- auto output = sanitizer.Run(program, data);
- if (!output.program.IsValid()) {
+ // Sanitize the program.
+ auto sanitized_result = Sanitize(program, options, entry_point);
+ if (!sanitized_result.program.IsValid()) {
result.success = false;
- result.error = output.program.Diagnostics().str();
+ result.error = sanitized_result.program.Diagnostics().str();
return result;
}
// Generate the GLSL code.
- auto impl = std::make_unique<GeneratorImpl>(&output.program, options.version);
+ auto impl = std::make_unique<GeneratorImpl>(&sanitized_result.program,
+ options.version);
result.success = impl->Generate();
result.error = impl->error();
result.glsl = impl->result();
// Collect the list of entry points in the sanitized program.
- for (auto* func : output.program.AST().Functions()) {
+ for (auto* func : sanitized_result.program.AST().Functions()) {
if (func->IsEntryPoint()) {
- auto name = output.program.Symbols().NameFor(func->symbol);
+ auto name = sanitized_result.program.Symbols().NameFor(func->symbol);
result.entry_points.push_back({name, func->PipelineStage()});
}
}
diff --git a/src/tint/writer/glsl/generator.h b/src/tint/writer/glsl/generator.h
index ab5c9bb..11206cf 100644
--- a/src/tint/writer/glsl/generator.h
+++ b/src/tint/writer/glsl/generator.h
@@ -70,6 +70,9 @@
/// generated by the BindingRemapper transform
bool allow_collisions = false;
+ /// Set to `true` to disable workgroup memory zero initialization
+ bool disable_workgroup_init = false;
+
/// Set to 'true' to generates binding mappings for external textures
bool generate_external_texture_bindings = false;
@@ -106,6 +109,7 @@
/// information.
/// @param program the program to translate to GLSL
/// @param options the configuration options to use when generating GLSL
+/// @param entry_point the entry point to generate GLSL for
/// @returns the resulting GLSL and supplementary information
Result Generate(const Program* program,
const Options& options,
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 729a8c0..ef7467d 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -45,12 +45,32 @@
#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
#include "src/tint/sem/variable.h"
-#include "src/tint/transform/glsl.h"
+#include "src/tint/transform/add_empty_entry_point.h"
+#include "src/tint/transform/add_spirv_block_attribute.h"
+#include "src/tint/transform/binding_remapper.h"
+#include "src/tint/transform/builtin_polyfill.h"
+#include "src/tint/transform/canonicalize_entry_point_io.h"
+#include "src/tint/transform/combine_samplers.h"
+#include "src/tint/transform/decompose_memory_access.h"
+#include "src/tint/transform/expand_compound_assignment.h"
+#include "src/tint/transform/fold_trivial_single_use_lets.h"
+#include "src/tint/transform/loop_to_for_loop.h"
+#include "src/tint/transform/manager.h"
+#include "src/tint/transform/promote_initializers_to_const_var.h"
+#include "src/tint/transform/promote_side_effects_to_decl.h"
+#include "src/tint/transform/remove_phonies.h"
+#include "src/tint/transform/renamer.h"
+#include "src/tint/transform/simplify_pointers.h"
+#include "src/tint/transform/single_entry_point.h"
+#include "src/tint/transform/unshadow.h"
+#include "src/tint/transform/unwind_discard_functions.h"
+#include "src/tint/transform/zero_init_workgroup_memory.h"
#include "src/tint/utils/defer.h"
#include "src/tint/utils/map.h"
#include "src/tint/utils/scoped_assignment.h"
#include "src/tint/writer/append_vector.h"
#include "src/tint/writer/float_to_string.h"
+#include "src/tint/writer/generate_external_texture_bindings.h"
namespace {
@@ -127,6 +147,86 @@
} // namespace
+SanitizedResult::SanitizedResult() = default;
+SanitizedResult::~SanitizedResult() = default;
+SanitizedResult::SanitizedResult(SanitizedResult&&) = default;
+
+SanitizedResult Sanitize(const Program* in,
+ const Options& options,
+ const std::string& entry_point) {
+ transform::Manager manager;
+ transform::DataMap data;
+
+ { // Builtin polyfills
+ transform::BuiltinPolyfill::Builtins polyfills;
+ polyfills.count_leading_zeros = true;
+ polyfills.count_trailing_zeros = true;
+ polyfills.extract_bits =
+ transform::BuiltinPolyfill::Level::kClampParameters;
+ polyfills.first_leading_bit = true;
+ polyfills.first_trailing_bit = true;
+ polyfills.insert_bits = transform::BuiltinPolyfill::Level::kClampParameters;
+ data.Add<transform::BuiltinPolyfill::Config>(polyfills);
+ manager.Add<transform::BuiltinPolyfill>();
+ }
+
+ if (!entry_point.empty()) {
+ manager.Add<transform::SingleEntryPoint>();
+ data.Add<transform::SingleEntryPoint::Config>(entry_point);
+ }
+ manager.Add<transform::Renamer>();
+ data.Add<transform::Renamer::Config>(
+ transform::Renamer::Target::kGlslKeywords,
+ /* preserve_unicode */ false);
+ manager.Add<transform::Unshadow>();
+
+ // Attempt to convert `loop`s into for-loops. This is to try and massage the
+ // output into something that will not cause FXC to choke or misbehave.
+ manager.Add<transform::FoldTrivialSingleUseLets>();
+ manager.Add<transform::LoopToForLoop>();
+
+ if (!options.disable_workgroup_init) {
+ // ZeroInitWorkgroupMemory must come before CanonicalizeEntryPointIO as
+ // ZeroInitWorkgroupMemory may inject new builtin parameters.
+ manager.Add<transform::ZeroInitWorkgroupMemory>();
+ }
+ manager.Add<transform::CanonicalizeEntryPointIO>();
+ manager.Add<transform::ExpandCompoundAssignment>();
+ manager.Add<transform::PromoteSideEffectsToDecl>();
+ manager.Add<transform::UnwindDiscardFunctions>();
+ manager.Add<transform::SimplifyPointers>();
+
+ manager.Add<transform::RemovePhonies>();
+
+ if (options.generate_external_texture_bindings) {
+ auto new_bindings_map = writer::GenerateExternalTextureBindings(in);
+ data.Add<transform::MultiplanarExternalTexture::NewBindingPoints>(
+ new_bindings_map);
+ }
+ manager.Add<transform::MultiplanarExternalTexture>();
+
+ data.Add<transform::CombineSamplers::BindingInfo>(
+ options.binding_map, options.placeholder_binding_point);
+ manager.Add<transform::CombineSamplers>();
+
+ data.Add<transform::BindingRemapper::Remappings>(options.binding_points,
+ options.access_controls,
+ options.allow_collisions);
+ manager.Add<transform::BindingRemapper>();
+
+ manager.Add<transform::PromoteInitializersToConstVar>();
+ manager.Add<transform::AddEmptyEntryPoint>();
+ manager.Add<transform::AddSpirvBlockAttribute>();
+ data.Add<transform::CanonicalizeEntryPointIO::Config>(
+ transform::CanonicalizeEntryPointIO::ShaderStyle::kGlsl);
+
+ auto out = manager.Run(in, data);
+
+ SanitizedResult result;
+ result.program = std::move(out.program);
+ return result;
+}
+
GeneratorImpl::GeneratorImpl(const Program* program, const Version& version)
: TextGenerator(program), version_(version) {}
diff --git a/src/tint/writer/glsl/generator_impl.h b/src/tint/writer/glsl/generator_impl.h
index 37be658..9104182 100644
--- a/src/tint/writer/glsl/generator_impl.h
+++ b/src/tint/writer/glsl/generator_impl.h
@@ -35,6 +35,7 @@
#include "src/tint/scope_stack.h"
#include "src/tint/transform/decompose_memory_access.h"
#include "src/tint/utils/hash.h"
+#include "src/tint/writer/glsl/generator.h"
#include "src/tint/writer/glsl/version.h"
#include "src/tint/writer/text_generator.h"
@@ -48,6 +49,28 @@
namespace tint::writer::glsl {
+/// The result of sanitizing a program for generation.
+struct SanitizedResult {
+ /// Constructor
+ SanitizedResult();
+ /// Destructor
+ ~SanitizedResult();
+ /// Move constructor
+ SanitizedResult(SanitizedResult&&);
+
+ /// The sanitized program.
+ Program program;
+};
+
+/// Sanitize a program in preparation for generating GLSL.
+/// @program The program to sanitize
+/// @param options The HLSL generator options.
+/// @param entry_point the entry point to generate GLSL for
+/// @returns the sanitized program and any supplementary information
+SanitizedResult Sanitize(const Program* program,
+ const Options& options,
+ const std::string& entry_point);
+
/// Implementation class for GLSL generator
class GeneratorImpl : public TextGenerator {
public:
diff --git a/src/tint/writer/glsl/test_helper.h b/src/tint/writer/glsl/test_helper.h
index 969490a..d479017 100644
--- a/src/tint/writer/glsl/test_helper.h
+++ b/src/tint/writer/glsl/test_helper.h
@@ -20,7 +20,6 @@
#include <utility>
#include "gtest/gtest.h"
-#include "src/tint/transform/glsl.h"
#include "src/tint/transform/manager.h"
#include "src/tint/writer/glsl/generator_impl.h"
@@ -61,7 +60,8 @@
/// return the same GeneratorImpl without rebuilding.
/// @param version the GLSL version
/// @return the built generator
- GeneratorImpl& SanitizeAndBuild(Version version = Version()) {
+ GeneratorImpl& SanitizeAndBuild(Version version = Version(),
+ const Options& options = {}) {
if (gen_) {
return *gen_;
}
@@ -76,15 +76,14 @@
<< formatter.format(program->Diagnostics());
}();
- transform::Manager transform_manager;
- transform::DataMap transform_data;
- transform_manager.Add<tint::transform::Glsl>();
- auto result = transform_manager.Run(program.get(), transform_data);
+ auto sanitized_result =
+ Sanitize(program.get(), options, /* entry_point */ "");
[&]() {
- ASSERT_TRUE(result.program.IsValid())
- << formatter.format(result.program.Diagnostics());
+ ASSERT_TRUE(sanitized_result.program.IsValid())
+ << formatter.format(sanitized_result.program.Diagnostics());
}();
- *program = std::move(result.program);
+
+ *program = std::move(sanitized_result.program);
gen_ = std::make_unique<GeneratorImpl>(program.get(), version);
return *gen_;
}
diff --git a/test/tint/BUILD.gn b/test/tint/BUILD.gn
index fcf85d1..bb217df 100644
--- a/test/tint/BUILD.gn
+++ b/test/tint/BUILD.gn
@@ -667,7 +667,6 @@
tint_unittests_source_set("tint_unittests_glsl_writer_src") {
sources = [
- "../../src/tint/transform/glsl_test.cc",
"../../src/tint/writer/glsl/generator_impl_array_accessor_test.cc",
"../../src/tint/writer/glsl/generator_impl_assign_test.cc",
"../../src/tint/writer/glsl/generator_impl_binary_test.cc",