Allow sampledimage types as operand of OpCopyObject (#3222)
diff --git a/source/val/validate_image.cpp b/source/val/validate_image.cpp
index ed960d1..5b77058 100644
--- a/source/val/validate_image.cpp
+++ b/source/val/validate_image.cpp
@@ -847,6 +847,7 @@
case SpvOpImageSparseSampleDrefExplicitLod:
case SpvOpImageSparseGather:
case SpvOpImageSparseDrefGather:
+ case SpvOpCopyObject:
return true;
default:
return false;
diff --git a/test/val/val_id_test.cpp b/test/val/val_id_test.cpp
index 019d91a..adea563 100644
--- a/test/val/val_id_test.cpp
+++ b/test/val/val_id_test.cpp
@@ -4355,6 +4355,17 @@
"'23' as an operand of <id> '24'."));
}
+TEST_F(ValidateIdWithMessage, OpCopyObjectSampledImageGood) {
+ std::string spirv = kGLSL450MemoryModel + sampledImageSetup + R"(
+%smpld_img = OpSampledImage %sampled_image_type %image_inst %sampler_inst
+%smpld_img2 = OpCopyObject %sampled_image_type %smpld_img
+%image_inst2 = OpCopyObject %image_type %image_inst
+OpReturn
+OpFunctionEnd)";
+ CompileSuccessfully(spirv.c_str());
+ EXPECT_EQ(SPV_SUCCESS, ValidateInstructions());
+}
+
// Valid: Get a float in a matrix using CompositeExtract.
// Valid: Insert float into a matrix using CompositeInsert.
TEST_F(ValidateIdWithMessage, CompositeExtractInsertGood) {