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) {