[ir][spirv-writer] Handle textureNumSamples
This just maps to OpImageQuerySamples without any changes.
Bug: tint:1906
Change-Id: I38a90687f47fdb256ec2785be7b6aa3328a8ce95
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/142025
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir.cc b/src/tint/writer/spirv/ir/generator_impl_ir.cc
index 2982f33..96596d07 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir.cc
@@ -1335,6 +1335,10 @@
module_.PushCapability(SpvCapabilityImageQuery);
op = spv::Op::OpImageQueryLevels;
break;
+ case builtin::Function::kTextureNumSamples:
+ module_.PushCapability(SpvCapabilityImageQuery);
+ op = spv::Op::OpImageQuerySamples;
+ break;
case builtin::Function::kTranspose:
op = spv::Op::OpTranspose;
break;
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc
index 13e49f4..9b27b6f 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc
@@ -1843,5 +1843,33 @@
}),
PrintCase);
+////////////////////////////////////////////////////////////////
+//// textureNumSamples
+////////////////////////////////////////////////////////////////
+using TextureNumSamples = TextureBuiltinTest;
+TEST_P(TextureNumSamples, Emit) {
+ Run(builtin::Function::kTextureNumSamples, kNoSampler);
+}
+INSTANTIATE_TEST_SUITE_P(SpvGeneratorImplTest,
+ TextureNumSamples,
+ testing::Values(
+ TextureBuiltinTestCase{
+ kMultisampledTexture,
+ type::TextureDimension::k2d,
+ /* texel type */ kF32,
+ {},
+ {"result", 1, kU32},
+ {"%result = OpImageQuerySamples %uint %t"},
+ },
+ TextureBuiltinTestCase{
+ kDepthMultisampledTexture,
+ type::TextureDimension::k2d,
+ /* texel type */ kF32,
+ {},
+ {"result", 1, kU32},
+ {"%result = OpImageQuerySamples %uint %t"},
+ }),
+ PrintCase);
+
} // namespace
} // namespace tint::writer::spirv