Lines Matching refs:decoration

50 //   (member index is taken from decoration).
59 const Decoration& decoration,
62 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
69 *underlying_type = inst.word(decoration.struct_member_index() + 2);
89 << " is decorated with BuiltIn. BuiltIn decoration should only be "
254 // Goes through all decorations in the module, if decoration is BuiltIn
258 // Validates the instruction defining an id with built-in decoration.
261 spv_result_t ValidateSingleBuiltInAtDefinition(const Decoration& decoration,
265 // by |inst| is decorated with BuiltIn |decoration|.
270 const Decoration& decoration, const Instruction& inst);
271 spv_result_t ValidateFragCoordAtDefinition(const Decoration& decoration,
273 spv_result_t ValidateFragDepthAtDefinition(const Decoration& decoration,
275 spv_result_t ValidateFrontFacingAtDefinition(const Decoration& decoration,
278 const Decoration& decoration, const Instruction& inst);
279 spv_result_t ValidateInvocationIdAtDefinition(const Decoration& decoration,
281 spv_result_t ValidateInstanceIndexAtDefinition(const Decoration& decoration,
284 const Decoration& decoration, const Instruction& inst);
285 spv_result_t ValidatePatchVerticesAtDefinition(const Decoration& decoration,
287 spv_result_t ValidatePointCoordAtDefinition(const Decoration& decoration,
289 spv_result_t ValidatePointSizeAtDefinition(const Decoration& decoration,
291 spv_result_t ValidatePositionAtDefinition(const Decoration& decoration,
293 spv_result_t ValidatePrimitiveIdAtDefinition(const Decoration& decoration,
295 spv_result_t ValidateSampleIdAtDefinition(const Decoration& decoration,
297 spv_result_t ValidateSampleMaskAtDefinition(const Decoration& decoration,
299 spv_result_t ValidateSamplePositionAtDefinition(const Decoration& decoration,
301 spv_result_t ValidateTessCoordAtDefinition(const Decoration& decoration,
303 spv_result_t ValidateTessLevelOuterAtDefinition(const Decoration& decoration,
305 spv_result_t ValidateTessLevelInnerAtDefinition(const Decoration& decoration,
307 spv_result_t ValidateVertexIndexAtDefinition(const Decoration& decoration,
309 spv_result_t ValidateVertexIdAtDefinition(const Decoration& decoration,
312 const Decoration& decoration, const Instruction& inst);
313 spv_result_t ValidateWorkgroupSizeAtDefinition(const Decoration& decoration,
316 const Decoration& decoration, const Instruction& inst);
317 spv_result_t ValidateDrawIndexAtDefinition(const Decoration& decoration,
319 spv_result_t ValidateViewIndexAtDefinition(const Decoration& decoration,
321 spv_result_t ValidateDeviceIndexAtDefinition(const Decoration& decoration,
323 spv_result_t ValidateFragInvocationCountAtDefinition(const Decoration& decoration,
325 spv_result_t ValidateFragSizeAtDefinition(const Decoration& decoration,
327 spv_result_t ValidateFragStencilRefAtDefinition(const Decoration& decoration,
329 spv_result_t ValidateFullyCoveredAtDefinition(const Decoration& decoration,
333 const Decoration& decoration, const Instruction& inst);
334 spv_result_t ValidateNVSMOrARMCoreBuiltinsAtDefinition(const Decoration& decoration,
338 const Decoration& decoration, const Instruction& inst);
341 spv_result_t ValidateI32Vec4InputAtDefinition(const Decoration& decoration,
344 spv_result_t ValidateI32InputAtDefinition(const Decoration& decoration,
347 spv_result_t ValidateComputeI32InputAtDefinition(const Decoration& decoration,
351 const Decoration& decoration, const Instruction& inst);
353 spv_result_t ValidateShadingRateAtDefinition(const Decoration& decoration,
357 const Decoration& decoration, const Instruction& inst);
363 // |decoration|. Most functions are specific to a single built-in and have
367 const Decoration& decoration, const Instruction& built_in_inst,
372 const Decoration& decoration, const Instruction& built_in_inst,
377 const Decoration& decoration, const Instruction& built_in_inst,
382 const Decoration& decoration, const Instruction& built_in_inst,
387 const Decoration& decoration, const Instruction& built_in_inst,
392 const Decoration& decoration, const Instruction& built_in_inst,
397 const Decoration& decoration, const Instruction& built_in_inst,
402 const Decoration& decoration, const Instruction& built_in_inst,
407 const Decoration& decoration, const Instruction& built_in_inst,
412 const Decoration& decoration, const Instruction& built_in_inst,
417 const Decoration& decoration, const Instruction& built_in_inst,
422 const Decoration& decoration, const Instruction& built_in_inst,
427 const Decoration& decoration, const Instruction& built_in_inst,
432 const Decoration& decoration, const Instruction& built_in_inst,
437 const Decoration& decoration, const Instruction& built_in_inst,
442 const Decoration& decoration, const Instruction& built_in_inst,
447 const Decoration& decoration, const Instruction& built_in_inst,
452 const Decoration& decoration, const Instruction& built_in_inst,
457 const Decoration& decoration, const Instruction& built_in_inst,
462 const Decoration& decoration, const Instruction& built_in_inst,
467 const Decoration& decoration, const Instruction& built_in_inst,
472 const Decoration& decoration, const Instruction& built_in_inst,
477 const Decoration& decoration, const Instruction& built_in_inst,
482 const Decoration& decoration, const Instruction& built_in_inst,
487 const Decoration& decoration, const Instruction& built_in_inst,
492 const Decoration& decoration, const Instruction& built_in_inst,
497 const Decoration& decoration, const Instruction& built_in_inst,
502 const Decoration& decoration, const Instruction& built_in_inst,
507 const Decoration& decoration, const Instruction& built_in_inst,
513 const Decoration& decoration, const Instruction& built_in_inst,
519 const Decoration& decoration, const Instruction& built_in_inst,
525 const Decoration& decoration, const Instruction& built_in_inst,
530 const Decoration& decoration, const Instruction& built_in_inst,
535 const Decoration& decoration, const Instruction& built_in_inst,
540 const Decoration& decoration, const Instruction& built_in_inst,
545 const Decoration& decoration, const Instruction& built_in_inst,
554 // |decoration| - BuiltIn decoration which causes the restriction.
561 const Decoration& decoration, const Instruction& built_in_inst,
569 const Decoration& decoration, const Instruction& inst,
572 const Decoration& decoration, const Instruction& inst,
575 const Decoration& decoration, const Instruction& inst,
578 const Decoration& decoration, const Instruction& inst,
582 const Decoration& decoration, const Instruction& inst,
585 const Decoration& decoration, const Instruction& inst,
588 const Decoration& decoration, const Instruction& inst,
592 const Decoration& decoration, const Instruction& inst,
595 const Decoration& decoration, const Instruction& inst,
598 const Decoration& decoration, const Instruction& inst,
602 const Decoration& decoration, const Instruction& inst,
606 const Decoration& decoration, const Instruction& inst,
610 const Decoration& decoration, const Instruction& inst,
616 const Decoration& decoration, const Instruction& inst,
620 const Decoration& decoration, const Instruction& inst,
624 const Decoration& decoration, const Instruction& inst,
629 const Decoration& decoration, const Instruction& inst,
634 std::string GetDefinitionDesc(const Decoration& decoration,
640 const Decoration& decoration, const Instruction& built_in_inst,
702 const Decoration& decoration, const Instruction& inst) const {
704 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
706 ss << "Member #" << decoration.struct_member_index();
715 const Decoration& decoration, const Instruction& built_in_inst,
727 decoration.params()[0]);
751 const Decoration& decoration, const Instruction& inst,
755 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
760 return diag(GetDefinitionDesc(decoration, inst) + " is not a bool scalar.");
767 const Decoration& decoration, const Instruction& inst,
771 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
776 return diag(GetDefinitionDesc(decoration, inst) + " is not an int scalar.");
783 const Decoration& decoration, const Instruction& inst,
787 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
791 return ValidateI32Helper(decoration, inst, diag, underlying_type);
795 const Decoration& decoration, const Instruction& inst,
799 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
808 return ValidateI32Helper(decoration, inst, diag, underlying_type);
812 const Decoration& decoration, const Instruction& inst,
816 return diag(GetDefinitionDesc(decoration, inst) + " is not an int scalar.");
822 ss << GetDefinitionDesc(decoration, inst) << " has bit width " << bit_width
831 const Decoration& decoration, const Instruction& inst,
835 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
844 return ValidateF32Helper(decoration, inst, diag, underlying_type);
848 const Decoration& decoration, const Instruction& inst,
852 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
856 return ValidateF32Helper(decoration, inst, diag, underlying_type);
860 const Decoration& decoration, const Instruction& inst,
864 return diag(GetDefinitionDesc(decoration, inst) +
871 ss << GetDefinitionDesc(decoration, inst) << " has bit width " << bit_width
880 const Decoration& decoration, const Instruction& inst,
885 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
890 return diag(GetDefinitionDesc(decoration, inst) + " is not an int vector.");
896 ss << GetDefinitionDesc(decoration, inst) << " has "
904 ss << GetDefinitionDesc(decoration, inst)
913 const Decoration& decoration, const Instruction& inst,
918 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
927 return ValidateF32VecHelper(decoration, inst, num_components, diag,
932 const Decoration& decoration, const Instruction& inst,
937 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
941 return ValidateF32VecHelper(decoration, inst, num_components, diag,
946 const Decoration& decoration, const Instruction& inst,
951 return diag(GetDefinitionDesc(decoration, inst) +
958 ss << GetDefinitionDesc(decoration, inst) << " has "
966 ss << GetDefinitionDesc(decoration, inst)
975 const Decoration& decoration, const Instruction& inst,
979 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
985 return diag(GetDefinitionDesc(decoration, inst) + " is not an array.");
990 return diag(GetDefinitionDesc(decoration, inst) +
997 ss << GetDefinitionDesc(decoration, inst)
1006 const Decoration& decoration, const Instruction& inst,
1011 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
1015 return ValidateF32ArrHelper(decoration, inst, num_components, diag,
1020 const Decoration& decoration, const Instruction& inst,
1025 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
1037 return ValidateF32ArrHelper(decoration, inst, num_components, diag,
1042 const Decoration& decoration, const Instruction& inst,
1048 return diag(GetDefinitionDesc(decoration, inst) + " is not an array.");
1053 return diag(GetDefinitionDesc(decoration, inst) +
1060 ss << GetDefinitionDesc(decoration, inst)
1072 ss << GetDefinitionDesc(decoration, inst) << " has "
1082 const Decoration& decoration, const Instruction& inst,
1091 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
1098 ss << GetDefinitionDesc(decoration, inst) << " has columns " << num_cols
1104 return ValidateF32VecHelper(decoration, inst, req_num_rows, diag, col_type);
1109 const Decoration& decoration, const Instruction& built_in_inst,
1117 SPV_OPERAND_TYPE_BUILT_IN, decoration.params()[0]);
1132 vuid, comment, execution_model, decoration, built_in_inst,
1139 const Decoration& decoration, const Instruction& inst) {
1141 return ValidateClipOrCullDistanceAtReference(decoration, inst, inst, inst);
1145 const Decoration& decoration, const Instruction& built_in_inst,
1148 uint32_t operand = decoration.params()[0];
1154 uint32_t vuid = (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance) ? 4190 : 4199;
1161 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1168 uint32_t vuid = (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance) ? 4188 : 4197;
1174 spv::ExecutionModel::Vertex, decoration, built_in_inst,
1181 spv::ExecutionModel::MeshNV, decoration, built_in_inst,
1188 spv::ExecutionModel::MeshEXT, decoration, built_in_inst,
1194 uint32_t vuid = (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance) ? 4189 : 4198;
1200 spv::ExecutionModel::Fragment, decoration, built_in_inst,
1209 decoration, built_in_inst, /* Any number of components */ 0,
1210 [this, &decoration, &referenced_from_inst](
1213 (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance)
1221 decoration.params()[0])
1234 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
1237 decoration, built_in_inst, /* Any number of components */ 0,
1238 [this, &decoration, &referenced_from_inst](
1241 (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance)
1250 decoration.params()[0])
1258 decoration, built_in_inst, /* Any number of components */ 0,
1259 [this, &decoration, &referenced_from_inst](
1262 (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance)
1271 decoration.params()[0])
1283 (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::ClipDistance) ? 4187 : 4196;
1291 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1302 this, decoration, built_in_inst, referenced_from_inst,
1310 const Decoration& decoration, const Instruction& inst) {
1313 decoration, inst, 4,
1328 return ValidateFragCoordAtReference(decoration, inst, inst, inst);
1332 const Decoration& decoration, const Instruction& built_in_inst,
1343 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1355 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1364 &BuiltInsValidator::ValidateFragCoordAtReference, this, decoration,
1372 const Decoration& decoration, const Instruction& inst) {
1375 decoration, inst,
1389 return ValidateFragDepthAtReference(decoration, inst, inst, inst);
1393 const Decoration& decoration, const Instruction& built_in_inst,
1404 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1416 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1431 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1440 &BuiltInsValidator::ValidateFragDepthAtReference, this, decoration,
1448 const Decoration& decoration, const Instruction& inst) {
1451 decoration, inst,
1465 return ValidateFrontFacingAtReference(decoration, inst, inst, inst);
1469 const Decoration& decoration, const Instruction& built_in_inst,
1480 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1492 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1501 &BuiltInsValidator::ValidateFrontFacingAtReference, this, decoration,
1509 const Decoration& decoration, const Instruction& inst) {
1512 decoration, inst,
1525 return ValidateHelperInvocationAtReference(decoration, inst, inst, inst);
1529 const Decoration& decoration, const Instruction& built_in_inst,
1540 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1551 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1561 decoration, built_in_inst, referenced_from_inst,
1569 const Decoration& decoration, const Instruction& inst) {
1572 decoration, inst,
1585 return ValidateInvocationIdAtReference(decoration, inst, inst, inst);
1589 const Decoration& decoration, const Instruction& built_in_inst,
1600 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1612 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1621 &BuiltInsValidator::ValidateInvocationIdAtReference, this, decoration,
1629 const Decoration& decoration, const Instruction& inst) {
1632 decoration, inst,
1646 return ValidateInstanceIndexAtReference(decoration, inst, inst, inst);
1650 const Decoration& decoration, const Instruction& built_in_inst,
1661 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1673 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1682 &BuiltInsValidator::ValidateInstanceIndexAtReference, this, decoration,
1690 const Decoration& decoration, const Instruction& inst) {
1693 decoration, inst,
1706 return ValidatePatchVerticesAtReference(decoration, inst, inst, inst);
1710 const Decoration& decoration, const Instruction& built_in_inst,
1721 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1734 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1743 &BuiltInsValidator::ValidatePatchVerticesAtReference, this, decoration,
1751 const Decoration& decoration, const Instruction& inst) {
1754 decoration, inst, 2,
1768 return ValidatePointCoordAtReference(decoration, inst, inst, inst);
1772 const Decoration& decoration, const Instruction& built_in_inst,
1783 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1794 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1803 &BuiltInsValidator::ValidatePointCoordAtReference, this, decoration,
1811 const Decoration& decoration, const Instruction& inst) {
1813 return ValidatePointSizeAtReference(decoration, inst, inst, inst);
1817 const Decoration& decoration, const Instruction& built_in_inst,
1829 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1841 spv::ExecutionModel::Vertex, decoration, built_in_inst,
1849 decoration, built_in_inst,
1870 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
1873 decoration, built_in_inst,
1888 decoration, built_in_inst,
1911 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1921 &BuiltInsValidator::ValidatePointSizeAtReference, this, decoration,
1929 const Decoration& decoration, const Instruction& inst) {
1931 return ValidatePositionAtReference(decoration, inst, inst, inst);
1935 const Decoration& decoration, const Instruction& built_in_inst,
1946 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
1958 spv::ExecutionModel::Vertex, decoration, built_in_inst,
1965 spv::ExecutionModel::MeshNV, decoration, built_in_inst,
1972 spv::ExecutionModel::MeshEXT, decoration, built_in_inst,
1980 decoration, built_in_inst, 4,
2003 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
2007 decoration, built_in_inst, 4,
2022 decoration, built_in_inst, 4,
2045 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2055 &BuiltInsValidator::ValidatePositionAtReference, this, decoration,
2063 const Decoration& decoration, const Instruction& inst) {
2067 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
2070 decoration, inst,
2082 decoration, inst,
2096 return ValidatePrimitiveIdAtReference(decoration, inst, inst, inst);
2100 const Decoration& decoration, const Instruction& built_in_inst,
2111 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2123 spv::ExecutionModel::TessellationControl, decoration, built_in_inst,
2130 spv::ExecutionModel::TessellationEvaluation, decoration, built_in_inst,
2137 spv::ExecutionModel::Fragment, decoration, built_in_inst,
2144 spv::ExecutionModel::IntersectionKHR, decoration, built_in_inst,
2151 spv::ExecutionModel::AnyHitKHR, decoration, built_in_inst,
2158 spv::ExecutionModel::ClosestHitKHR, decoration, built_in_inst,
2184 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2194 &BuiltInsValidator::ValidatePrimitiveIdAtReference, this, decoration,
2202 const Decoration& decoration, const Instruction& inst) {
2205 decoration, inst,
2218 return ValidateSampleIdAtReference(decoration, inst, inst, inst);
2222 const Decoration& decoration, const Instruction& built_in_inst,
2233 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2244 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2253 &BuiltInsValidator::ValidateSampleIdAtReference, this, decoration,
2261 const Decoration& decoration, const Instruction& inst) {
2264 decoration, inst,
2277 return ValidateSampleMaskAtReference(decoration, inst, inst, inst);
2281 const Decoration& decoration, const Instruction& built_in_inst,
2293 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2305 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2314 &BuiltInsValidator::ValidateSampleMaskAtReference, this, decoration,
2322 const Decoration& decoration, const Instruction& inst) {
2325 decoration, inst, 2,
2339 return ValidateSamplePositionAtReference(decoration, inst, inst, inst);
2343 const Decoration& decoration, const Instruction& built_in_inst,
2355 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2367 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2376 &BuiltInsValidator::ValidateSamplePositionAtReference, this, decoration,
2384 const Decoration& decoration, const Instruction& inst) {
2387 decoration, inst, 3,
2401 return ValidateTessCoordAtReference(decoration, inst, inst, inst);
2405 const Decoration& decoration, const Instruction& built_in_inst,
2416 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2427 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2436 &BuiltInsValidator::ValidateTessCoordAtReference, this, decoration,
2444 const Decoration& decoration, const Instruction& inst) {
2447 decoration, inst, 4,
2461 return ValidateTessLevelAtReference(decoration, inst, inst, inst);
2465 const Decoration& decoration, const Instruction& inst) {
2468 decoration, inst, 2,
2482 return ValidateTessLevelAtReference(decoration, inst, inst, inst);
2486 const Decoration& decoration, const Instruction& built_in_inst,
2489 uint32_t operand = decoration.params()[0];
2501 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2508 uint32_t vuid = (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::TessLevelOuter) ? 4391 : 4395;
2515 spv::ExecutionModel::TessellationControl, decoration, built_in_inst,
2521 uint32_t vuid = (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::TessLevelOuter) ? 4392 : 4396;
2528 spv::ExecutionModel::TessellationEvaluation, decoration, built_in_inst,
2548 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2558 &BuiltInsValidator::ValidateTessLevelAtReference, this, decoration,
2566 const Decoration& decoration, const Instruction& inst) {
2569 decoration, inst,
2583 return ValidateVertexIndexAtReference(decoration, inst, inst, inst);
2587 const Decoration& decoration, const Instruction& inst) {
2588 (void)decoration;
2599 const Decoration& decoration, const Instruction& inst) {
2601 return ValidateLocalInvocationIndexAtReference(decoration, inst, inst, inst);
2605 const Decoration& decoration, const Instruction& built_in_inst,
2612 this, decoration, built_in_inst, referenced_from_inst,
2620 const Decoration& decoration, const Instruction& built_in_inst,
2631 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2643 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2652 &BuiltInsValidator::ValidateVertexIndexAtReference, this, decoration,
2660 const Decoration& decoration, const Instruction& inst) {
2664 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
2667 decoration, inst,
2668 [this, &decoration,
2671 (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::Layer) ? 4276 : 4408;
2676 SPV_OPERAND_TYPE_BUILT_IN, decoration.params()[0])
2684 decoration, inst,
2685 [this, &decoration,
2688 (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::Layer) ? 4276 : 4408;
2693 SPV_OPERAND_TYPE_BUILT_IN, decoration.params()[0])
2703 return ValidateLayerOrViewportIndexAtReference(decoration, inst, inst, inst);
2707 const Decoration& decoration, const Instruction& built_in_inst,
2710 uint32_t operand = decoration.params()[0];
2722 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2741 em, decoration, built_in_inst, referenced_from_inst,
2756 spv::ExecutionModel::Fragment, decoration, built_in_inst,
2803 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2814 this, decoration, built_in_inst, referenced_from_inst,
2822 const Decoration& decoration, const Instruction& inst) {
2824 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
2826 decoration, inst, 3,
2844 return ValidateFragmentShaderF32Vec3InputAtReference(decoration, inst, inst,
2849 const Decoration& decoration, const Instruction& built_in_inst,
2854 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
2864 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2878 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2888 decoration, built_in_inst, referenced_from_inst,
2896 const Decoration& decoration, const Instruction& inst) {
2898 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
2900 decoration, inst, 3,
2918 return ValidateComputeShaderI32Vec3InputAtReference(decoration, inst, inst,
2923 const Decoration& decoration, const Instruction& built_in_inst,
2927 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
2937 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2958 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
2968 decoration, built_in_inst, referenced_from_inst,
2976 const Decoration& decoration, const Instruction& inst) {
2978 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
2979 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
2983 << " cannot be used as a member decoration ";
2986 decoration, inst,
3004 return ValidateComputeI32InputAtReference(decoration, inst, inst, inst);
3008 const Decoration& decoration, const Instruction& built_in_inst,
3012 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3023 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3043 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3053 decoration, built_in_inst, referenced_from_inst,
3061 const Decoration& decoration, const Instruction& inst) {
3063 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3064 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
3068 << " cannot be used as a member decoration ";
3071 decoration, inst,
3095 << GetReferenceDesc(decoration, inst, inst, inst) << " "
3104 const Decoration& decoration, const Instruction& inst) {
3106 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3107 if (decoration.struct_member_index() != Decoration::kInvalidMember) {
3111 << " cannot be used as a member decoration ";
3114 decoration, inst, 4,
3140 << GetReferenceDesc(decoration, inst, inst, inst) << " "
3149 const Decoration& decoration, const Instruction& inst) {
3161 decoration, inst, 3,
3175 return ValidateWorkgroupSizeAtReference(decoration, inst, inst, inst);
3179 const Decoration& decoration, const Instruction& built_in_inst,
3194 decoration.params()[0])
3197 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3206 &BuiltInsValidator::ValidateWorkgroupSizeAtReference, this, decoration,
3214 const Decoration& decoration, const Instruction& inst) {
3217 decoration, inst,
3219 &decoration](const std::string& message) -> spv_result_t {
3220 uint32_t vuid = (spv::BuiltIn(decoration.params()[0]) == spv::BuiltIn::BaseInstance)
3227 decoration.params()[0])
3235 return ValidateBaseInstanceOrVertexAtReference(decoration, inst, inst, inst);
3239 const Decoration& decoration, const Instruction& built_in_inst,
3242 uint32_t operand = decoration.params()[0];
3253 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3266 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3276 this, decoration, built_in_inst, referenced_from_inst,
3284 const Decoration& decoration, const Instruction& inst) {
3287 decoration, inst,
3289 &decoration](const std::string& message) -> spv_result_t {
3294 decoration.params()[0])
3302 return ValidateDrawIndexAtReference(decoration, inst, inst, inst);
3306 const Decoration& decoration, const Instruction& built_in_inst,
3309 uint32_t operand = decoration.params()[0];
3319 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3337 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3346 &BuiltInsValidator::ValidateDrawIndexAtReference, this, decoration,
3354 const Decoration& decoration, const Instruction& inst) {
3357 decoration, inst,
3359 &decoration](const std::string& message) -> spv_result_t {
3364 decoration.params()[0])
3372 return ValidateViewIndexAtReference(decoration, inst, inst, inst);
3376 const Decoration& decoration, const Instruction& built_in_inst,
3379 uint32_t operand = decoration.params()[0];
3389 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3401 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3410 &BuiltInsValidator::ValidateViewIndexAtReference, this, decoration,
3418 const Decoration& decoration, const Instruction& inst) {
3421 decoration, inst,
3423 &decoration](const std::string& message) -> spv_result_t {
3428 decoration.params()[0])
3436 return ValidateDeviceIndexAtReference(decoration, inst, inst, inst);
3440 const Decoration& decoration, const Instruction& built_in_inst,
3443 uint32_t operand = decoration.params()[0];
3453 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3462 &BuiltInsValidator::ValidateDeviceIndexAtReference, this, decoration,
3469 spv_result_t BuiltInsValidator::ValidateFragInvocationCountAtDefinition(const Decoration& decoration,
3473 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3475 decoration, inst,
3491 return ValidateFragInvocationCountAtReference(decoration, inst, inst, inst);
3495 const Decoration& decoration, const Instruction& built_in_inst,
3500 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3510 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3524 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3533 &BuiltInsValidator::ValidateFragInvocationCountAtReference, this, decoration,
3540 spv_result_t BuiltInsValidator::ValidateFragSizeAtDefinition(const Decoration& decoration,
3543 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3545 decoration, inst, 2,
3561 return ValidateFragSizeAtReference(decoration, inst, inst, inst);
3565 const Decoration& decoration, const Instruction& built_in_inst,
3570 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3580 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3594 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3603 &BuiltInsValidator::ValidateFragSizeAtReference, this, decoration,
3610 spv_result_t BuiltInsValidator::ValidateFragStencilRefAtDefinition(const Decoration& decoration,
3613 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3615 decoration, inst,
3631 return ValidateFragStencilRefAtReference(decoration, inst, inst, inst);
3635 const Decoration& decoration, const Instruction& built_in_inst,
3640 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3650 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3664 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3673 &BuiltInsValidator::ValidateFragStencilRefAtReference, this, decoration,
3680 spv_result_t BuiltInsValidator::ValidateFullyCoveredAtDefinition(const Decoration& decoration,
3683 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3685 decoration, inst,
3701 return ValidateFullyCoveredAtReference(decoration, inst, inst, inst);
3705 const Decoration& decoration, const Instruction& built_in_inst,
3710 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3720 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3734 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3743 &BuiltInsValidator::ValidateFullyCoveredAtReference, this, decoration,
3751 const Decoration& decoration, const Instruction& inst) {
3754 decoration, inst,
3756 &decoration](const std::string& message) -> spv_result_t {
3762 decoration.params()[0])
3771 return ValidateNVSMOrARMCoreBuiltinsAtReference(decoration, inst, inst, inst);
3775 const Decoration& decoration, const Instruction& built_in_inst,
3786 decoration.params()[0])
3789 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3798 &BuiltInsValidator::ValidateNVSMOrARMCoreBuiltinsAtReference, this, decoration,
3806 const Decoration& decoration, const Instruction& inst) {
3809 decoration, inst,
3811 &decoration](const std::string& message) -> spv_result_t {
3816 decoration.params()[0])
3825 return ValidatePrimitiveShadingRateAtReference(decoration, inst, inst, inst);
3829 const Decoration& decoration, const Instruction& built_in_inst,
3839 decoration.params()[0])
3841 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3857 decoration.params()[0])
3860 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3871 this, decoration, built_in_inst, referenced_from_inst,
3879 const Decoration& decoration, const Instruction& inst) {
3882 decoration, inst,
3884 &decoration](const std::string& message) -> spv_result_t {
3889 decoration.params()[0])
3898 return ValidateShadingRateAtReference(decoration, inst, inst, inst);
3902 const Decoration& decoration, const Instruction& built_in_inst,
3912 decoration.params()[0])
3914 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3924 decoration.params()[0])
3926 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
3935 &BuiltInsValidator::ValidateShadingRateAtReference, this, decoration,
3943 const Decoration& decoration, const Instruction& inst) {
3945 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
3952 decoration, inst,
3975 decoration, inst,
3996 decoration, inst, 3,
4016 decoration, inst, 3,
4036 decoration, inst, 3, 4,
4060 return ValidateRayTracingBuiltinsAtReference(decoration, inst, inst, inst);
4064 const Decoration& decoration, const Instruction& built_in_inst,
4068 const spv::BuiltIn builtin = spv::BuiltIn(decoration.params()[0]);
4076 decoration.params()[0])
4078 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
4089 decoration.params()[0])
4094 << GetReferenceDesc(decoration, built_in_inst, referenced_inst,
4104 this, decoration, built_in_inst, referenced_from_inst,
4112 const Decoration& decoration, const Instruction& inst) {
4113 const spv::BuiltIn label = spv::BuiltIn(decoration.params()[0]);
4132 return ValidateClipOrCullDistanceAtDefinition(decoration, inst);
4135 return ValidateFragCoordAtDefinition(decoration, inst);
4138 return ValidateFragDepthAtDefinition(decoration, inst);
4141 return ValidateFrontFacingAtDefinition(decoration, inst);
4147 return ValidateComputeShaderI32Vec3InputAtDefinition(decoration, inst);
4151 return ValidateFragmentShaderF32Vec3InputAtDefinition(decoration, inst);
4154 return ValidateHelperInvocationAtDefinition(decoration, inst);
4157 return ValidateInvocationIdAtDefinition(decoration, inst);
4160 return ValidateInstanceIndexAtDefinition(decoration, inst);
4164 return ValidateLayerOrViewportIndexAtDefinition(decoration, inst);
4167 return ValidatePatchVerticesAtDefinition(decoration, inst);
4170 return ValidatePointCoordAtDefinition(decoration, inst);
4173 return ValidatePointSizeAtDefinition(decoration, inst);
4176 return ValidatePositionAtDefinition(decoration, inst);
4179 return ValidatePrimitiveIdAtDefinition(decoration, inst);
4182 return ValidateSampleIdAtDefinition(decoration, inst);
4185 return ValidateSampleMaskAtDefinition(decoration, inst);
4188 return ValidateSamplePositionAtDefinition(decoration, inst);
4192 return ValidateComputeI32InputAtDefinition(decoration, inst);
4196 return ValidateI32InputAtDefinition(decoration, inst);
4203 return ValidateI32Vec4InputAtDefinition(decoration, inst);
4206 return ValidateTessCoordAtDefinition(decoration, inst);
4209 return ValidateTessLevelOuterAtDefinition(decoration, inst);
4212 return ValidateTessLevelInnerAtDefinition(decoration, inst);
4215 return ValidateVertexIndexAtDefinition(decoration, inst);
4218 return ValidateWorkgroupSizeAtDefinition(decoration, inst);
4221 return ValidateVertexIdAtDefinition(decoration, inst);
4224 return ValidateLocalInvocationIndexAtDefinition(decoration, inst);
4235 return ValidateNVSMOrARMCoreBuiltinsAtDefinition(decoration, inst);
4239 return ValidateBaseInstanceOrVertexAtDefinition(decoration, inst);
4242 return ValidateDrawIndexAtDefinition(decoration, inst);
4245 return ValidateViewIndexAtDefinition(decoration, inst);
4248 return ValidateDeviceIndexAtDefinition(decoration, inst);
4252 return ValidateFragInvocationCountAtDefinition(decoration, inst);
4256 return ValidateFragSizeAtDefinition(decoration, inst);
4259 return ValidateFragStencilRefAtDefinition(decoration, inst);
4262 return ValidateFullyCoveredAtDefinition(decoration, inst);
4284 return ValidateRayTracingBuiltinsAtDefinition(decoration, inst);
4287 return ValidatePrimitiveShadingRateAtDefinition(decoration, inst);
4290 return ValidateShadingRateAtDefinition(decoration, inst);
4310 for (const auto& decoration : kv.second) {
4311 if (decoration.dec_type() != spv::Decoration::BuiltIn) {
4316 ValidateSingleBuiltInAtDefinition(decoration, *inst)) {