spirv-reader: WGSL does not support OpImageQueryLod

Bug: tint:109
Change-Id: Ife61dca63c605a456407140d5c4fdb6b4bfa97a0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/39681
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Auto-Submit: David Neto <dneto@google.com>
diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index e2e5e41..15e9988 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -539,6 +539,7 @@
     case SpvOpImageQuerySizeLod:
     case SpvOpImageQueryLevels:
     case SpvOpImageQuerySamples:
+    case SpvOpImageQueryLod:
       return true;
     default:
       break;
@@ -2945,14 +2946,14 @@
     return false;
   }
 
-  if (IsSampledImageAccess(inst.opcode()) || IsRawImageAccess(inst.opcode())) {
-    return EmitImageAccess(inst);
-  }
-
   if (IsImageQuery(inst.opcode())) {
     return EmitImageQuery(inst);
   }
 
+  if (IsSampledImageAccess(inst.opcode()) || IsRawImageAccess(inst.opcode())) {
+    return EmitImageAccess(inst);
+  }
+
   switch (inst.opcode()) {
     case SpvOpNop:
       return true;
@@ -4174,8 +4175,6 @@
     case SpvOpImageGather:
     case SpvOpImageDrefGather:
       return Fail() << " image gather is not yet supported";
-    case SpvOpImageQueryLod:
-      return Fail() << " image query Lod is not yet supported";
     case SpvOpImageFetch:
       // Read a single texel from a sampled image.
       builtin_name = "textureLoad";
@@ -4398,6 +4397,10 @@
           create<ast::TypeConstructorExpression>(Source{}, result_type, exprs)};
       return EmitConstDefOrWriteToHoistedVar(inst, expr);
     }
+    case SpvOpImageQueryLod:
+      return Fail() << "WGSL does not support querying the level of detail of "
+                       "an image: "
+                    << inst.PrettyPrint();
     case SpvOpImageQuerySizeLod:  // TODO(dneto)
     case SpvOpImageQueryLevels:   // TODO(dneto)
     case SpvOpImageQuerySamples:  // TODO(dneto)
diff --git a/src/reader/spirv/parser_impl_handle_test.cc b/src/reader/spirv/parser_impl_handle_test.cc
index 0a7143e..de34c44 100644
--- a/src/reader/spirv/parser_impl_handle_test.cc
+++ b/src/reader/spirv/parser_impl_handle_test.cc
@@ -4832,6 +4832,15 @@
               HasSubstr("WGSL does not support combined image-samplers: "));
 }
 
+INSTANTIATE_TEST_SUITE_P(
+    ImageQueryLod_IsError,
+    SpvParserTest_ImageCoordsTest,
+    ::testing::ValuesIn(std::vector<ImageCoordsCase>{
+        {"%float 2D 0 0 0 1 Unknown",
+         "%result = OpImageQueryLod %v2int %sampled_image %vf12",
+         "WGSL does not support querying the level of detail of an image: ",
+         {}}}));
+
 }  // namespace
 }  // namespace spirv
 }  // namespace reader