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