aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsfricke-samsung <46493288+sfricke-samsung@users.noreply.github.com>2021-01-25 06:51:21 -0800
committerGitHub <noreply@github.com>2021-01-25 09:51:21 -0500
commit819117cd48e7e03e2f145527177c7020cfb97721 (patch)
tree42503916f1d9174ea80df48f61b1352aabd48c9f
parent89ad2272baae9649b71312df0b1ca94a02be7814 (diff)
downloadspirv-tools-819117cd48e7e03e2f145527177c7020cfb97721.tar.gz
spirv-val: Label VUID 04662 (#4123)
-rw-r--r--source/val/validate_image.cpp1
-rw-r--r--source/val/validation_state.cpp2
-rw-r--r--test/val/val_image_test.cpp18
3 files changed, 21 insertions, 0 deletions
diff --git a/source/val/validate_image.cpp b/source/val/validate_image.cpp
index fc37f08b..78dfefa2 100644
--- a/source/val/validate_image.cpp
+++ b/source/val/validate_image.cpp
@@ -285,6 +285,7 @@ spv_result_t ValidateImageOperands(ValidationState_t& _,
mask & (SpvImageOperandsOffsetMask | SpvImageOperandsConstOffsetMask |
SpvImageOperandsConstOffsetsMask)) > 1) {
return _.diag(SPV_ERROR_INVALID_DATA, inst)
+ << _.VkErrorID(4662)
<< "Image Operands Offset, ConstOffset, ConstOffsets cannot be used "
<< "together";
}
diff --git a/source/val/validation_state.cpp b/source/val/validation_state.cpp
index cbe97584..791f0b9c 100644
--- a/source/val/validation_state.cpp
+++ b/source/val/validation_state.cpp
@@ -1700,6 +1700,8 @@ std::string ValidationState_t::VkErrorID(uint32_t id,
return VUID_WRAP(VUID-StandaloneSpirv-OpTypeImage-04657);
case 4658:
return VUID_WRAP(VUID-StandaloneSpirv-OpImageTexelPointer-04658);
+ case 4662:
+ return VUID_WRAP(VUID-StandaloneSpirv-Offset-04662);
case 4669:
return VUID_WRAP(VUID-StandaloneSpirv-GLSLShared-04669);
case 4675:
diff --git a/test/val/val_image_test.cpp b/test/val/val_image_test.cpp
index ce4bf1be..6fa5f22b 100644
--- a/test/val/val_image_test.cpp
+++ b/test/val/val_image_test.cpp
@@ -1782,6 +1782,24 @@ TEST_F(ValidateImage, SampleImplicitLodMoreThanOneOffset) {
"cannot be used together"));
}
+TEST_F(ValidateImage, SampleImplicitLodVulkanMoreThanOneOffset) {
+ const std::string body = R"(
+%img = OpLoad %type_image_f32_2d_0001 %uniform_image_f32_2d_0001
+%sampler = OpLoad %type_sampler %uniform_sampler
+%simg = OpSampledImage %type_sampled_image_f32_2d_0001 %img %sampler
+%res4 = OpImageSampleImplicitLod %f32vec4 %simg %f32vec4_0000 ConstOffset|Offset %s32vec2_01 %s32vec2_01
+)";
+
+ CompileSuccessfully(
+ GenerateShaderCode(body, "", "Fragment", "", SPV_ENV_VULKAN_1_0).c_str());
+ ASSERT_EQ(SPV_ERROR_INVALID_DATA, ValidateInstructions(SPV_ENV_VULKAN_1_0));
+ EXPECT_THAT(getDiagnosticString(),
+ AnyVUID("VUID-StandaloneSpirv-Offset-04662"));
+ EXPECT_THAT(getDiagnosticString(),
+ HasSubstr("Image Operands Offset, ConstOffset, ConstOffsets "
+ "cannot be used together"));
+}
+
TEST_F(ValidateImage, SampleImplicitLodMinLodWrongType) {
const std::string body = R"(
%img = OpLoad %type_image_f32_cube_0101 %uniform_image_f32_cube_0101