mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-01 02:43:29 +00:00
Allow setting the namer into the inspector.
This CL adds an extra constructor to the inspector to change the namer user. The inspector tests are then updated to use the test namer. Change-Id: Ibc91de89b52161dc125b38d65e445b5833ad6c18 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/36943 Reviewed-by: Ryan Harrison <rharrison@chromium.org>
This commit is contained in:
parent
b920e604b2
commit
a8d9755053
@ -43,10 +43,18 @@
|
||||
namespace tint {
|
||||
namespace inspector {
|
||||
|
||||
Inspector::Inspector(ast::Module& module)
|
||||
: module_(module), namer_(std::make_unique<UnsafeNamer>(&module)) {}
|
||||
Inspector::Inspector(ast::Module& module, Namer* namer)
|
||||
: module_(module), namer_(namer), namer_is_owned_(false) {}
|
||||
|
||||
Inspector::~Inspector() = default;
|
||||
Inspector::Inspector(ast::Module& module)
|
||||
: module_(module),
|
||||
namer_(new UnsafeNamer(&module)),
|
||||
namer_is_owned_(true) {}
|
||||
|
||||
Inspector::~Inspector() {
|
||||
if (namer_is_owned_)
|
||||
delete namer_;
|
||||
}
|
||||
|
||||
std::vector<EntryPoint> Inspector::GetEntryPoints() {
|
||||
std::vector<EntryPoint> result;
|
||||
|
@ -71,6 +71,10 @@ struct ResourceBinding {
|
||||
/// Extracts information from a module
|
||||
class Inspector {
|
||||
public:
|
||||
/// Constructor
|
||||
/// @param module Shader module to extract information from.
|
||||
/// @param namer the namer to use with the inspector
|
||||
Inspector(ast::Module& module, Namer* namer);
|
||||
/// Constructor
|
||||
/// @param module Shader module to extract information from.
|
||||
explicit Inspector(ast::Module& module);
|
||||
@ -129,7 +133,8 @@ class Inspector {
|
||||
|
||||
private:
|
||||
const ast::Module& module_;
|
||||
std::unique_ptr<Namer> namer_;
|
||||
Namer* namer_ = nullptr;
|
||||
bool namer_is_owned_ = false;
|
||||
std::string error_;
|
||||
|
||||
/// @param name name of the entry point to find
|
||||
|
@ -61,6 +61,7 @@
|
||||
#include "src/ast/variable_decoration.h"
|
||||
#include "src/ast/workgroup_decoration.h"
|
||||
#include "src/type_determiner.h"
|
||||
#include "src/writer/test_namer.h"
|
||||
#include "tint/tint.h"
|
||||
|
||||
namespace tint {
|
||||
@ -71,7 +72,8 @@ class InspectorHelper : public ast::BuilderWithModule {
|
||||
public:
|
||||
InspectorHelper()
|
||||
: td_(std::make_unique<TypeDeterminer>(mod)),
|
||||
inspector_(std::make_unique<Inspector>(*mod)),
|
||||
namer_(mod),
|
||||
inspector_(std::make_unique<Inspector>(*mod, &namer_)),
|
||||
sampler_type_(ast::type::SamplerKind::kSampler),
|
||||
comparison_sampler_type_(ast::type::SamplerKind::kComparisonSampler) {}
|
||||
|
||||
@ -639,6 +641,7 @@ class InspectorHelper : public ast::BuilderWithModule {
|
||||
|
||||
private:
|
||||
std::unique_ptr<TypeDeterminer> td_;
|
||||
writer::TestNamer namer_;
|
||||
std::unique_ptr<Inspector> inspector_;
|
||||
|
||||
ast::type::Sampler sampler_type_;
|
||||
@ -720,14 +723,12 @@ TEST_F(InspectorGetEntryPointTest, OneEntryPoint) {
|
||||
});
|
||||
mod->AddFunction(foo);
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto result = inspector()->GetEntryPoints();
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
|
||||
ASSERT_EQ(1u, result.size());
|
||||
EXPECT_EQ("foo", result[0].name);
|
||||
EXPECT_EQ("foo", result[0].remapped_name);
|
||||
EXPECT_EQ("test_foo", result[0].remapped_name);
|
||||
EXPECT_EQ(ast::PipelineStage::kVertex, result[0].stage);
|
||||
}
|
||||
|
||||
@ -744,17 +745,15 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPoints) {
|
||||
});
|
||||
mod->AddFunction(bar);
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto result = inspector()->GetEntryPoints();
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
|
||||
ASSERT_EQ(2u, result.size());
|
||||
EXPECT_EQ("foo", result[0].name);
|
||||
EXPECT_EQ("foo", result[0].remapped_name);
|
||||
EXPECT_EQ("test_foo", result[0].remapped_name);
|
||||
EXPECT_EQ(ast::PipelineStage::kVertex, result[0].stage);
|
||||
EXPECT_EQ("bar", result[1].name);
|
||||
EXPECT_EQ("bar", result[1].remapped_name);
|
||||
EXPECT_EQ("test_bar", result[1].remapped_name);
|
||||
EXPECT_EQ(ast::PipelineStage::kCompute, result[1].stage);
|
||||
}
|
||||
|
||||
@ -776,17 +775,15 @@ TEST_F(InspectorGetEntryPointTest, MixFunctionsAndEntryPoints) {
|
||||
});
|
||||
mod->AddFunction(bar);
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto result = inspector()->GetEntryPoints();
|
||||
EXPECT_FALSE(inspector()->has_error());
|
||||
|
||||
ASSERT_EQ(2u, result.size());
|
||||
EXPECT_EQ("foo", result[0].name);
|
||||
EXPECT_EQ("foo", result[0].remapped_name);
|
||||
EXPECT_EQ("test_foo", result[0].remapped_name);
|
||||
EXPECT_EQ(ast::PipelineStage::kVertex, result[0].stage);
|
||||
EXPECT_EQ("bar", result[1].name);
|
||||
EXPECT_EQ("bar", result[1].remapped_name);
|
||||
EXPECT_EQ("test_bar", result[1].remapped_name);
|
||||
EXPECT_EQ(ast::PipelineStage::kFragment, result[1].stage);
|
||||
}
|
||||
|
||||
@ -865,9 +862,9 @@ TEST_F(InspectorGetEntryPointTest, EntryPointInOutVariables) {
|
||||
ASSERT_EQ(1u, result.size());
|
||||
|
||||
ASSERT_EQ(1u, result[0].input_variables.size());
|
||||
EXPECT_EQ("in_var", result[0].input_variables[0]);
|
||||
EXPECT_EQ("test_in_var", result[0].input_variables[0]);
|
||||
ASSERT_EQ(1u, result[0].output_variables.size());
|
||||
EXPECT_EQ("out_var", result[0].output_variables[0]);
|
||||
EXPECT_EQ("test_out_var", result[0].output_variables[0]);
|
||||
}
|
||||
|
||||
TEST_F(InspectorGetEntryPointTest, FunctionInOutVariables) {
|
||||
@ -892,9 +889,9 @@ TEST_F(InspectorGetEntryPointTest, FunctionInOutVariables) {
|
||||
ASSERT_EQ(1u, result.size());
|
||||
|
||||
ASSERT_EQ(1u, result[0].input_variables.size());
|
||||
EXPECT_EQ("in_var", result[0].input_variables[0]);
|
||||
EXPECT_EQ("test_in_var", result[0].input_variables[0]);
|
||||
ASSERT_EQ(1u, result[0].output_variables.size());
|
||||
EXPECT_EQ("out_var", result[0].output_variables[0]);
|
||||
EXPECT_EQ("test_out_var", result[0].output_variables[0]);
|
||||
}
|
||||
|
||||
TEST_F(InspectorGetEntryPointTest, RepeatedInOutVariables) {
|
||||
@ -919,9 +916,9 @@ TEST_F(InspectorGetEntryPointTest, RepeatedInOutVariables) {
|
||||
ASSERT_EQ(1u, result.size());
|
||||
|
||||
ASSERT_EQ(1u, result[0].input_variables.size());
|
||||
EXPECT_EQ("in_var", result[0].input_variables[0]);
|
||||
EXPECT_EQ("test_in_var", result[0].input_variables[0]);
|
||||
ASSERT_EQ(1u, result[0].output_variables.size());
|
||||
EXPECT_EQ("out_var", result[0].output_variables[0]);
|
||||
EXPECT_EQ("test_out_var", result[0].output_variables[0]);
|
||||
}
|
||||
|
||||
TEST_F(InspectorGetEntryPointTest, EntryPointMultipleInOutVariables) {
|
||||
@ -942,11 +939,11 @@ TEST_F(InspectorGetEntryPointTest, EntryPointMultipleInOutVariables) {
|
||||
ASSERT_EQ(1u, result.size());
|
||||
|
||||
ASSERT_EQ(2u, result[0].input_variables.size());
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "in_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "in2_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "test_in_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "test_in2_var"));
|
||||
ASSERT_EQ(2u, result[0].output_variables.size());
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "out_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "out2_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "test_out_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "test_out2_var"));
|
||||
}
|
||||
|
||||
TEST_F(InspectorGetEntryPointTest, FunctionMultipleInOutVariables) {
|
||||
@ -971,11 +968,11 @@ TEST_F(InspectorGetEntryPointTest, FunctionMultipleInOutVariables) {
|
||||
ASSERT_EQ(1u, result.size());
|
||||
|
||||
ASSERT_EQ(2u, result[0].input_variables.size());
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "in_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "in2_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "test_in_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "test_in2_var"));
|
||||
ASSERT_EQ(2u, result[0].output_variables.size());
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "out_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "out2_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "test_out_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "test_out2_var"));
|
||||
}
|
||||
|
||||
TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsInOutVariables) {
|
||||
@ -997,26 +994,24 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsInOutVariables) {
|
||||
|
||||
ASSERT_TRUE(td()->Determine()) << td()->error();
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto result = inspector()->GetEntryPoints();
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
|
||||
ASSERT_EQ(2u, result.size());
|
||||
|
||||
ASSERT_EQ("foo", result[0].name);
|
||||
ASSERT_EQ("foo", result[0].remapped_name);
|
||||
ASSERT_EQ("test_foo", result[0].remapped_name);
|
||||
ASSERT_EQ(1u, result[0].input_variables.size());
|
||||
EXPECT_EQ("in_var", result[0].input_variables[0]);
|
||||
EXPECT_EQ("test_in_var", result[0].input_variables[0]);
|
||||
ASSERT_EQ(1u, result[0].output_variables.size());
|
||||
EXPECT_EQ("out2_var", result[0].output_variables[0]);
|
||||
EXPECT_EQ("test_out2_var", result[0].output_variables[0]);
|
||||
|
||||
ASSERT_EQ("bar", result[1].name);
|
||||
ASSERT_EQ("bar", result[1].remapped_name);
|
||||
ASSERT_EQ("test_bar", result[1].remapped_name);
|
||||
ASSERT_EQ(1u, result[1].input_variables.size());
|
||||
EXPECT_EQ("in2_var", result[1].input_variables[0]);
|
||||
EXPECT_EQ("test_in2_var", result[1].input_variables[0]);
|
||||
ASSERT_EQ(1u, result[1].output_variables.size());
|
||||
EXPECT_EQ("out_var", result[1].output_variables[0]);
|
||||
EXPECT_EQ("test_out_var", result[1].output_variables[0]);
|
||||
}
|
||||
|
||||
TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsSharedInOutVariables) {
|
||||
@ -1042,42 +1037,36 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsSharedInOutVariables) {
|
||||
|
||||
ASSERT_TRUE(td()->Determine()) << td()->error();
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto result = inspector()->GetEntryPoints();
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
|
||||
ASSERT_EQ(2u, result.size());
|
||||
|
||||
ASSERT_EQ("foo", result[0].name);
|
||||
ASSERT_EQ("foo", result[0].remapped_name);
|
||||
ASSERT_EQ("test_foo", result[0].remapped_name);
|
||||
EXPECT_EQ(2u, result[0].input_variables.size());
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "in_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "in2_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "test_in_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].input_variables, "test_in2_var"));
|
||||
EXPECT_EQ(2u, result[0].output_variables.size());
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "out_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "out2_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "test_out_var"));
|
||||
EXPECT_TRUE(ContainsString(result[0].output_variables, "test_out2_var"));
|
||||
|
||||
ASSERT_EQ("bar", result[1].name);
|
||||
ASSERT_EQ("bar", result[1].remapped_name);
|
||||
ASSERT_EQ("test_bar", result[1].remapped_name);
|
||||
EXPECT_EQ(1u, result[1].input_variables.size());
|
||||
EXPECT_EQ("in2_var", result[1].input_variables[0]);
|
||||
EXPECT_EQ("test_in2_var", result[1].input_variables[0]);
|
||||
EXPECT_EQ(1u, result[1].output_variables.size());
|
||||
EXPECT_EQ("out2_var", result[1].output_variables[0]);
|
||||
EXPECT_EQ("test_out2_var", result[1].output_variables[0]);
|
||||
}
|
||||
|
||||
// TODO(rharrison): Reenable once GetRemappedNameForEntryPoint isn't a pass
|
||||
// through
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_NoFunctions) {
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, NoFunctions) {
|
||||
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
|
||||
ASSERT_TRUE(inspector()->has_error());
|
||||
|
||||
EXPECT_EQ("", result);
|
||||
}
|
||||
|
||||
// TODO(rharrison): Reenable once GetRemappedNameForEntryPoint isn't a pass
|
||||
// through
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_NoEntryPoints) {
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, NoEntryPoints) {
|
||||
mod->AddFunction(MakeEmptyBodyFunction("foo", {}));
|
||||
|
||||
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
|
||||
@ -1086,35 +1075,26 @@ TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_NoEntryPoints) {
|
||||
EXPECT_EQ("", result);
|
||||
}
|
||||
|
||||
// TODO(rharrison): Reenable once GetRemappedNameForEntryPoint isn't a pass
|
||||
// through
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_OneEntryPoint) {
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, OneEntryPoint) {
|
||||
auto* foo = MakeEmptyBodyFunction(
|
||||
"foo", ast::FunctionDecorationList{
|
||||
create<ast::StageDecoration>(ast::PipelineStage::kVertex),
|
||||
});
|
||||
mod->AddFunction(foo);
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
|
||||
EXPECT_EQ("foo", result);
|
||||
EXPECT_EQ("test_foo", result);
|
||||
}
|
||||
|
||||
// TODO(rharrison): Reenable once GetRemappedNameForEntryPoint isn't a pass
|
||||
// through
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest,
|
||||
DISABLED_MultipleEntryPoints) {
|
||||
TEST_F(InspectorGetRemappedNameForEntryPointTest, MultipleEntryPoints) {
|
||||
auto* foo = MakeEmptyBodyFunction(
|
||||
"foo", ast::FunctionDecorationList{
|
||||
create<ast::StageDecoration>(ast::PipelineStage::kVertex),
|
||||
});
|
||||
mod->AddFunction(foo);
|
||||
|
||||
// TODO(dsinclair): Update to run the namer transform when available.
|
||||
|
||||
auto* bar = MakeEmptyBodyFunction(
|
||||
"bar", ast::FunctionDecorationList{
|
||||
create<ast::StageDecoration>(ast::PipelineStage::kCompute),
|
||||
@ -1124,12 +1104,12 @@ TEST_F(InspectorGetRemappedNameForEntryPointTest,
|
||||
{
|
||||
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
EXPECT_EQ("foo", result);
|
||||
EXPECT_EQ("test_foo", result);
|
||||
}
|
||||
{
|
||||
auto result = inspector()->GetRemappedNameForEntryPoint("bar");
|
||||
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
|
||||
EXPECT_EQ("bar", result);
|
||||
EXPECT_EQ("test_bar", result);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user