Add a Unsafe SPIR-V generate call.
Currently Dawn may use the tint generator or the SPIRV-Cross generator.
In the case of SPIRV-Cross, we need to generate the SPIR-V with the
original names otherwise SPIRV-Cross won't be able to match up the entry
point name with the names in the shader.
Change-Id: Ica473030009b282fee352f2d1c1acc93f1db592c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/37222
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/writer/spirv/generator.cc b/src/writer/spirv/generator.cc
index 41dfb07..190af5f 100644
--- a/src/writer/spirv/generator.cc
+++ b/src/writer/spirv/generator.cc
@@ -51,6 +51,22 @@
return true;
}
+bool Generator::GenerateUnsafe() {
+ auto unsafe_namer = std::make_unique<UnsafeNamer>(module_);
+ builder_ = std::make_unique<Builder>(module_, unsafe_namer.get());
+
+ if (!builder_->Build()) {
+ set_error(builder_->error());
+ return false;
+ }
+
+ writer_->WriteHeader(builder_->id_bound());
+ writer_->WriteBuilder(builder_.get());
+
+ builder_ = std::make_unique<Builder>(module_, namer_.get());
+ return true;
+}
+
bool Generator::GenerateEntryPoint(ast::PipelineStage, const std::string&) {
return false;
}
diff --git a/src/writer/spirv/generator.h b/src/writer/spirv/generator.h
index d84d753..7f73d49 100644
--- a/src/writer/spirv/generator.h
+++ b/src/writer/spirv/generator.h
@@ -48,6 +48,11 @@
/// @returns true on successful generation; false otherwise
bool Generate() override;
+ /// Generates the result data
+ /// DO NOT USE. Temporary fix for Dawn usage of SPRIV-Cross
+ /// @returns true on successful generation; false otherwise
+ bool GenerateUnsafe();
+
/// Converts a single entry point
/// @param stage the pipeline stage
/// @param name the entry point name