Automatically run the TypeDeterminer when building programs

Removes the need for Dawn to use the TypeDeterminer directly.
TypeDeterminer errors will be added to the Program diagnostics list.

Change-Id: I4cfb405e7e6b0e94727296eea872a3ddc4412b66
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/38921
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
Ben Clayton
2021-01-27 19:23:55 +00:00
committed by Commit Bot service account
parent 844217fa34
commit dd69ac3505
9 changed files with 33 additions and 132 deletions

View File

@@ -70,8 +70,7 @@ namespace {
class InspectorHelper : public ProgramBuilder {
public:
InspectorHelper()
: td_(std::make_unique<TypeDeterminer>(this)),
sampler_type_(type::SamplerKind::kSampler),
: sampler_type_(type::SamplerKind::kSampler),
comparison_sampler_type_(type::SamplerKind::kComparisonSampler) {}
/// Generates an empty function
@@ -623,8 +622,6 @@ class InspectorHelper : public ProgramBuilder {
return *inspector_;
}
TypeDeterminer* td() { return td_.get(); }
type::Array* u32_array_type(uint32_t count) {
if (array_type_memo_.find(count) == array_type_memo_.end()) {
array_type_memo_[count] =
@@ -808,11 +805,10 @@ TEST_F(InspectorGetEntryPointTest, MixFunctionsAndEntryPoints) {
}
TEST_F(InspectorGetEntryPointTest, DefaultWorkgroupSize) {
auto* foo = MakeCallerBodyFunction(
"foo", "func",
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kVertex),
});
auto* foo = MakeEmptyBodyFunction(
"foo", ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kVertex),
});
AST().Functions().Add(foo);
Inspector& inspector = Build();
@@ -880,8 +876,6 @@ TEST_F(InspectorGetEntryPointTest, EntryPointInOutVariables) {
});
AST().Functions().Add(foo);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetEntryPoints();
@@ -913,8 +907,6 @@ TEST_F(InspectorGetEntryPointTest, FunctionInOutVariables) {
});
AST().Functions().Add(foo);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetEntryPoints();
@@ -946,8 +938,6 @@ TEST_F(InspectorGetEntryPointTest, RepeatedInOutVariables) {
});
AST().Functions().Add(foo);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetEntryPoints();
@@ -975,8 +965,6 @@ TEST_F(InspectorGetEntryPointTest, EntryPointMultipleInOutVariables) {
});
AST().Functions().Add(foo);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetEntryPoints();
@@ -1014,8 +1002,6 @@ TEST_F(InspectorGetEntryPointTest, FunctionMultipleInOutVariables) {
});
AST().Functions().Add(foo);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetEntryPoints();
@@ -1057,8 +1043,6 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsInOutVariables) {
});
AST().Functions().Add(bar);
ASSERT_TRUE(td()->Determine()) << td()->error();
// TODO(dsinclair): Update to run the namer transform when
// available.
@@ -1113,8 +1097,6 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsSharedInOutVariables) {
});
AST().Functions().Add(bar);
ASSERT_TRUE(td()->Determine()) << td()->error();
// TODO(dsinclair): Update to run the namer transform when
// available.
@@ -1175,8 +1157,6 @@ TEST_F(InspectorGetEntryPointTest, BuiltInsNotStageVariables) {
});
AST().Functions().Add(foo);
ASSERT_TRUE(td()->Determine()) << td()->error();
// TODO(dsinclair): Update to run the namer transform when available.
Inspector& inspector = Build();
@@ -1395,8 +1375,6 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, NonEntryPointFunc) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetUniformBufferResourceBindings("ub_func");
@@ -1425,8 +1403,6 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, MissingBlockDeco) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetUniformBufferResourceBindings("ep_func");
@@ -1452,8 +1428,6 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, Simple) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetUniformBufferResourceBindings("ep_func");
@@ -1483,8 +1457,6 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, MultipleMembers) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetUniformBufferResourceBindings("ep_func");
@@ -1529,8 +1501,6 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, MultipleUniformBuffers) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetUniformBufferResourceBindings("ep_func");
@@ -1568,8 +1538,6 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, ContainingArray) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetUniformBufferResourceBindings("ep_func");
@@ -1599,8 +1567,6 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, Simple) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetStorageBufferResourceBindings("ep_func");
@@ -1630,8 +1596,6 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, MultipleMembers) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetStorageBufferResourceBindings("ep_func");
@@ -1679,8 +1643,6 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, MultipleStorageBuffers) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetStorageBufferResourceBindings("ep_func");
@@ -1718,8 +1680,6 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, ContainingArray) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetStorageBufferResourceBindings("ep_func");
@@ -1749,8 +1709,6 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, ContainingRuntimeArray) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetStorageBufferResourceBindings("ep_func");
@@ -1780,8 +1738,6 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, SkipReadOnly) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetStorageBufferResourceBindings("ep_func");
@@ -1807,8 +1763,6 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest, Simple) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetReadOnlyStorageBufferResourceBindings("ep_func");
@@ -1857,8 +1811,6 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest,
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetReadOnlyStorageBufferResourceBindings("ep_func");
@@ -1896,8 +1848,6 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest, ContainingArray) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetReadOnlyStorageBufferResourceBindings("ep_func");
@@ -1928,8 +1878,6 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest,
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetReadOnlyStorageBufferResourceBindings("ep_func");
@@ -1959,8 +1907,6 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest, SkipNonReadOnly) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetReadOnlyStorageBufferResourceBindings("ep_func");
@@ -1982,8 +1928,6 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, Simple) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSamplerResourceBindings("ep");
@@ -2001,8 +1945,6 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, NoSampler) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSamplerResourceBindings("ep_func");
@@ -2029,8 +1971,6 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, InFunction) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSamplerResourceBindings("ep_func");
@@ -2055,8 +1995,6 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, UnknownEntryPoint) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSamplerResourceBindings("foo");
@@ -2077,8 +2015,6 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, SkipsComparisonSamplers) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSamplerResourceBindings("ep");
@@ -2101,8 +2037,6 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, Simple) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetComparisonSamplerResourceBindings("ep");
@@ -2120,8 +2054,6 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, NoSampler) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetComparisonSamplerResourceBindings("ep_func");
@@ -2149,8 +2081,6 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, InFunction) {
});
AST().Functions().Add(ep_func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetComparisonSamplerResourceBindings("ep_func");
@@ -2175,8 +2105,6 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, UnknownEntryPoint) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSamplerResourceBindings("foo");
@@ -2197,8 +2125,6 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, SkipsSamplers) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetComparisonSamplerResourceBindings("ep");
@@ -2239,8 +2165,6 @@ TEST_P(InspectorGetSampledTextureResourceBindingsTestWithParam, textureSample) {
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSampledTextureResourceBindings("ep");
@@ -2332,8 +2256,6 @@ TEST_P(InspectorGetSampledArrayTextureResourceBindingsTestWithParam,
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetSampledTextureResourceBindings("ep");
@@ -2405,8 +2327,6 @@ TEST_P(InspectorGetMultisampledTextureResourceBindingsTestWithParam,
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetMultisampledTextureResourceBindings("ep");
@@ -2489,8 +2409,6 @@ TEST_P(InspectorGetMultisampledArrayTextureResourceBindingsTestWithParam,
});
AST().Functions().Add(func);
ASSERT_TRUE(td()->Determine()) << td()->error();
Inspector& inspector = Build();
auto result = inspector.GetMultisampledTextureResourceBindings("ep");