@@ -1447,7 +1447,8 @@ TEST_F(ValidateRayTracingReorderEXT,
14471447 EXPECT_EQ (SPV_SUCCESS, ValidateInstructions (SPV_ENV_VULKAN_1_2));
14481448}
14491449
1450- TEST_F (ValidateRayTracingReorderEXT, HitObjectRecordFromQueryEXT) {
1450+ TEST_F (ValidateRayTracingReorderEXT,
1451+ HitObjectRecordFromQueryEXTWithoutHitKind) {
14511452 const std::string cap = R"(
14521453 OpCapability RayQueryKHR
14531454 )" ;
@@ -1472,6 +1473,60 @@ TEST_F(ValidateRayTracingReorderEXT, HitObjectRecordFromQueryEXT) {
14721473 EXPECT_EQ (SPV_SUCCESS, ValidateInstructions (SPV_ENV_VULKAN_1_2));
14731474}
14741475
1476+ TEST_F (ValidateRayTracingReorderEXT, HitObjectRecordFromQueryEXTWithHitKind) {
1477+ const std::string cap = R"(
1478+ OpCapability RayQueryKHR
1479+ )" ;
1480+ const std::string extensions = R"(
1481+ OpExtension "SPV_KHR_ray_query"
1482+ )" ;
1483+ const std::string declarations = R"(
1484+ %uint = OpTypeInt 32 0
1485+ %uint_5 = OpConstant %uint 5
1486+ %uint_254 = OpConstant %uint 254
1487+ %rayquery_type = OpTypeRayQueryKHR
1488+ %_ptr_Function_rayquery = OpTypePointer Function %rayquery_type
1489+ )" ;
1490+
1491+ const std::string body = R"(
1492+ %ray_query = OpVariable %_ptr_Function_rayquery Function
1493+ OpHitObjectRecordFromQueryEXT %hObj %ray_query %uint_5 %attr %uint_254
1494+ )" ;
1495+
1496+ CompileSuccessfully (
1497+ GenerateReorderShaderCodeEXT (body, declarations, extensions, cap).c_str (),
1498+ SPV_ENV_VULKAN_1_2);
1499+ EXPECT_EQ (SPV_SUCCESS, ValidateInstructions (SPV_ENV_VULKAN_1_2));
1500+ }
1501+
1502+ TEST_F (ValidateRayTracingReorderEXT,
1503+ HitObjectRecordFromQueryEXTHitKindWrongType) {
1504+ const std::string cap = R"(
1505+ OpCapability RayQueryKHR
1506+ )" ;
1507+ const std::string extensions = R"(
1508+ OpExtension "SPV_KHR_ray_query"
1509+ )" ;
1510+ const std::string declarations = R"(
1511+ %uint = OpTypeInt 32 0
1512+ %uint_5 = OpConstant %uint 5
1513+ %rayquery_type = OpTypeRayQueryKHR
1514+ %_ptr_Function_rayquery = OpTypePointer Function %rayquery_type
1515+ )" ;
1516+
1517+ const std::string body = R"(
1518+ %ray_query = OpVariable %_ptr_Function_rayquery Function
1519+ OpHitObjectRecordFromQueryEXT %hObj %ray_query %uint_5 %attr %float_1
1520+ )" ;
1521+
1522+ CompileSuccessfully (
1523+ GenerateReorderShaderCodeEXT (body, declarations, extensions, cap).c_str (),
1524+ SPV_ENV_VULKAN_1_2);
1525+ EXPECT_EQ (SPV_ERROR_INVALID_DATA, ValidateInstructions (SPV_ENV_VULKAN_1_2));
1526+ EXPECT_THAT (getDiagnosticString (),
1527+ HasSubstr (" Hit Kind must be a 32-bit unsigned int scalar" ));
1528+ }
1529+
14751530TEST_F (ValidateRayTracingReorderEXT, HitObjectRecordMissMotionEXT) {
14761531 const std::string declarations = R"(
14771532 %uint = OpTypeInt 32 0
0 commit comments