diff options
author | sfricke-samsung <46493288+sfricke-samsung@users.noreply.github.com> | 2021-01-25 06:51:21 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-25 09:51:21 -0500 |
commit | 819117cd48e7e03e2f145527177c7020cfb97721 (patch) | |
tree | 42503916f1d9174ea80df48f61b1352aabd48c9f | |
parent | 89ad2272baae9649b71312df0b1ca94a02be7814 (diff) | |
download | spirv-tools-819117cd48e7e03e2f145527177c7020cfb97721.tar.gz |
spirv-val: Label VUID 04662 (#4123)
-rw-r--r-- | source/val/validate_image.cpp | 1 | ||||
-rw-r--r-- | source/val/validation_state.cpp | 2 | ||||
-rw-r--r-- | test/val/val_image_test.cpp | 18 |
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 |