mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-05-14 03:11:29 +00:00
Automatically run entry point IO canonicalization
Avoids the need for downstream users to manually run this transform. Change-Id: I0c63e2fd8b6ad49b752ed1757370e386171481cb Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/47440 Commit-Queue: James Price <jrprice@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Auto-Submit: James Price <jrprice@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
71512e30ca
commit
f8f31a458f
@ -25,7 +25,6 @@
|
|||||||
#include "src/reader/reader.h"
|
#include "src/reader/reader.h"
|
||||||
#include "src/transform/binding_remapper.h"
|
#include "src/transform/binding_remapper.h"
|
||||||
#include "src/transform/bound_array_accessors.h"
|
#include "src/transform/bound_array_accessors.h"
|
||||||
#include "src/transform/canonicalize_entry_point_io.h"
|
|
||||||
#include "src/transform/emit_vertex_point_size.h"
|
#include "src/transform/emit_vertex_point_size.h"
|
||||||
#include "src/transform/first_index_offset.h"
|
#include "src/transform/first_index_offset.h"
|
||||||
#include "src/transform/manager.h"
|
#include "src/transform/manager.h"
|
||||||
|
@ -701,15 +701,11 @@ int main(int argc, const char** argv) {
|
|||||||
#endif // TINT_BUILD_SPV_WRITER
|
#endif // TINT_BUILD_SPV_WRITER
|
||||||
#if TINT_BUILD_MSL_WRITER
|
#if TINT_BUILD_MSL_WRITER
|
||||||
case Format::kMsl:
|
case Format::kMsl:
|
||||||
transform_manager.append(
|
|
||||||
std::make_unique<tint::transform::CanonicalizeEntryPointIO>());
|
|
||||||
transform_manager.append(std::make_unique<tint::transform::Msl>());
|
transform_manager.append(std::make_unique<tint::transform::Msl>());
|
||||||
break;
|
break;
|
||||||
#endif // TINT_BUILD_MSL_WRITER
|
#endif // TINT_BUILD_MSL_WRITER
|
||||||
#if TINT_BUILD_HLSL_WRITER
|
#if TINT_BUILD_HLSL_WRITER
|
||||||
case Format::kHlsl:
|
case Format::kHlsl:
|
||||||
transform_manager.append(
|
|
||||||
std::make_unique<tint::transform::CanonicalizeEntryPointIO>());
|
|
||||||
transform_manager.append(std::make_unique<tint::transform::Hlsl>());
|
transform_manager.append(std::make_unique<tint::transform::Hlsl>());
|
||||||
break;
|
break;
|
||||||
#endif // TINT_BUILD_HLSL_WRITER
|
#endif // TINT_BUILD_HLSL_WRITER
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "src/semantic/statement.h"
|
#include "src/semantic/statement.h"
|
||||||
#include "src/semantic/variable.h"
|
#include "src/semantic/variable.h"
|
||||||
#include "src/transform/calculate_array_length.h"
|
#include "src/transform/calculate_array_length.h"
|
||||||
|
#include "src/transform/canonicalize_entry_point_io.h"
|
||||||
#include "src/transform/decompose_storage_access.h"
|
#include "src/transform/decompose_storage_access.h"
|
||||||
#include "src/transform/manager.h"
|
#include "src/transform/manager.h"
|
||||||
|
|
||||||
@ -34,6 +35,7 @@ Hlsl::~Hlsl() = default;
|
|||||||
|
|
||||||
Transform::Output Hlsl::Run(const Program* in, const DataMap& data) {
|
Transform::Output Hlsl::Run(const Program* in, const DataMap& data) {
|
||||||
Manager manager;
|
Manager manager;
|
||||||
|
manager.Add<CanonicalizeEntryPointIO>();
|
||||||
manager.Add<DecomposeStorageAccess>();
|
manager.Add<DecomposeStorageAccess>();
|
||||||
manager.Add<CalculateArrayLength>();
|
manager.Add<CalculateArrayLength>();
|
||||||
auto out = manager.Run(in, data);
|
auto out = manager.Run(in, data);
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "src/program_builder.h"
|
#include "src/program_builder.h"
|
||||||
|
#include "src/transform/canonicalize_entry_point_io.h"
|
||||||
|
#include "src/transform/manager.h"
|
||||||
|
|
||||||
namespace tint {
|
namespace tint {
|
||||||
namespace transform {
|
namespace transform {
|
||||||
@ -262,12 +264,19 @@ const char* kReservedKeywords[] = {"access",
|
|||||||
Msl::Msl() = default;
|
Msl::Msl() = default;
|
||||||
Msl::~Msl() = default;
|
Msl::~Msl() = default;
|
||||||
|
|
||||||
Transform::Output Msl::Run(const Program* in, const DataMap&) {
|
Transform::Output Msl::Run(const Program* in, const DataMap& data) {
|
||||||
ProgramBuilder out;
|
Manager manager;
|
||||||
CloneContext ctx(&out, in);
|
manager.Add<CanonicalizeEntryPointIO>();
|
||||||
|
auto out = manager.Run(in, data);
|
||||||
|
if (!out.program.IsValid()) {
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
ProgramBuilder builder;
|
||||||
|
CloneContext ctx(&builder, &out.program);
|
||||||
RenameReservedKeywords(&ctx, kReservedKeywords);
|
RenameReservedKeywords(&ctx, kReservedKeywords);
|
||||||
ctx.Clone();
|
ctx.Clone();
|
||||||
return Output{Program(std::move(out))};
|
return Output{Program(std::move(builder))};
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace transform
|
} // namespace transform
|
||||||
|
@ -20,9 +20,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "src/transform/canonicalize_entry_point_io.h"
|
|
||||||
#include "src/transform/hlsl.h"
|
#include "src/transform/hlsl.h"
|
||||||
#include "src/transform/manager.h"
|
|
||||||
#include "src/writer/hlsl/generator_impl.h"
|
#include "src/writer/hlsl/generator_impl.h"
|
||||||
|
|
||||||
namespace tint {
|
namespace tint {
|
||||||
@ -101,11 +99,7 @@ class TestHelperBase : public BODY, public ProgramBuilder {
|
|||||||
<< formatter.format(program->Diagnostics());
|
<< formatter.format(program->Diagnostics());
|
||||||
}();
|
}();
|
||||||
|
|
||||||
tint::transform::Manager transform_manager;
|
auto result = transform::Hlsl().Run(program.get());
|
||||||
transform_manager.append(
|
|
||||||
std::make_unique<tint::transform::CanonicalizeEntryPointIO>());
|
|
||||||
transform_manager.append(std::make_unique<tint::transform::Hlsl>());
|
|
||||||
auto result = transform_manager.Run(program.get());
|
|
||||||
[&]() {
|
[&]() {
|
||||||
ASSERT_TRUE(result.program.IsValid())
|
ASSERT_TRUE(result.program.IsValid())
|
||||||
<< formatter.format(result.program.Diagnostics());
|
<< formatter.format(result.program.Diagnostics());
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "src/program_builder.h"
|
#include "src/program_builder.h"
|
||||||
#include "src/transform/canonicalize_entry_point_io.h"
|
|
||||||
#include "src/transform/manager.h"
|
|
||||||
#include "src/transform/msl.h"
|
#include "src/transform/msl.h"
|
||||||
#include "src/writer/msl/generator_impl.h"
|
#include "src/writer/msl/generator_impl.h"
|
||||||
|
|
||||||
@ -76,11 +74,7 @@ class TestHelperBase : public BASE, public ProgramBuilder {
|
|||||||
<< diag::Formatter().format(program->Diagnostics());
|
<< diag::Formatter().format(program->Diagnostics());
|
||||||
}();
|
}();
|
||||||
|
|
||||||
tint::transform::Manager transform_manager;
|
auto result = transform::Msl().Run(program.get());
|
||||||
transform_manager.append(
|
|
||||||
std::make_unique<tint::transform::CanonicalizeEntryPointIO>());
|
|
||||||
transform_manager.append(std::make_unique<tint::transform::Msl>());
|
|
||||||
auto result = transform_manager.Run(program.get());
|
|
||||||
[&]() {
|
[&]() {
|
||||||
ASSERT_TRUE(result.program.IsValid())
|
ASSERT_TRUE(result.program.IsValid())
|
||||||
<< diag::Formatter().format(result.program.Diagnostics());
|
<< diag::Formatter().format(result.program.Diagnostics());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user