Add Storage Texture bindings to GetResourceBindings
BUG=tint:647
Change-Id: Iebf8e71366cf816d46b1acca11c1a0a7f1183530
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/44900
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/inspector/inspector.cc b/src/inspector/inspector.cc
index a6d4a52..2447ce4 100644
--- a/src/inspector/inspector.cc
+++ b/src/inspector/inspector.cc
@@ -346,6 +346,10 @@
GetSampledTextureResourceBindings(entry_point));
AppendResourceBindings(&result,
GetMultisampledTextureResourceBindings(entry_point));
+ AppendResourceBindings(
+ &result, GetReadOnlyStorageTextureResourceBindings(entry_point));
+ AppendResourceBindings(
+ &result, GetWriteOnlyStorageTextureResourceBindings(entry_point));
AppendResourceBindings(&result, GetDepthTextureResourceBindings(entry_point));
return result;
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index 79e6d45..1ecb28b 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -1398,12 +1398,13 @@
AddStorageBuffer("sb_var", sb_control_type, 1, 0);
MakeStructVariableReferenceBodyFunction("sb_func", "sb_var", {{0, ty.i32()}});
- type::Struct* ro_struct_type;
- type::AccessControl* ro_control_type;
- std::tie(ro_struct_type, ro_control_type) =
- MakeReadOnlyStorageBufferTypes("ro_type", {ty.i32()});
- AddStorageBuffer("ro_var", ro_control_type, 1, 1);
- MakeStructVariableReferenceBodyFunction("ro_func", "ro_var", {{0, ty.i32()}});
+ type::Struct* rosb_struct_type;
+ type::AccessControl* rosb_control_type;
+ std::tie(rosb_struct_type, rosb_control_type) =
+ MakeReadOnlyStorageBufferTypes("rosb_type", {ty.i32()});
+ AddStorageBuffer("rosb_var", rosb_control_type, 1, 1);
+ MakeStructVariableReferenceBodyFunction("rosb_func", "rosb_var",
+ {{0, ty.i32()}});
auto* s_texture_type =
MakeSampledTextureType(type::TextureDimension::k1d, ty.f32());
@@ -1422,8 +1423,26 @@
MakeComparisonSamplerReferenceBodyFunction(
"cs_func", "cs_texture", "cs_var", "cs_coords", "cs_depth", ty.f32(), {});
+ type::StorageTexture* st_type;
+ type::Type* st_subtype;
+ type::AccessControl* st_ac;
+ std::tie(st_type, st_subtype, st_ac) = MakeStorageTextureTypes(
+ type::TextureDimension::k2d, type::ImageFormat::kR8Uint, false);
+ AddStorageTexture("st_var", st_ac, 4, 0);
+ MakeStorageTextureBodyFunction("st_func", "st_var", ty.vec2<i32>(), {});
+
+ type::StorageTexture* rost_type;
+ type::Type* rost_subtype;
+ type::AccessControl* rost_ac;
+ std::tie(rost_type, rost_subtype, rost_ac) = MakeStorageTextureTypes(
+ type::TextureDimension::k2d, type::ImageFormat::kR8Uint, true);
+ AddStorageTexture("rost_var", rost_ac, 4, 1);
+ MakeStorageTextureBodyFunction("rost_func", "rost_var", ty.vec2<i32>(), {});
+
MakeCallerBodyFunction(
- "ep_func", {"ub_func", "sb_func", "ro_func", "s_func", "cs_func"},
+ "ep_func",
+ {"ub_func", "sb_func", "rosb_func", "s_func", "cs_func", "st_func",
+ "rost_func"},
ast::DecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kVertex),
});
@@ -1432,7 +1451,7 @@
auto result = inspector.GetResourceBindings("ep_func");
ASSERT_FALSE(inspector.has_error()) << inspector.error();
- ASSERT_EQ(7u, result.size());
+ ASSERT_EQ(9u, result.size());
EXPECT_EQ(ResourceBinding::ResourceType::kUniformBuffer,
result[0].resource_type);
@@ -1463,10 +1482,20 @@
EXPECT_EQ(2u, result[5].bind_group);
EXPECT_EQ(0u, result[5].binding);
- EXPECT_EQ(ResourceBinding::ResourceType::kDepthTexture,
+ EXPECT_EQ(ResourceBinding::ResourceType::kReadOnlyStorageTexture,
result[6].resource_type);
- EXPECT_EQ(3u, result[6].bind_group);
+ EXPECT_EQ(4u, result[6].bind_group);
EXPECT_EQ(1u, result[6].binding);
+
+ EXPECT_EQ(ResourceBinding::ResourceType::kWriteOnlyStorageTexture,
+ result[7].resource_type);
+ EXPECT_EQ(4u, result[7].bind_group);
+ EXPECT_EQ(0u, result[7].binding);
+
+ EXPECT_EQ(ResourceBinding::ResourceType::kDepthTexture,
+ result[8].resource_type);
+ EXPECT_EQ(3u, result[8].bind_group);
+ EXPECT_EQ(1u, result[8].binding);
}
TEST_F(InspectorGetUniformBufferResourceBindingsTest, MissingEntryPoint) {