diff --git a/src/intrinsic_table.inl b/src/intrinsic_table.inl index fd156f02b7..a6fdf90ac9 100644 --- a/src/intrinsic_table.inl +++ b/src/intrinsic_table.inl @@ -1203,6 +1203,31 @@ std::string ReadOrWrite::String(MatchState&) const { return "read or write"; } +/// EnumMatcher for 'match storage' +class Storage : public NumberMatcher { + public: + /// Checks whether the given number matches the enum matcher rules. + /// Match may close open types and numbers in state. + /// @param state the MatchState + /// @param number the enum value as a Number + /// @return true if the enum value matches the set + Number Match(MatchState& state, Number number) const override; + /// @param state the MatchState + /// @return a string representation of the matcher. + std::string String(MatchState& state) const override; +}; + +Number Storage::Match(MatchState&, Number number) const { + if (number.IsAny() || number.Value() == static_cast(StorageClass::kStorage)) { + return Number(static_cast(StorageClass::kStorage)); + } + return Number::invalid; +} + +std::string Storage::String(MatchState&) const { + return "storage"; +} + /// EnumMatcher for 'match write' class Write : public NumberMatcher { public: @@ -1296,6 +1321,7 @@ class Matchers { I32TexelFormat I32TexelFormat_; U32TexelFormat U32TexelFormat_; ReadOrWrite ReadOrWrite_; + Storage Storage_; Write Write_; Read Read_; @@ -1343,7 +1369,7 @@ class Matchers { }; /// The open-numbers, and number matchers - NumberMatcher const* const number[9] = { + NumberMatcher const* const number[10] = { /* [0] */ &open_number_0_, /* [1] */ &open_number_1_, /* [2] */ &open_number_2_, @@ -1351,8 +1377,9 @@ class Matchers { /* [4] */ &I32TexelFormat_, /* [5] */ &U32TexelFormat_, /* [6] */ &ReadOrWrite_, - /* [7] */ &Write_, - /* [8] */ &Read_, + /* [7] */ &Storage_, + /* [8] */ &Write_, + /* [9] */ &Read_, }; }; @@ -1372,160 +1399,166 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [9] */ 0, /* [10] */ 2, /* [11] */ 2, - /* [12] */ 9, - /* [13] */ 1, - /* [14] */ 0, - /* [15] */ 2, - /* [16] */ 10, - /* [17] */ 0, + /* [12] */ 10, + /* [13] */ 7, + /* [14] */ 11, + /* [15] */ 0, + /* [16] */ 0, + /* [17] */ 10, /* [18] */ 0, - /* [19] */ 1, - /* [20] */ 10, - /* [21] */ 0, - /* [22] */ 2, - /* [23] */ 1, - /* [24] */ 9, - /* [25] */ 0, + /* [19] */ 0, + /* [20] */ 1, + /* [21] */ 10, + /* [22] */ 0, + /* [23] */ 2, + /* [24] */ 1, + /* [25] */ 9, /* [26] */ 0, - /* [27] */ 2, - /* [28] */ 9, - /* [29] */ 0, - /* [30] */ 1, - /* [31] */ 2, - /* [32] */ 8, - /* [33] */ 0, + /* [27] */ 0, + /* [28] */ 2, + /* [29] */ 9, + /* [30] */ 0, + /* [31] */ 1, + /* [32] */ 2, + /* [33] */ 9, /* [34] */ 1, - /* [35] */ 28, - /* [36] */ 5, - /* [37] */ 8, - /* [38] */ 26, - /* [39] */ 0, - /* [40] */ 1, - /* [41] */ 25, - /* [42] */ 0, - /* [43] */ 1, - /* [44] */ 27, - /* [45] */ 5, - /* [46] */ 8, - /* [47] */ 26, - /* [48] */ 5, - /* [49] */ 8, - /* [50] */ 25, - /* [51] */ 5, - /* [52] */ 8, - /* [53] */ 28, - /* [54] */ 4, - /* [55] */ 8, - /* [56] */ 27, - /* [57] */ 4, - /* [58] */ 8, - /* [59] */ 26, - /* [60] */ 4, - /* [61] */ 8, - /* [62] */ 25, - /* [63] */ 4, - /* [64] */ 8, - /* [65] */ 27, - /* [66] */ 0, - /* [67] */ 1, - /* [68] */ 28, - /* [69] */ 3, - /* [70] */ 8, - /* [71] */ 27, - /* [72] */ 3, - /* [73] */ 8, - /* [74] */ 26, - /* [75] */ 3, - /* [76] */ 8, - /* [77] */ 25, - /* [78] */ 3, - /* [79] */ 8, - /* [80] */ 28, - /* [81] */ 5, - /* [82] */ 7, - /* [83] */ 2, - /* [84] */ 28, - /* [85] */ 0, - /* [86] */ 1, - /* [87] */ 27, - /* [88] */ 5, - /* [89] */ 7, - /* [90] */ 3, - /* [91] */ 26, - /* [92] */ 5, - /* [93] */ 7, - /* [94] */ 4, - /* [95] */ 25, - /* [96] */ 5, - /* [97] */ 7, - /* [98] */ 0, - /* [99] */ 28, - /* [100] */ 4, - /* [101] */ 7, - /* [102] */ 27, + /* [35] */ 0, + /* [36] */ 2, + /* [37] */ 25, + /* [38] */ 3, + /* [39] */ 8, + /* [40] */ 0, + /* [41] */ 1, + /* [42] */ 28, + /* [43] */ 5, + /* [44] */ 9, + /* [45] */ 27, + /* [46] */ 0, + /* [47] */ 1, + /* [48] */ 26, + /* [49] */ 0, + /* [50] */ 1, + /* [51] */ 25, + /* [52] */ 0, + /* [53] */ 1, + /* [54] */ 27, + /* [55] */ 5, + /* [56] */ 9, + /* [57] */ 26, + /* [58] */ 5, + /* [59] */ 9, + /* [60] */ 25, + /* [61] */ 5, + /* [62] */ 9, + /* [63] */ 28, + /* [64] */ 4, + /* [65] */ 9, + /* [66] */ 27, + /* [67] */ 4, + /* [68] */ 9, + /* [69] */ 26, + /* [70] */ 4, + /* [71] */ 9, + /* [72] */ 25, + /* [73] */ 4, + /* [74] */ 9, + /* [75] */ 28, + /* [76] */ 3, + /* [77] */ 9, + /* [78] */ 28, + /* [79] */ 5, + /* [80] */ 8, + /* [81] */ 28, + /* [82] */ 0, + /* [83] */ 1, + /* [84] */ 27, + /* [85] */ 3, + /* [86] */ 9, + /* [87] */ 26, + /* [88] */ 3, + /* [89] */ 9, + /* [90] */ 25, + /* [91] */ 3, + /* [92] */ 9, + /* [93] */ 27, + /* [94] */ 5, + /* [95] */ 8, + /* [96] */ 26, + /* [97] */ 5, + /* [98] */ 8, + /* [99] */ 25, + /* [100] */ 5, + /* [101] */ 8, + /* [102] */ 28, /* [103] */ 4, - /* [104] */ 7, - /* [105] */ 26, + /* [104] */ 8, + /* [105] */ 27, /* [106] */ 4, - /* [107] */ 7, - /* [108] */ 25, + /* [107] */ 8, + /* [108] */ 26, /* [109] */ 4, - /* [110] */ 7, - /* [111] */ 28, - /* [112] */ 3, - /* [113] */ 7, - /* [114] */ 27, + /* [110] */ 8, + /* [111] */ 25, + /* [112] */ 4, + /* [113] */ 8, + /* [114] */ 28, /* [115] */ 3, - /* [116] */ 7, - /* [117] */ 25, + /* [116] */ 8, + /* [117] */ 27, /* [118] */ 3, - /* [119] */ 7, + /* [119] */ 8, /* [120] */ 26, /* [121] */ 3, - /* [122] */ 7, + /* [122] */ 8, /* [123] */ 6, /* [124] */ 2, - /* [125] */ 5, - /* [126] */ 3, + /* [125] */ 7, + /* [126] */ 2, /* [127] */ 5, /* [128] */ 2, - /* [129] */ 6, + /* [129] */ 5, /* [130] */ 3, - /* [131] */ 19, - /* [132] */ 2, - /* [133] */ 18, - /* [134] */ 2, - /* [135] */ 17, + /* [131] */ 6, + /* [132] */ 3, + /* [133] */ 7, + /* [134] */ 3, + /* [135] */ 19, /* [136] */ 2, - /* [137] */ 14, - /* [138] */ 0, - /* [139] */ 15, - /* [140] */ 0, - /* [141] */ 16, + /* [137] */ 18, + /* [138] */ 2, + /* [139] */ 7, + /* [140] */ 4, + /* [141] */ 17, /* [142] */ 2, /* [143] */ 16, - /* [144] */ 0, - /* [145] */ 17, + /* [144] */ 2, + /* [145] */ 14, /* [146] */ 0, - /* [147] */ 15, - /* [148] */ 2, - /* [149] */ 20, + /* [147] */ 7, + /* [148] */ 0, + /* [149] */ 15, /* [150] */ 0, - /* [151] */ 18, + /* [151] */ 16, /* [152] */ 0, - /* [153] */ 19, - /* [154] */ 0, - /* [155] */ 11, + /* [153] */ 15, + /* [154] */ 2, + /* [155] */ 17, /* [156] */ 0, - /* [157] */ 14, - /* [158] */ 2, - /* [159] */ 22, - /* [160] */ 12, - /* [161] */ 21, - /* [162] */ 23, - /* [163] */ 24, - /* [164] */ 29, - /* [165] */ 13, + /* [157] */ 20, + /* [158] */ 0, + /* [159] */ 18, + /* [160] */ 0, + /* [161] */ 19, + /* [162] */ 0, + /* [163] */ 14, + /* [164] */ 2, + /* [165] */ 22, + /* [166] */ 12, + /* [167] */ 21, + /* [168] */ 23, + /* [169] */ 24, + /* [170] */ 29, + /* [171] */ 13, }; // Assert that the MatcherIndex is big enough to index all the matchers, plus @@ -1538,12 +1571,12 @@ constexpr ParameterInfo kParameters[] = { { /* [0] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[141], + /* matcher indices */ &kMatcherIndices[143], }, { /* [1] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [2] */ @@ -1553,7 +1586,7 @@ constexpr ParameterInfo kParameters[] = { { /* [3] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [4] */ @@ -1568,17 +1601,17 @@ constexpr ParameterInfo kParameters[] = { { /* [6] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [7] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[141], + /* matcher indices */ &kMatcherIndices[153], }, { /* [8] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [9] */ @@ -1587,28 +1620,28 @@ constexpr ParameterInfo kParameters[] = { }, { /* [10] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[127], }, { /* [11] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[127], }, { /* [12] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [13] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [14] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [15] */ @@ -1618,7 +1651,7 @@ constexpr ParameterInfo kParameters[] = { { /* [16] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [17] */ @@ -1638,37 +1671,37 @@ constexpr ParameterInfo kParameters[] = { { /* [20] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [21] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[123], }, { /* [22] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[123], }, { /* [23] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[127], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[123], }, { /* [24] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[127], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[131], }, { /* [25] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[165], }, { /* [26] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[171], }, { /* [27] */ @@ -1677,28 +1710,28 @@ constexpr ParameterInfo kParameters[] = { }, { /* [28] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[127], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [29] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[127], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[5], }, { /* [30] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [31] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[143], }, { /* [32] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[165], + /* matcher indices */ &kMatcherIndices[166], }, { /* [33] */ @@ -1708,42 +1741,42 @@ constexpr ParameterInfo kParameters[] = { { /* [34] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [35] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[5], }, { /* [36] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [37] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[165], }, { /* [38] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [39] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[127], }, { /* [40] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [41] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[38], }, { /* [42] */ @@ -1753,12 +1786,12 @@ constexpr ParameterInfo kParameters[] = { { /* [43] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[141], + /* matcher indices */ &kMatcherIndices[143], }, { /* [44] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [45] */ @@ -1768,27 +1801,27 @@ constexpr ParameterInfo kParameters[] = { { /* [46] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [47] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[127], }, { /* [48] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[127], }, { /* [49] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[143], }, { /* [50] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [51] */ @@ -1798,52 +1831,52 @@ constexpr ParameterInfo kParameters[] = { { /* [52] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [53] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[5], }, { /* [54] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [55] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[135], }, { /* [56] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [57] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[123], }, { /* [58] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [59] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[5], }, { /* [60] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[141], + /* matcher indices */ &kMatcherIndices[143], }, { /* [61] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [62] */ @@ -1853,22 +1886,22 @@ constexpr ParameterInfo kParameters[] = { { /* [63] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [64] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [65] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], + /* matcher indices */ &kMatcherIndices[169], }, { /* [66] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [67] */ @@ -1878,22 +1911,22 @@ constexpr ParameterInfo kParameters[] = { { /* [68] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [69] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [70] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[141], }, { /* [71] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [72] */ @@ -1908,7 +1941,7 @@ constexpr ParameterInfo kParameters[] = { { /* [74] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [75] */ @@ -1918,57 +1951,57 @@ constexpr ParameterInfo kParameters[] = { { /* [76] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [77] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[123], }, { /* [78] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], - }, - { - /* [79] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[5], }, + { + /* [79] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[131], + }, { /* [80] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[153], }, { /* [81] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [82] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[127], }, { /* [83] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[5], }, { /* [84] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[129], }, { /* [85] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[165], }, { /* [86] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[165], + /* matcher indices */ &kMatcherIndices[166], }, { /* [87] */ @@ -1977,23 +2010,23 @@ constexpr ParameterInfo kParameters[] = { }, { /* [88] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [89] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [90] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[167], }, { /* [91] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[171], }, { /* [92] */ @@ -2002,23 +2035,23 @@ constexpr ParameterInfo kParameters[] = { }, { /* [93] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[5], }, { /* [94] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [95] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[165], }, { /* [96] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[165], + /* matcher indices */ &kMatcherIndices[171], }, { /* [97] */ @@ -2028,7 +2061,7 @@ constexpr ParameterInfo kParameters[] = { { /* [98] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [99] */ @@ -2038,12 +2071,12 @@ constexpr ParameterInfo kParameters[] = { { /* [100] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[167], }, { /* [101] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [102] */ @@ -2053,72 +2086,72 @@ constexpr ParameterInfo kParameters[] = { { /* [103] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [104] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [105] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[165], }, { /* [106] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [107] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[127], }, { /* [108] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [109] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[38], }, { /* [110] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[137], }, { /* [111] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [112] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[123], }, { /* [113] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[123], }, { /* [114] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[123], }, { /* [115] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], + /* matcher indices */ &kMatcherIndices[169], }, { /* [116] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[165], + /* matcher indices */ &kMatcherIndices[171], }, { /* [117] */ @@ -2128,7 +2161,7 @@ constexpr ParameterInfo kParameters[] = { { /* [118] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [119] */ @@ -2138,12 +2171,12 @@ constexpr ParameterInfo kParameters[] = { { /* [120] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[153], }, { /* [121] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [122] */ @@ -2163,78 +2196,78 @@ constexpr ParameterInfo kParameters[] = { { /* [125] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[135], }, { /* [126] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [127] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[123], }, { /* [128] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [129] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], - }, - { - /* [130] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [131] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], - }, - { - /* [132] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [133] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [134] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [135] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [136] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], - }, - { - /* [137] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [138] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[5], }, { - /* [139] */ + /* [130] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[153], + }, + { + /* [131] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], + }, + { + /* [132] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[127], + }, + { + /* [133] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[5], + }, + { + /* [134] */ /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[129], }, + { + /* [135] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[143], + }, + { + /* [136] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], + }, + { + /* [137] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[127], + }, + { + /* [138] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], + }, + { + /* [139] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[5], + }, { /* [140] */ /* usage */ ParameterUsage::kTexture, @@ -2243,97 +2276,97 @@ constexpr ParameterInfo kParameters[] = { { /* [141] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [142] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], - }, - { - /* [143] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], - }, - { - /* [144] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[5], - }, - { - /* [145] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [146] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], - }, - { - /* [147] */ - /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[123], }, { - /* [148] */ + /* [143] */ /* usage */ ParameterUsage::kDdx, /* matcher indices */ &kMatcherIndices[123], }, { - /* [149] */ + /* [144] */ /* usage */ ParameterUsage::kDdy, /* matcher indices */ &kMatcherIndices[123], }, { - /* [150] */ + /* [145] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[143], }, + { + /* [146] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], + }, + { + /* [147] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[127], + }, + { + /* [148] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], + }, + { + /* [149] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[5], + }, + { + /* [150] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], + }, { /* [151] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [152] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [153] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[139], }, { /* [154] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[168], }, { /* [155] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[171], }, { /* [156] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[123], }, { /* [157] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[93], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[5], }, { /* [158] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [159] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [160] */ @@ -2343,57 +2376,57 @@ constexpr ParameterInfo kParameters[] = { { /* [161] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [162] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[102], + /* matcher indices */ &kMatcherIndices[105], }, { /* [163] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [164] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [165] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[133], }, { /* [166] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[162], + /* matcher indices */ &kMatcherIndices[151], }, { /* [167] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[165], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[129], }, { /* [168] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [169] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[38], }, { /* [170] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[153], }, { /* [171] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [172] */ @@ -2408,12 +2441,12 @@ constexpr ParameterInfo kParameters[] = { { /* [174] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[167], }, { /* [175] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[165], + /* matcher indices */ &kMatcherIndices[171], }, { /* [176] */ @@ -2428,52 +2461,52 @@ constexpr ParameterInfo kParameters[] = { { /* [178] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[114], + /* matcher indices */ &kMatcherIndices[117], }, { /* [179] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [180] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [181] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[82], + /* matcher indices */ &kMatcherIndices[125], }, { /* [182] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[141], }, { /* [183] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], }, { /* [184] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[123], }, { /* [185] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[5], }, { /* [186] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[137], }, { /* [187] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [188] */ @@ -2488,12 +2521,12 @@ constexpr ParameterInfo kParameters[] = { { /* [190] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[141], }, { /* [191] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [192] */ @@ -2502,38 +2535,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [193] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[131], }, { /* [194] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[165], }, { /* [195] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[129], }, { /* [196] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [197] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[38], }, { /* [198] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[162], + /* matcher indices */ &kMatcherIndices[168], }, { /* [199] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [200] */ @@ -2543,17 +2576,17 @@ constexpr ParameterInfo kParameters[] = { { /* [201] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [202] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], + /* matcher indices */ &kMatcherIndices[169], }, { /* [203] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [204] */ @@ -2563,17 +2596,17 @@ constexpr ParameterInfo kParameters[] = { { /* [205] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [206] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[143], }, { /* [207] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [208] */ @@ -2582,18 +2615,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [209] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [210] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[141], + /* matcher indices */ &kMatcherIndices[153], }, { /* [211] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [212] */ @@ -2602,38 +2635,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [213] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[5], }, { /* [214] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[167], }, { /* [215] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [216] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[127], }, { /* [217] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[38], }, { /* [218] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[165], }, { /* [219] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [220] */ @@ -2643,17 +2676,17 @@ constexpr ParameterInfo kParameters[] = { { /* [221] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [222] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[167], }, { /* [223] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [224] */ @@ -2662,18 +2695,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [225] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[129], }, { /* [226] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[153], }, { /* [227] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [228] */ @@ -2682,38 +2715,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [229] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[129], }, { /* [230] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], + /* matcher indices */ &kMatcherIndices[141], }, { /* [231] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [232] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[123], }, { /* [233] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[5], }, { /* [234] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[137], }, { /* [235] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [236] */ @@ -2722,53 +2755,53 @@ constexpr ParameterInfo kParameters[] = { }, { /* [237] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[5], }, { /* [238] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [239] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [240] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [241] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [242] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [243] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [244] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[105], + /* matcher indices */ &kMatcherIndices[108], }, { /* [245] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [246] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[133], }, { /* [247] */ @@ -2803,12 +2836,12 @@ constexpr ParameterInfo kParameters[] = { { /* [253] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[164], + /* matcher indices */ &kMatcherIndices[170], }, { /* [254] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [255] */ @@ -2823,87 +2856,87 @@ constexpr ParameterInfo kParameters[] = { { /* [257] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [258] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[82], + /* matcher indices */ &kMatcherIndices[125], }, { /* [259] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], + /* matcher indices */ &kMatcherIndices[114], }, { /* [260] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [261] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[82], + /* matcher indices */ &kMatcherIndices[125], }, { /* [262] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[108], + /* matcher indices */ &kMatcherIndices[111], }, { /* [263] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [264] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[133], }, { /* [265] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[102], }, { /* [266] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [267] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[133], }, { /* [268] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[99], }, { /* [269] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [270] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[139], }, { /* [271] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[167], }, { /* [272] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], }, { /* [273] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[93], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[127], }, { /* [274] */ @@ -2933,7 +2966,7 @@ constexpr ParameterInfo kParameters[] = { { /* [279] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[32], + /* matcher indices */ &kMatcherIndices[39], }, { /* [280] */ @@ -2953,162 +2986,162 @@ constexpr ParameterInfo kParameters[] = { { /* [283] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[96], }, { /* [284] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[129], }, { /* [285] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[139], }, { /* [286] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[80], + /* matcher indices */ &kMatcherIndices[78], }, { /* [287] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [288] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[139], }, { /* [289] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[137], + /* matcher indices */ &kMatcherIndices[145], }, { /* [290] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [291] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [292] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[139], + /* matcher indices */ &kMatcherIndices[149], }, { /* [293] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [294] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [295] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[145], + /* matcher indices */ &kMatcherIndices[155], }, { /* [296] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [297] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [298] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[149], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[2], }, { /* [299] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[2], }, { /* [300] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[2], }, { /* [301] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[2], + /* matcher indices */ &kMatcherIndices[3], }, { /* [302] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[2], + /* matcher indices */ &kMatcherIndices[3], }, { /* [303] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[2], + /* matcher indices */ &kMatcherIndices[3], }, { /* [304] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[162], + /* matcher indices */ &kMatcherIndices[157], }, { /* [305] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[129], }, { /* [306] */ + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[38], + }, + { + /* [307] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[168], + }, + { + /* [308] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], + }, + { + /* [309] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[123], }, - { - /* [307] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[3], - }, - { - /* [308] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[3], - }, - { - /* [309] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[3], - }, { /* [310] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[167], }, { /* [311] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [312] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [313] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[137], }, { /* [314] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [315] */ @@ -3118,121 +3151,121 @@ constexpr ParameterInfo kParameters[] = { { /* [316] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[71], + /* matcher indices */ &kMatcherIndices[141], }, { /* [317] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], }, { /* [318] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[123], }, { /* [319] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[84], }, { /* [320] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[129], }, { /* [321] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], }, { /* [322] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [323] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [324] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [325] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[164], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [326] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [327] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[127], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [328] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[56], + /* matcher indices */ &kMatcherIndices[170], }, { /* [329] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], }, { /* [330] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], - }, - { - /* [331] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[147], - }, - { - /* [332] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], - }, - { - /* [333] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[127], }, + { + /* [331] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[66], + }, + { + /* [332] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [333] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[38], + }, { /* [334] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[157], + /* matcher indices */ &kMatcherIndices[153], }, { /* [335] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[160], + /* matcher indices */ &kMatcherIndices[166], }, { /* [336] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[127], }, { /* [337] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[163], }, { /* [338] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[166], }, { /* [339] */ - /* usage */ ParameterUsage::kNone, + /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[5], }, { @@ -3253,42 +3286,42 @@ constexpr ParameterInfo kParameters[] = { { /* [343] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[44], + /* matcher indices */ &kMatcherIndices[54], }, { /* [344] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [345] */ /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [346] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[37], }, { /* [347] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [348] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[82], + /* matcher indices */ &kMatcherIndices[125], }, { /* [349] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [350] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[6], + /* matcher indices */ &kMatcherIndices[21], }, { /* [351] */ @@ -3333,52 +3366,52 @@ constexpr ParameterInfo kParameters[] = { { /* [359] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[164], + /* matcher indices */ &kMatcherIndices[170], }, { /* [360] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [361] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[8], }, { /* [362] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[2], }, { /* [363] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [364] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [365] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[8], }, { /* [366] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[8], }, { /* [367] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [368] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [369] */ @@ -3388,7 +3421,7 @@ constexpr ParameterInfo kParameters[] = { { /* [370] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[2], + /* matcher indices */ &kMatcherIndices[8], }, { /* [371] */ @@ -3418,7 +3451,7 @@ constexpr ParameterInfo kParameters[] = { { /* [376] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[16], + /* matcher indices */ &kMatcherIndices[17], }, { /* [377] */ @@ -3483,392 +3516,392 @@ constexpr ParameterInfo kParameters[] = { { /* [389] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[77], + /* matcher indices */ &kMatcherIndices[90], }, { /* [390] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [391] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[74], + /* matcher indices */ &kMatcherIndices[87], }, { /* [392] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [393] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[68], + /* matcher indices */ &kMatcherIndices[75], }, { /* [394] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [395] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[62], + /* matcher indices */ &kMatcherIndices[72], }, { /* [396] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [397] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[59], + /* matcher indices */ &kMatcherIndices[69], }, { /* [398] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [399] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[53], + /* matcher indices */ &kMatcherIndices[63], }, { /* [400] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[131], }, { /* [401] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[60], }, { /* [402] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[38], }, { /* [403] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [404] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[5], }, { /* [405] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[35], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [406] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], }, { /* [407] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[50], + /* matcher indices */ &kMatcherIndices[42], }, { /* [408] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[131], }, { /* [409] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[47], + /* matcher indices */ &kMatcherIndices[57], }, { /* [410] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[129], }, { /* [411] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], + /* matcher indices */ &kMatcherIndices[169], }, { /* [412] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [413] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[162], + /* matcher indices */ &kMatcherIndices[168], }, { /* [414] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [415] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[165], }, { /* [416] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [417] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], + /* matcher indices */ &kMatcherIndices[167], }, { /* [418] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [419] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[8], }, { /* [420] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[20], + /* matcher indices */ &kMatcherIndices[6], }, { /* [421] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[151], + /* matcher indices */ &kMatcherIndices[159], }, { /* [422] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [423] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[145], + /* matcher indices */ &kMatcherIndices[155], }, { /* [424] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [425] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[143], + /* matcher indices */ &kMatcherIndices[151], }, { /* [426] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [427] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[139], + /* matcher indices */ &kMatcherIndices[149], }, { /* [428] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [429] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[153], + /* matcher indices */ &kMatcherIndices[161], }, { /* [430] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[38], }, { /* [431] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[54], + /* matcher indices */ &kMatcherIndices[64], }, { /* [432] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[137], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[64], }, { /* [433] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[139], - }, - { - /* [434] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[54], - }, - { - /* [435] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[143], - }, - { - /* [436] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[54], - }, - { - /* [437] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[145], }, { - /* [438] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[54], - }, - { - /* [439] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[151], - }, - { - /* [440] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[54], - }, - { - /* [441] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[153], - }, - { - /* [442] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], - }, - { - /* [443] */ + /* [434] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[149], }, { - /* [444] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[161], - }, - { - /* [445] */ + /* [435] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[64], }, { - /* [446] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], - }, - { - /* [447] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[28], - }, - { - /* [448] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[162], - }, - { - /* [449] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], - }, - { - /* [450] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], - }, - { - /* [451] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], - }, - { - /* [452] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[41], - }, - { - /* [453] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[38], - }, - { - /* [454] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[65], - }, - { - /* [455] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[84], - }, - { - /* [456] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[164], - }, - { - /* [457] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[143], - }, - { - /* [458] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[153], - }, - { - /* [459] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], - }, - { - /* [460] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], - }, - { - /* [461] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[65], - }, - { - /* [462] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[139], - }, - { - /* [463] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[143], - }, - { - /* [464] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[145], - }, - { - /* [465] */ + /* [436] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[151], }, + { + /* [437] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[64], + }, + { + /* [438] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[155], + }, + { + /* [439] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[64], + }, + { + /* [440] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[159], + }, + { + /* [441] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], + }, + { + /* [442] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[161], + }, + { + /* [443] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[5], + }, + { + /* [444] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[157], + }, + { + /* [445] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[167], + }, + { + /* [446] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[29], + }, + { + /* [447] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[165], + }, + { + /* [448] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], + }, + { + /* [449] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[168], + }, + { + /* [450] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[5], + }, + { + /* [451] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[169], + }, + { + /* [452] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[8], + }, + { + /* [453] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[51], + }, + { + /* [454] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[48], + }, + { + /* [455] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[45], + }, + { + /* [456] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [457] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[170], + }, + { + /* [458] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[151], + }, + { + /* [459] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[161], + }, + { + /* [460] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[165], + }, + { + /* [461] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[169], + }, + { + /* [462] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[45], + }, + { + /* [463] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[149], + }, + { + /* [464] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[151], + }, + { + /* [465] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[155], + }, { /* [466] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[153], + /* matcher indices */ &kMatcherIndices[159], }, { /* [467] */ @@ -3878,27 +3911,27 @@ constexpr ParameterInfo kParameters[] = { { /* [468] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[159], + /* matcher indices */ &kMatcherIndices[167], }, { /* [469] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[162], + /* matcher indices */ &kMatcherIndices[165], }, { /* [470] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[163], + /* matcher indices */ &kMatcherIndices[168], }, { /* [471] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[149], + /* matcher indices */ &kMatcherIndices[169], }, { /* [472] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[157], }, { /* [473] */ @@ -3968,12 +4001,12 @@ constexpr ParameterInfo kParameters[] = { { /* [486] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[82], + /* matcher indices */ &kMatcherIndices[125], }, { /* [487] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[82], + /* matcher indices */ &kMatcherIndices[125], }, { /* [488] */ @@ -4213,7 +4246,7 @@ constexpr ParameterInfo kParameters[] = { { /* [535] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* matcher indices */ &kMatcherIndices[25], }, { /* [536] */ @@ -4278,36 +4311,41 @@ constexpr ParameterInfo kParameters[] = { { /* [548] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[155], + /* matcher indices */ &kMatcherIndices[12], }, { /* [549] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[32], + /* matcher indices */ &kMatcherIndices[14], }, { /* [550] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[32], + /* matcher indices */ &kMatcherIndices[39], }, { /* [551] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[8], + /* matcher indices */ &kMatcherIndices[39], }, { /* [552] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[5], + /* matcher indices */ &kMatcherIndices[8], }, { /* [553] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[2], + /* matcher indices */ &kMatcherIndices[5], }, { /* [554] */ /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[2], + }, + { + /* [555] */ + /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[3], }, }; @@ -4376,8 +4414,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[432], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[433], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4388,8 +4426,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[433], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[434], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4401,7 +4439,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[427], - /* return matcher indices */ &kMatcherIndices[125], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4412,8 +4450,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[435], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[436], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4425,7 +4463,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[425], - /* return matcher indices */ &kMatcherIndices[125], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4436,8 +4474,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[437], - /* return matcher indices */ &kMatcherIndices[129], + /* parameters */ &kParameters[438], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4449,7 +4487,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[423], - /* return matcher indices */ &kMatcherIndices[129], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4460,8 +4498,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[439], - /* return matcher indices */ &kMatcherIndices[129], + /* parameters */ &kParameters[440], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4473,7 +4511,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[421], - /* return matcher indices */ &kMatcherIndices[129], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4484,8 +4522,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[441], - /* return matcher indices */ &kMatcherIndices[129], + /* parameters */ &kParameters[442], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4497,7 +4535,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[429], - /* return matcher indices */ &kMatcherIndices[129], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4508,8 +4546,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[443], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[444], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4520,8 +4558,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[444], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[445], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4533,7 +4571,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[417], - /* return matcher indices */ &kMatcherIndices[125], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4544,8 +4582,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[446], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[447], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4557,7 +4595,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[415], - /* return matcher indices */ &kMatcherIndices[125], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4568,8 +4606,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[448], - /* return matcher indices */ &kMatcherIndices[129], + /* parameters */ &kParameters[449], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4581,7 +4619,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[413], - /* return matcher indices */ &kMatcherIndices[129], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4592,8 +4630,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[450], - /* return matcher indices */ &kMatcherIndices[129], + /* parameters */ &kParameters[451], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4605,7 +4643,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[411], - /* return matcher indices */ &kMatcherIndices[129], + /* return matcher indices */ &kMatcherIndices[131], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4616,8 +4654,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[452], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[453], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4628,8 +4666,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[453], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[454], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4640,23 +4678,23 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[454], - /* return matcher indices */ &kMatcherIndices[125], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [23] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 2, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[4], /* parameters */ &kParameters[455], /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [23] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 2, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[4], + /* parameters */ &kParameters[456], + /* return matcher indices */ &kMatcherIndices[131], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [24] */ /* num parameters */ 1, @@ -4664,8 +4702,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[456], - /* return matcher indices */ &kMatcherIndices[125], + /* parameters */ &kParameters[457], + /* return matcher indices */ &kMatcherIndices[129], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4677,7 +4715,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[289], - /* return matcher indices */ &kMatcherIndices[97], + /* return matcher indices */ &kMatcherIndices[147], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4689,7 +4727,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[292], - /* return matcher indices */ &kMatcherIndices[97], + /* return matcher indices */ &kMatcherIndices[147], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4700,8 +4738,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[150], - /* return matcher indices */ &kMatcherIndices[97], + /* parameters */ &kParameters[166], + /* return matcher indices */ &kMatcherIndices[147], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4713,7 +4751,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[295], - /* return matcher indices */ &kMatcherIndices[97], + /* return matcher indices */ &kMatcherIndices[147], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4724,8 +4762,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[298], - /* return matcher indices */ &kMatcherIndices[97], + /* parameters */ &kParameters[304], + /* return matcher indices */ &kMatcherIndices[147], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4748,7 +4786,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[182], + /* parameters */ &kParameters[194], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -4761,7 +4799,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[389], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4773,7 +4811,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[391], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4784,8 +4822,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[316], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[319], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4797,7 +4835,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[393], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4809,7 +4847,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[395], - /* return matcher indices */ &kMatcherIndices[89], + /* return matcher indices */ &kMatcherIndices[133], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4821,7 +4859,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[397], - /* return matcher indices */ &kMatcherIndices[89], + /* return matcher indices */ &kMatcherIndices[133], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4832,8 +4870,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[328], - /* return matcher indices */ &kMatcherIndices[89], + /* parameters */ &kParameters[331], + /* return matcher indices */ &kMatcherIndices[133], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4845,7 +4883,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[399], - /* return matcher indices */ &kMatcherIndices[89], + /* return matcher indices */ &kMatcherIndices[133], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4856,8 +4894,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[407], - /* return matcher indices */ &kMatcherIndices[93], + /* parameters */ &kParameters[401], + /* return matcher indices */ &kMatcherIndices[139], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4869,7 +4907,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[409], - /* return matcher indices */ &kMatcherIndices[93], + /* return matcher indices */ &kMatcherIndices[139], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4881,7 +4919,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[343], - /* return matcher indices */ &kMatcherIndices[93], + /* return matcher indices */ &kMatcherIndices[139], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4892,8 +4930,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[405], - /* return matcher indices */ &kMatcherIndices[93], + /* parameters */ &kParameters[407], + /* return matcher indices */ &kMatcherIndices[139], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4905,7 +4943,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[359], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -4916,8 +4954,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[334], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[337], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -4928,8 +4966,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[331], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[334], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -4940,8 +4978,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[230], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[226], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -4952,8 +4990,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[210], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[206], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -4965,7 +5003,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[60], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -4976,8 +5014,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[238], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[316], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -4988,8 +5026,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[194], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[190], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5001,7 +5039,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[313], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5013,7 +5051,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[158], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5024,7 +5062,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[283], + /* parameters */ &kParameters[271], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5036,7 +5074,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[206], + /* parameters */ &kParameters[222], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5060,7 +5098,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[90], + /* parameters */ &kParameters[85], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5072,7 +5110,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[304], + /* parameters */ &kParameters[307], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5096,8 +5134,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[325], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[328], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5109,7 +5147,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[170], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5120,8 +5158,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[55], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[80], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5132,8 +5170,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[75], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[145], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5144,8 +5182,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[43], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[49], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5156,8 +5194,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[214], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[182], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5168,8 +5206,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[135], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[75], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5180,8 +5218,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[190], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[234], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5192,8 +5230,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[105], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[125], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5204,7 +5242,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[222], + /* parameters */ &kParameters[214], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5228,7 +5266,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[110], + /* parameters */ &kParameters[105], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5240,7 +5278,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[49], + /* parameters */ &kParameters[37], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5277,7 +5315,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[253], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5396,7 +5434,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[271], + /* parameters */ &kParameters[283], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5408,7 +5446,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[154], + /* parameters */ &kParameters[150], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5432,8 +5470,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[462], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[463], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5444,8 +5482,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[463], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[464], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5456,8 +5494,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[464], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[465], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5468,8 +5506,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[465], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[466], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5480,8 +5518,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[466], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[467], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5492,8 +5530,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[467], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[468], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5504,8 +5542,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[468], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[469], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5516,8 +5554,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[469], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[470], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5528,8 +5566,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[470], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[471], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5541,7 +5579,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[120], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5552,8 +5590,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[25], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[7], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5564,8 +5602,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[19], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[43], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5577,7 +5615,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[0], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5588,8 +5626,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[145], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[140], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5600,8 +5638,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[37], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[19], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5612,8 +5650,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[130], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[110], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5625,7 +5663,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[13], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5636,8 +5674,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[226], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[210], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5648,8 +5686,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[125], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[130], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5660,8 +5698,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[140], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[135], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5672,8 +5710,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[7], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[31], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5684,8 +5722,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[234], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[230], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5697,7 +5735,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[70], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5709,7 +5747,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[186], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5720,8 +5758,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[80], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[55], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5744,7 +5782,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[85], + /* parameters */ &kParameters[90], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5768,7 +5806,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[31], + /* parameters */ &kParameters[25], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5780,7 +5818,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[166], + /* parameters */ &kParameters[154], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5804,8 +5842,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[457], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[458], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5816,8 +5854,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[458], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[459], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5828,8 +5866,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[459], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[460], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5840,8 +5878,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[460], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[461], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5852,8 +5890,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[461], - /* return matcher indices */ &kMatcherIndices[69], + /* parameters */ &kParameters[462], + /* return matcher indices */ &kMatcherIndices[38], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5955,24 +5993,24 @@ constexpr OverloadInfo kOverloads[] = { }, { /* [132] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[475], + /* parameters */ &kParameters[403], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [133] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[474], + /* parameters */ &kParameters[405], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6008,7 +6046,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[307], + /* parameters */ &kParameters[301], /* return matcher indices */ &kMatcherIndices[3], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6020,7 +6058,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[301], + /* parameters */ &kParameters[298], /* return matcher indices */ &kMatcherIndices[2], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6272,7 +6310,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[280], + /* parameters */ &kParameters[241], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6284,7 +6322,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[241], + /* parameters */ &kParameters[238], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6477,7 +6515,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], /* parameters */ &kParameters[504], - /* return matcher indices */ &kMatcherIndices[32], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6501,7 +6539,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], /* parameters */ &kParameters[502], - /* return matcher indices */ &kMatcherIndices[32], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6525,7 +6563,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], /* parameters */ &kParameters[500], - /* return matcher indices */ &kMatcherIndices[32], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6549,7 +6587,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], /* parameters */ &kParameters[498], - /* return matcher indices */ &kMatcherIndices[32], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6572,7 +6610,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[369], + /* parameters */ &kParameters[361], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6704,7 +6742,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[337], + /* parameters */ &kParameters[280], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6728,7 +6766,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[2], - /* parameters */ &kParameters[419], + /* parameters */ &kParameters[349], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6740,37 +6778,13 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 3, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[349], + /* parameters */ &kParameters[419], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [198] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[319], - /* return matcher indices */ &kMatcherIndices[5], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [199] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[322], - /* return matcher indices */ &kMatcherIndices[8], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [200] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, @@ -6782,7 +6796,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [201] */ + /* [199] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -6793,6 +6807,30 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [200] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[475], + /* return matcher indices */ &kMatcherIndices[5], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [201] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[1], + /* parameters */ &kParameters[474], + /* return matcher indices */ &kMatcherIndices[8], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [202] */ /* num parameters */ 1, @@ -6820,24 +6858,24 @@ constexpr OverloadInfo kOverloads[] = { { /* [204] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[2], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[445], - /* return matcher indices */ &kMatcherIndices[5], + /* parameters */ &kParameters[549], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, + /* is_deprecated */ true, }, { /* [205] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[442], - /* return matcher indices */ &kMatcherIndices[8], + /* open types */ &kOpenTypes[2], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[548], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6848,7 +6886,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[451], + /* parameters */ &kParameters[443], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6860,7 +6898,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[449], + /* parameters */ &kParameters[441], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6872,7 +6910,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[473], + /* parameters */ &kParameters[450], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6884,55 +6922,55 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[472], + /* parameters */ &kParameters[448], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [210] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[401], + /* parameters */ &kParameters[473], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [211] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[403], + /* parameters */ &kParameters[452], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [212] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[552], + /* parameters */ &kParameters[367], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [213] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[551], + /* parameters */ &kParameters[369], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6940,24 +6978,24 @@ constexpr OverloadInfo kOverloads[] = { { /* [214] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[485], - /* return matcher indices */ &kMatcherIndices[3], + /* parameters */ &kParameters[553], + /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [215] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[484], - /* return matcher indices */ &kMatcherIndices[2], + /* parameters */ &kParameters[552], + /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7083,97 +7121,97 @@ constexpr OverloadInfo kOverloads[] = { }, { /* [226] */ - /* num parameters */ 2, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[365], + /* parameters */ &kParameters[322], /* return matcher indices */ &kMatcherIndices[5], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [227] */ - /* num parameters */ 2, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[367], + /* parameters */ &kParameters[325], /* return matcher indices */ &kMatcherIndices[8], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [228] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[361], - /* return matcher indices */ &kMatcherIndices[5], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [229] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[363], - /* return matcher indices */ &kMatcherIndices[8], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [230] */ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[554], + /* parameters */ &kParameters[485], /* return matcher indices */ &kMatcherIndices[3], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [231] */ + /* [229] */ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[553], + /* parameters */ &kParameters[484], /* return matcher indices */ &kMatcherIndices[2], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [232] */ - /* num parameters */ 0, + /* [230] */ + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[363], + /* return matcher indices */ &kMatcherIndices[5], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [231] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[1], + /* parameters */ &kParameters[365], + /* return matcher indices */ &kMatcherIndices[8], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [232] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[555], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* return matcher indices */ &kMatcherIndices[3], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [233] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[486], - /* return matcher indices */ &kMatcherIndices[54], + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[1], + /* parameters */ &kParameters[554], + /* return matcher indices */ &kMatcherIndices[2], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7184,8 +7222,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[487], - /* return matcher indices */ &kMatcherIndices[54], + /* parameters */ &kParameters[488], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7193,11 +7231,11 @@ constexpr OverloadInfo kOverloads[] = { /* [235] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 2, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[447], - /* return matcher indices */ &kMatcherIndices[12], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[486], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7205,11 +7243,11 @@ constexpr OverloadInfo kOverloads[] = { /* [236] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 2, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[488], - /* return matcher indices */ &kMatcherIndices[54], + /* open numbers */ &kOpenNumbers[0], + /* parameters */ &kParameters[446], + /* return matcher indices */ &kMatcherIndices[33], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7220,8 +7258,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[440], - /* return matcher indices */ &kMatcherIndices[127], + /* parameters */ &kParameters[487], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7232,7 +7270,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[438], + /* parameters */ &kParameters[439], /* return matcher indices */ &kMatcherIndices[127], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7244,7 +7282,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[436], + /* parameters */ &kParameters[437], /* return matcher indices */ &kMatcherIndices[127], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7256,8 +7294,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[434], - /* return matcher indices */ &kMatcherIndices[82], + /* parameters */ &kParameters[435], + /* return matcher indices */ &kMatcherIndices[127], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7269,48 +7307,84 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[431], - /* return matcher indices */ &kMatcherIndices[82], + /* return matcher indices */ &kMatcherIndices[125], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [242] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[432], + /* return matcher indices */ &kMatcherIndices[125], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [243] */ /* num parameters */ 0, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[555], + /* parameters */ &kParameters[556], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [243] */ + /* [244] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[2], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[508], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [245] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[489], - /* return matcher indices */ &kMatcherIndices[54], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [244] */ + /* [246] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[490], - /* return matcher indices */ &kMatcherIndices[54], + /* return matcher indices */ &kMatcherIndices[64], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [245] */ + /* [247] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[472], + /* return matcher indices */ &kMatcherIndices[38], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [248] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -7322,19 +7396,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [246] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[471], - /* return matcher indices */ &kMatcherIndices[69], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [247] */ + /* [249] */ /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, @@ -7346,7 +7408,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [248] */ + /* [250] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -7358,7 +7420,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [249] */ + /* [251] */ /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, @@ -7369,30 +7431,6 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [250] */ - /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[548], - /* return matcher indices */ &kMatcherIndices[54], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [251] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[1], - /* parameters */ &kParameters[549], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [252] */ /* num parameters */ 1, @@ -7408,15 +7446,27 @@ constexpr OverloadInfo kOverloads[] = { { /* [253] */ /* num parameters */ 1, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[508], - /* return matcher indices */ nullptr, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[1], + /* parameters */ &kParameters[551], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [254] */ + /* num parameters */ 0, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[556], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* is_deprecated */ false, + }, }; constexpr IntrinsicInfo kIntrinsics[] = { @@ -7425,32 +7475,33 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* fn abs(T) -> T */ /* fn abs(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[230], + /* overloads */ &kOverloads[232], }, { /* [1] */ /* fn acos(f32) -> f32 */ /* fn acos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[212], + /* overloads */ &kOverloads[214], }, { /* [2] */ /* fn all(vec) -> bool */ /* num overloads */ 1, - /* overloads */ &kOverloads[252], + /* overloads */ &kOverloads[253], }, { /* [3] */ /* fn any(vec) -> bool */ /* num overloads */ 1, - /* overloads */ &kOverloads[251], + /* overloads */ &kOverloads[252], }, { /* [4] */ /* fn arrayLength(array) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[250], + /* fn arrayLength(ptr, A>) -> u32 */ + /* num overloads */ 2, + /* overloads */ &kOverloads[204], }, { /* [5] */ @@ -7464,7 +7515,7 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* fn atan(f32) -> f32 */ /* fn atan(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[200], + /* overloads */ &kOverloads[198], }, { /* [7] */ @@ -7512,13 +7563,13 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* [13] */ /* fn cross(vec3, vec3) -> vec3 */ /* num overloads */ 1, - /* overloads */ &kOverloads[249], + /* overloads */ &kOverloads[251], }, { /* [14] */ /* fn determinant(mat) -> f32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[248], + /* overloads */ &kOverloads[250], }, { /* [15] */ @@ -7531,7 +7582,7 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* [16] */ /* fn dot(vec, vec) -> f32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[247], + /* overloads */ &kOverloads[249], }, { /* [17] */ @@ -7649,7 +7700,7 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* [33] */ /* fn ignore(T) */ /* num overloads */ 1, - /* overloads */ &kOverloads[253], + /* overloads */ &kOverloads[244], }, { /* [34] */ @@ -7746,58 +7797,58 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* [47] */ /* fn normalize(vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[245], + /* overloads */ &kOverloads[248], }, { /* [48] */ /* fn pack2x16float(vec2) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[244], + /* overloads */ &kOverloads[246], }, { /* [49] */ /* fn pack2x16snorm(vec2) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[243], + /* overloads */ &kOverloads[245], }, { /* [50] */ /* fn pack2x16unorm(vec2) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[236], + /* overloads */ &kOverloads[234], }, { /* [51] */ /* fn pack4x8snorm(vec4) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[234], + /* overloads */ &kOverloads[237], }, { /* [52] */ /* fn pack4x8unorm(vec4) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[233], + /* overloads */ &kOverloads[235], }, { /* [53] */ /* fn pow(f32, f32) -> f32 */ /* fn pow(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[228], + /* overloads */ &kOverloads[230], }, { /* [54] */ /* fn reflect(f32, f32) -> f32 */ /* fn reflect(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[226], + /* overloads */ &kOverloads[212], }, { /* [55] */ /* fn reverseBits(T) -> T */ /* fn reverseBits(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[214], + /* overloads */ &kOverloads[228], }, { /* [56] */ @@ -7839,90 +7890,90 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* fn smoothStep(f32, f32, f32) -> f32 */ /* fn smoothStep(vec, vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[198], + /* overloads */ &kOverloads[226], }, { /* [62] */ /* fn sqrt(f32) -> f32 */ /* fn sqrt(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[132], + /* overloads */ &kOverloads[200], }, { /* [63] */ /* fn step(f32, f32) -> f32 */ /* fn step(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[210], + /* overloads */ &kOverloads[132], }, { /* [64] */ /* fn storageBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[242], + /* overloads */ &kOverloads[254], }, { /* [65] */ /* fn tan(f32) -> f32 */ /* fn tan(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[208], + /* overloads */ &kOverloads[210], }, { /* [66] */ /* fn tanh(f32) -> f32 */ /* fn tanh(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[206], + /* overloads */ &kOverloads[208], }, { /* [67] */ /* fn transpose(mat) -> mat */ /* num overloads */ 1, - /* overloads */ &kOverloads[235], + /* overloads */ &kOverloads[236], }, { /* [68] */ /* fn trunc(f32) -> f32 */ /* fn trunc(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[204], + /* overloads */ &kOverloads[206], }, { /* [69] */ /* fn unpack2x16float(u32) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[237], + /* overloads */ &kOverloads[238], }, { /* [70] */ /* fn unpack2x16snorm(u32) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[238], + /* overloads */ &kOverloads[239], }, { /* [71] */ /* fn unpack2x16unorm(u32) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[239], + /* overloads */ &kOverloads[240], }, { /* [72] */ /* fn unpack4x8snorm(u32) -> vec4 */ /* num overloads */ 1, - /* overloads */ &kOverloads[240], + /* overloads */ &kOverloads[241], }, { /* [73] */ /* fn unpack4x8unorm(u32) -> vec4 */ /* num overloads */ 1, - /* overloads */ &kOverloads[241], + /* overloads */ &kOverloads[242], }, { /* [74] */ /* fn workgroupBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[232], + /* overloads */ &kOverloads[243], }, { /* [75] */ @@ -7982,7 +8033,7 @@ constexpr IntrinsicInfo kIntrinsics[] = { /* [78] */ /* fn textureNumSamples(texture: texture_multisampled_2d) -> i32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[246], + /* overloads */ &kOverloads[247], }, { /* [79] */ diff --git a/src/intrinsics.def b/src/intrinsics.def index 23ddc13ced..379a18f868 100644 --- a/src/intrinsics.def +++ b/src/intrinsics.def @@ -259,7 +259,8 @@ fn acos(f32) -> f32 fn acos(vec) -> vec fn all(vec) -> bool fn any(vec) -> bool -fn arrayLength(array) -> u32 +[[deprecated]] fn arrayLength(array) -> u32 +fn arrayLength(ptr, A>) -> u32 fn asin(f32) -> f32 fn asin(vec) -> vec fn atan(f32) -> f32 diff --git a/src/resolver/intrinsic_test.cc b/src/resolver/intrinsic_test.cc index 740824eed1..763cf244a9 100644 --- a/src/resolver/intrinsic_test.cc +++ b/src/resolver/intrinsic_test.cc @@ -792,8 +792,9 @@ TEST_F(ResolverIntrinsicDataTest, ArrayLength_Error_ArraySized) { EXPECT_EQ(r()->error(), "error: no matching call to arrayLength(array)\n\n" - "1 candidate function:\n" - " arrayLength(array) -> u32\n"); + "2 candidate functions:\n" + " arrayLength(array) -> u32\n" + " arrayLength(ptr>) -> u32\n"); } TEST_F(ResolverIntrinsicDataTest, Normalize_Vector) { diff --git a/src/transform/calculate_array_length.cc b/src/transform/calculate_array_length.cc index 74962fbc6b..4d78b02b41 100644 --- a/src/transform/calculate_array_length.cc +++ b/src/transform/calculate_array_length.cc @@ -119,20 +119,29 @@ Output CalculateArrayLength::Run(const Program* in, const DataMap&) { if (intrinsic->Type() == sem::IntrinsicType::kArrayLength) { // We're dealing with an arrayLength() call - // https://gpuweb.github.io/gpuweb/wgsl.html#array-types states: + // https://gpuweb.github.io/gpuweb/wgsl/#array-types states: // // * The last member of the structure type defining the store type for // a variable in the storage storage class may be a runtime-sized // array. // * A runtime-sized array must not be used as the store type or // contained within a store type in any other cases. - // * The type of an expression must not be a runtime-sized array type. - // arrayLength() + // * An expression must not evaluate to a runtime-sized array type. // // We can assume that the arrayLength() call has a single argument of - // the form: arrayLength(X.Y) where X is an expression that resolves - // to the storage buffer structure, and Y is the runtime sized array. + // the form: arrayLength(&X.Y) or the now deprecated form + // arrayLength(X.Y) where X is an expression that resolves to the + // storage buffer structure, and Y is the runtime sized array. auto* array_expr = call_expr->params()[0]; + + // TODO(crbug.com/tint/806): Once the deprecated arrayLength() + // overload is removed, this can safely assume a pointer arg. + if (auto* address_of = array_expr->As()) { + if (address_of->op() == ast::UnaryOp::kAddressOf) { + array_expr = address_of->expr(); + } + } + auto* accessor = array_expr->As(); if (!accessor) { TINT_ICE(ctx.dst->Diagnostics()) diff --git a/src/transform/calculate_array_length_test.cc b/src/transform/calculate_array_length_test.cc index 4821c58465..693a1ece24 100644 --- a/src/transform/calculate_array_length_test.cc +++ b/src/transform/calculate_array_length_test.cc @@ -22,7 +22,8 @@ namespace { using CalculateArrayLengthTest = TransformTest; -TEST_F(CalculateArrayLengthTest, Basic) { +// TODO(crbug.com/tint/806): Remove +TEST_F(CalculateArrayLengthTest, Basic_DEPRECATED) { auto* src = R"( [[block]] struct SB { @@ -64,7 +65,8 @@ fn main() { EXPECT_EQ(expect, str(got)); } -TEST_F(CalculateArrayLengthTest, InSameBlock) { +// TODO(crbug.com/tint/806): Remove +TEST_F(CalculateArrayLengthTest, InSameBlock_DEPRECATED) { auto* src = R"( [[block]] struct SB { @@ -110,7 +112,8 @@ fn main() { EXPECT_EQ(expect, str(got)); } -TEST_F(CalculateArrayLengthTest, WithStride) { +// TODO(crbug.com/tint/806): Remove +TEST_F(CalculateArrayLengthTest, WithStride_DEPRECATED) { auto* src = R"( [[block]] struct SB { @@ -154,7 +157,8 @@ fn main() { EXPECT_EQ(expect, str(got)); } -TEST_F(CalculateArrayLengthTest, Nested) { +// TODO(crbug.com/tint/806): Remove +TEST_F(CalculateArrayLengthTest, Nested_DEPRECATED) { auto* src = R"( [[block]] struct SB { @@ -211,7 +215,8 @@ fn main() { EXPECT_EQ(expect, str(got)); } -TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) { +// TODO(crbug.com/tint/806): Remove +TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers_DEPRECATED) { auto* src = R"( [[block]] struct SB1 { @@ -279,6 +284,263 @@ fn main() { EXPECT_EQ(expect, str(got)); } +TEST_F(CalculateArrayLengthTest, Basic) { + auto* src = R"( +[[block]] +struct SB { + x : i32; + arr : array; +}; + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + var len : u32 = arrayLength(&sb.arr); +} +)"; + + auto* expect = R"( +[[block]] +struct SB { + x : i32; + arr : array; +}; + +[[internal(intrinsic_buffer_size)]] +fn tint_symbol(buffer : SB, result : ptr) + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + var tint_symbol_1 : u32 = 0u; + tint_symbol(sb, &(tint_symbol_1)); + let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u); + var len : u32 = tint_symbol_2; +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(CalculateArrayLengthTest, InSameBlock) { + auto* src = R"( +[[block]] +struct SB { + x : i32; + arr : array; +}; + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + var a : u32 = arrayLength(&sb.arr); + var b : u32 = arrayLength(&sb.arr); + var c : u32 = arrayLength(&sb.arr); +} +)"; + + auto* expect = R"( +[[block]] +struct SB { + x : i32; + arr : array; +}; + +[[internal(intrinsic_buffer_size)]] +fn tint_symbol(buffer : SB, result : ptr) + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + var tint_symbol_1 : u32 = 0u; + tint_symbol(sb, &(tint_symbol_1)); + let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u); + var a : u32 = tint_symbol_2; + var b : u32 = tint_symbol_2; + var c : u32 = tint_symbol_2; +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(CalculateArrayLengthTest, WithStride) { + auto* src = R"( +[[block]] +struct SB { + x : i32; + y : f32; + arr : [[stride(64)]] array; +}; + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + var len : u32 = arrayLength(&sb.arr); +} +)"; + + auto* expect = R"( +[[block]] +struct SB { + x : i32; + y : f32; + arr : [[stride(64)]] array; +}; + +[[internal(intrinsic_buffer_size)]] +fn tint_symbol(buffer : SB, result : ptr) + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + var tint_symbol_1 : u32 = 0u; + tint_symbol(sb, &(tint_symbol_1)); + let tint_symbol_2 : u32 = ((tint_symbol_1 - 8u) / 64u); + var len : u32 = tint_symbol_2; +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(CalculateArrayLengthTest, Nested) { + auto* src = R"( +[[block]] +struct SB { + x : i32; + arr : array; +}; + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + if (true) { + var len : u32 = arrayLength(&sb.arr); + } else { + if (true) { + var len : u32 = arrayLength(&sb.arr); + } + } +} +)"; + + auto* expect = R"( +[[block]] +struct SB { + x : i32; + arr : array; +}; + +[[internal(intrinsic_buffer_size)]] +fn tint_symbol(buffer : SB, result : ptr) + +[[group(0), binding(0)]] var sb : SB; + +[[stage(compute)]] +fn main() { + if (true) { + var tint_symbol_1 : u32 = 0u; + tint_symbol(sb, &(tint_symbol_1)); + let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u); + var len : u32 = tint_symbol_2; + } else { + if (true) { + var tint_symbol_3 : u32 = 0u; + tint_symbol(sb, &(tint_symbol_3)); + let tint_symbol_4 : u32 = ((tint_symbol_3 - 4u) / 4u); + var len : u32 = tint_symbol_4; + } + } +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) { + auto* src = R"( +[[block]] +struct SB1 { + x : i32; + arr1 : array; +}; + +[[block]] +struct SB2 { + x : i32; + arr2 : array>; +}; + +[[group(0), binding(0)]] var sb1 : SB1; + +[[group(0), binding(1)]] var sb2 : SB2; + +[[stage(compute)]] +fn main() { + var len1 : u32 = arrayLength(&(sb1.arr1)); + var len2 : u32 = arrayLength(&(sb2.arr2)); + var x : u32 = (len1 + len2); +} +)"; + + auto* expect = R"( +[[block]] +struct SB1 { + x : i32; + arr1 : array; +}; + +[[internal(intrinsic_buffer_size)]] +fn tint_symbol(buffer : SB1, result : ptr) + +[[block]] +struct SB2 { + x : i32; + arr2 : array>; +}; + +[[internal(intrinsic_buffer_size)]] +fn tint_symbol_3(buffer : SB2, result : ptr) + +[[group(0), binding(0)]] var sb1 : SB1; + +[[group(0), binding(1)]] var sb2 : SB2; + +[[stage(compute)]] +fn main() { + var tint_symbol_1 : u32 = 0u; + tint_symbol(sb1, &(tint_symbol_1)); + let tint_symbol_2 : u32 = ((tint_symbol_1 - 4u) / 4u); + var tint_symbol_4 : u32 = 0u; + tint_symbol_3(sb2, &(tint_symbol_4)); + let tint_symbol_5 : u32 = ((tint_symbol_4 - 16u) / 16u); + var len1 : u32 = tint_symbol_2; + var len2 : u32 = tint_symbol_5; + var x : u32 = (len1 + len2); +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + } // namespace } // namespace transform } // namespace tint diff --git a/src/transform/decompose_storage_access.cc b/src/transform/decompose_storage_access.cc index 29077b3fed..e2ea4c3f59 100644 --- a/src/transform/decompose_storage_access.cc +++ b/src/transform/decompose_storage_access.cc @@ -30,6 +30,7 @@ #include "src/sem/call.h" #include "src/sem/member_accessor_expression.h" #include "src/sem/reference_type.h" +#include "src/sem/statement.h" #include "src/sem/struct.h" #include "src/sem/variable.h" #include "src/utils/get_or_create.h" @@ -742,7 +743,14 @@ Output DecomposeStorageAccess::Run(const Program* in, const DataMap&) { // arrayLength(X) // Don't convert X into a load, this actually requires the real // reference. - state.TakeAccess(call_expr->params()[0]); + auto* arg = call_expr->params()[0]; + + // TODO(crbug.com/tint/806): Once the deprecated arrayLength() + // overload is removed, this can safely assume a pointer arg. + if (auto* address_of = arg->As()) { + arg = address_of->expr(); + } + state.TakeAccess(arg); } } } diff --git a/src/transform/hlsl.cc b/src/transform/hlsl.cc index 8579e4907d..208054a88b 100644 --- a/src/transform/hlsl.cc +++ b/src/transform/hlsl.cc @@ -44,6 +44,9 @@ Output Hlsl::Run(const Program* in, const DataMap&) { // after Simplify, as we need to fold away the address-of and defers of // `*(&(intrinsic_load()))` expressions. manager.Add(); + // CalculateArrayLength must come after DecomposeStorageAccess, as + // DecomposeStorageAccess special-cases the arrayLength() intrinsic, which + // will be transformed by CalculateArrayLength manager.Add(); manager.Add(); manager.Add(); diff --git a/src/writer/hlsl/generator_impl_sanitizer_test.cc b/src/writer/hlsl/generator_impl_sanitizer_test.cc index a848822c5e..c0e5c8af65 100644 --- a/src/writer/hlsl/generator_impl_sanitizer_test.cc +++ b/src/writer/hlsl/generator_impl_sanitizer_test.cc @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "src/ast/call_statement.h" #include "src/ast/stage_decoration.h" #include "src/ast/struct_block_decoration.h" #include "src/ast/variable_decl_statement.h" @@ -24,7 +25,8 @@ namespace { using HlslSanitizerTest = TestHelper; -TEST_F(HlslSanitizerTest, ArrayLength) { +// TODO(crbug.com/tint/806): Remove +TEST_F(HlslSanitizerTest, ArrayLength_DEPRECATED) { auto* sb_ty = Structure("SB", { Member("x", ty.f32()), @@ -69,6 +71,131 @@ void main() { EXPECT_EQ(expect, got); } +TEST_F(HlslSanitizerTest, Call_ArrayLength) { + auto* s = Structure("my_struct", {Member(0, "a", ty.array(4))}, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + Decl(Var("len", ty.u32(), ast::StorageClass::kNone, + Call("arrayLength", AddressOf(MemberAccessor("b", "a"))))), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + GeneratorImpl& gen = SanitizeAndBuild(); + + ASSERT_TRUE(gen.Generate(out)) << gen.error(); + + auto got = result(); + auto* expect = R"( +ByteAddressBuffer b : register(t1, space2); + +void a_func() { + uint tint_symbol_1 = 0u; + b.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + uint len = tint_symbol_2; + return; +} + +)"; + EXPECT_EQ(expect, got); +} + +TEST_F(HlslSanitizerTest, Call_ArrayLength_OtherMembersInStruct) { + auto* s = Structure("my_struct", + { + Member(0, "z", ty.f32()), + Member(4, "a", ty.array(4)), + }, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + Decl(Var("len", ty.u32(), ast::StorageClass::kNone, + Call("arrayLength", AddressOf(MemberAccessor("b", "a"))))), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + GeneratorImpl& gen = SanitizeAndBuild(); + + ASSERT_TRUE(gen.Generate(out)) << gen.error(); + + auto got = result(); + auto* expect = R"( +ByteAddressBuffer b : register(t1, space2); + +void a_func() { + uint tint_symbol_1 = 0u; + b.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 4u) / 4u); + uint len = tint_symbol_2; + return; +} + +)"; + + EXPECT_EQ(expect, got); +} + +TEST_F(HlslSanitizerTest, Call_ArrayLength_ViaLets) { + auto* s = Structure("my_struct", {Member(0, "a", ty.array(4))}, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + auto* p = Const("p", nullptr, AddressOf("b")); + auto* p2 = Const("p2", nullptr, AddressOf(MemberAccessor(Deref(p), "a"))); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + Decl(p), + Decl(p2), + Decl(Var("len", ty.u32(), ast::StorageClass::kNone, + Call("arrayLength", p2))), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + GeneratorImpl& gen = SanitizeAndBuild(); + + ASSERT_TRUE(gen.Generate(out)) << gen.error(); + + auto got = result(); + auto* expect = R"( +ByteAddressBuffer b : register(t1, space2); + +void a_func() { + uint tint_symbol_1 = 0u; + b.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + uint len = tint_symbol_2; + return; +} + +)"; + + EXPECT_EQ(expect, got); +} + TEST_F(HlslSanitizerTest, PromoteArrayInitializerToConstVar) { auto* array_init = array(1, 2, 3, 4); auto* array_index = IndexAccessor(array_init, 3); diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc index c89e06c566..4ab9048243 100644 --- a/src/writer/spirv/builder.cc +++ b/src/writer/spirv/builder.cc @@ -2187,9 +2187,17 @@ uint32_t Builder::GenerateIntrinsic(ast::CallExpression* call, } auto* arg = call->params()[0]; + // TODO(crbug.com/tint/806): Once the deprecated arrayLength() + // overload is removed, this can safely assume a pointer arg. + if (auto* address_of = arg->As()) { + arg = address_of->expr(); + } + auto* accessor = arg->As(); if (accessor == nullptr) { - error_ = "invalid expression for array length"; + // The InlinePtrLets and Simplify transforms should have sanitized any + // lets, or &*&*& noise. + error_ = "expected argument to arrayLength() to be a member accessor"; return 0; } diff --git a/src/writer/spirv/builder_intrinsic_test.cc b/src/writer/spirv/builder_intrinsic_test.cc index 495bdeed97..e78436dbe5 100644 --- a/src/writer/spirv/builder_intrinsic_test.cc +++ b/src/writer/spirv/builder_intrinsic_test.cc @@ -1571,7 +1571,8 @@ OpFunctionEnd )"); } -TEST_F(IntrinsicBuilderTest, Call_ArrayLength) { +// TODO(crbug.com/tint/806): Remove +TEST_F(IntrinsicBuilderTest, Call_ArrayLength_DEPRECATED) { auto* s = Structure("my_struct", {Member(0, "a", ty.array(4))}, {create()}); Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, @@ -1616,6 +1617,101 @@ TEST_F(IntrinsicBuilderTest, Call_ArrayLength) { Validate(b); } +// TODO(crbug.com/tint/806): Remove +TEST_F(IntrinsicBuilderTest, Call_ArrayLength_OtherMembersInStruct_DEPRECATED) { + auto* s = Structure("my_struct", + { + Member(0, "z", ty.f32()), + Member(4, "a", ty.array(4)), + }, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + auto* expr = Call("arrayLength", MemberAccessor("b", "a")); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + create(expr), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + spirv::Builder& b = Build(); + + ASSERT_TRUE(b.Build()) << b.error(); + + ASSERT_EQ(b.functions().size(), 1u); + + auto* expected_types = R"(%4 = OpTypeFloat 32 +%5 = OpTypeRuntimeArray %4 +%3 = OpTypeStruct %4 %5 +%2 = OpTypePointer StorageBuffer %3 +%1 = OpVariable %2 StorageBuffer +%7 = OpTypeVoid +%6 = OpTypeFunction %7 +%11 = OpTypeInt 32 0 +)"; + auto got_types = DumpInstructions(b.types()); + EXPECT_EQ(expected_types, got_types); + + auto* expected_instructions = R"(%10 = OpArrayLength %11 %1 1 +)"; + auto got_instructions = DumpInstructions(b.functions()[0].instructions()); + EXPECT_EQ(expected_instructions, got_instructions); + + Validate(b); +} + +TEST_F(IntrinsicBuilderTest, Call_ArrayLength) { + auto* s = Structure("my_struct", {Member(0, "a", ty.array(4))}, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + auto* expr = Call("arrayLength", AddressOf(MemberAccessor("b", "a"))); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + create(expr), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + spirv::Builder& b = Build(); + + ASSERT_TRUE(b.Build()) << b.error(); + + ASSERT_EQ(b.functions().size(), 1u); + + auto* expected_types = R"(%5 = OpTypeFloat 32 +%4 = OpTypeRuntimeArray %5 +%3 = OpTypeStruct %4 +%2 = OpTypePointer StorageBuffer %3 +%1 = OpVariable %2 StorageBuffer +%7 = OpTypeVoid +%6 = OpTypeFunction %7 +%11 = OpTypeInt 32 0 +)"; + auto got_types = DumpInstructions(b.types()); + EXPECT_EQ(expected_types, got_types); + + auto* expected_instructions = R"(%10 = OpArrayLength %11 %1 0 +)"; + auto got_instructions = DumpInstructions(b.functions()[0].instructions()); + EXPECT_EQ(expected_instructions, got_instructions); + + Validate(b); +} + TEST_F(IntrinsicBuilderTest, Call_ArrayLength_OtherMembersInStruct) { auto* s = Structure("my_struct", { @@ -1629,7 +1725,7 @@ TEST_F(IntrinsicBuilderTest, Call_ArrayLength_OtherMembersInStruct) { create(2), }); - auto* expr = Call("arrayLength", MemberAccessor("b", "a")); + auto* expr = Call("arrayLength", AddressOf(MemberAccessor("b", "a"))); Func("a_func", ast::VariableList{}, ty.void_(), ast::StatementList{ @@ -1665,6 +1761,116 @@ TEST_F(IntrinsicBuilderTest, Call_ArrayLength_OtherMembersInStruct) { Validate(b); } +TEST_F(IntrinsicBuilderTest, Call_ArrayLength_ViaLets) { + auto* s = Structure("my_struct", {Member(0, "a", ty.array(4))}, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + auto* p = Const("p", nullptr, AddressOf("b")); + auto* p2 = Const("p2", nullptr, AddressOf(MemberAccessor(Deref(p), "a"))); + auto* expr = Call("arrayLength", p2); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + Decl(p), + Decl(p2), + create(expr), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + spirv::Builder& b = SanitizeAndBuild(); + + ASSERT_TRUE(b.Build()) << b.error(); + + ASSERT_EQ(b.functions().size(), 1u); + + auto* expected_types = R"(%5 = OpTypeFloat 32 +%4 = OpTypeRuntimeArray %5 +%3 = OpTypeStruct %4 +%2 = OpTypePointer StorageBuffer %3 +%1 = OpVariable %2 StorageBuffer +%7 = OpTypeVoid +%6 = OpTypeFunction %7 +%11 = OpTypeInt 32 0 +)"; + auto got_types = DumpInstructions(b.types()); + EXPECT_EQ(expected_types, got_types); + + auto* expected_instructions = R"(%10 = OpArrayLength %11 %1 0 +)"; + auto got_instructions = DumpInstructions(b.functions()[0].instructions()); + EXPECT_EQ(expected_instructions, got_instructions); + + Validate(b); +} + +TEST_F(IntrinsicBuilderTest, Call_ArrayLength_ViaLets_WithPtrNoise) { + // struct my_struct { + // a : [[stride(4)]] array; + // } + // + // fn a_func() { + // let p = &*&b; + // let p2 = &*p; + // let p3 = &((*p).a); + // arrayLength(&*p3); + // } + auto* s = Structure("my_struct", {Member(0, "a", ty.array(4))}, + {create()}); + Global("b", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead, + ast::DecorationList{ + create(1), + create(2), + }); + + auto* p = Const("p", nullptr, AddressOf(Deref(AddressOf("b")))); + auto* p2 = Const("p2", nullptr, AddressOf(Deref(p))); + auto* p3 = Const("p3", nullptr, AddressOf(MemberAccessor(Deref(p2), "a"))); + auto* expr = Call("arrayLength", AddressOf(Deref(p3))); + + Func("a_func", ast::VariableList{}, ty.void_(), + ast::StatementList{ + Decl(p), + Decl(p2), + Decl(p3), + create(expr), + }, + ast::DecorationList{ + Stage(ast::PipelineStage::kFragment), + }); + + spirv::Builder& b = SanitizeAndBuild(); + + ASSERT_TRUE(b.Build()) << b.error(); + + ASSERT_EQ(b.functions().size(), 1u); + + auto* expected_types = R"(%5 = OpTypeFloat 32 +%4 = OpTypeRuntimeArray %5 +%3 = OpTypeStruct %4 +%2 = OpTypePointer StorageBuffer %3 +%1 = OpVariable %2 StorageBuffer +%7 = OpTypeVoid +%6 = OpTypeFunction %7 +%11 = OpTypeInt 32 0 +)"; + auto got_types = DumpInstructions(b.types()); + EXPECT_EQ(expected_types, got_types); + + auto* expected_instructions = R"(%10 = OpArrayLength %11 %1 0 +)"; + auto got_instructions = DumpInstructions(b.functions()[0].instructions()); + EXPECT_EQ(expected_instructions, got_instructions); + + Validate(b); +} + using Intrinsic_Builtin_DataPacking_Test = IntrinsicBuilderTestWithParam; TEST_P(Intrinsic_Builtin_DataPacking_Test, Binary) { diff --git a/test/intrinsics/arrayLength.wgsl.expected.hlsl b/test/intrinsics/arrayLength.wgsl.expected.hlsl deleted file mode 100644 index b3fc631c5e..0000000000 --- a/test/intrinsics/arrayLength.wgsl.expected.hlsl +++ /dev/null @@ -1,6 +0,0 @@ - -[numthreads(1, 1, 1)] -void main() { - return; -} - diff --git a/test/intrinsics/arrayLength.wgsl.expected.msl b/test/intrinsics/arrayLength.wgsl.expected.msl deleted file mode 100644 index a43de5c874..0000000000 --- a/test/intrinsics/arrayLength.wgsl.expected.msl +++ /dev/null @@ -1,11 +0,0 @@ -#include - -using namespace metal; -struct S { - /* 0x0000 */ int a[1]; -}; - -kernel void tint_symbol() { - return; -} - diff --git a/test/intrinsics/arrayLength.wgsl b/test/intrinsics/arrayLength/complex_via_let.wgsl similarity index 53% rename from test/intrinsics/arrayLength.wgsl rename to test/intrinsics/arrayLength/complex_via_let.wgsl index ef179fc4a6..2f05d61449 100644 --- a/test/intrinsics/arrayLength.wgsl +++ b/test/intrinsics/arrayLength/complex_via_let.wgsl @@ -7,6 +7,7 @@ struct S { [[stage(compute)]] fn main() { - // TODO(crbug.com/tint/806): arrayLength signature is currently wrong - // let l : i32 = arrayLength(&G.a); + let p = &G; + let p2 = &((*p).a); + let l1 : u32 = arrayLength(p2); } diff --git a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.hlsl b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.hlsl new file mode 100644 index 0000000000..de68f94ef5 --- /dev/null +++ b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.hlsl @@ -0,0 +1,12 @@ + +ByteAddressBuffer G : register(t0, space0); + +[numthreads(1, 1, 1)] +void main() { + uint tint_symbol_1 = 0u; + G.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + const uint l1 = tint_symbol_2; + return; +} + diff --git a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl new file mode 100644 index 0000000000..b142311dbe --- /dev/null +++ b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl @@ -0,0 +1,18 @@ +SKIP: FAILED + + +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn tint_symbol() { + let p = &(G); + let p2 = &((*(p)).a); + let l1 : u32 = arrayLength(p2); +} + +Failed to generate: error: Unknown import method: arrayLength diff --git a/test/intrinsics/arrayLength.wgsl.expected.spvasm b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.spvasm similarity index 92% rename from test/intrinsics/arrayLength.wgsl.expected.spvasm rename to test/intrinsics/arrayLength/complex_via_let.wgsl.expected.spvasm index bf2a83a116..4fd2f66b6f 100644 --- a/test/intrinsics/arrayLength.wgsl.expected.spvasm +++ b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 10 +; Bound: 12 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -24,7 +24,9 @@ %G = OpVariable %_ptr_StorageBuffer_S StorageBuffer %void = OpTypeVoid %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 %main = OpFunction %void None %6 %9 = OpLabel + %10 = OpArrayLength %uint %G 0 OpReturn OpFunctionEnd diff --git a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl new file mode 100644 index 0000000000..27e209fa8c --- /dev/null +++ b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let p = &(G); + let p2 = &((*(p)).a); + let l1 : u32 = arrayLength(p2); +} diff --git a/test/intrinsics/arrayLength/deprecated.wgsl b/test/intrinsics/arrayLength/deprecated.wgsl new file mode 100644 index 0000000000..e76d834784 --- /dev/null +++ b/test/intrinsics/arrayLength/deprecated.wgsl @@ -0,0 +1,14 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let l1 : u32 = arrayLength(&G.a); + + let p = &G.a; + let l2 : u32 = arrayLength(p); +} diff --git a/test/intrinsics/arrayLength/deprecated.wgsl.expected.hlsl b/test/intrinsics/arrayLength/deprecated.wgsl.expected.hlsl new file mode 100644 index 0000000000..97c38fafb1 --- /dev/null +++ b/test/intrinsics/arrayLength/deprecated.wgsl.expected.hlsl @@ -0,0 +1,13 @@ + +ByteAddressBuffer G : register(t0, space0); + +[numthreads(1, 1, 1)] +void main() { + uint tint_symbol_1 = 0u; + G.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + const uint l1 = tint_symbol_2; + const uint l2 = tint_symbol_2; + return; +} + diff --git a/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl b/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl new file mode 100644 index 0000000000..522865a044 --- /dev/null +++ b/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl @@ -0,0 +1,18 @@ +SKIP: FAILED + + +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn tint_symbol() { + let l1 : u32 = arrayLength(&(G.a)); + let p = &(G.a); + let l2 : u32 = arrayLength(p); +} + +Failed to generate: error: Unknown import method: arrayLength diff --git a/test/intrinsics/arrayLength/deprecated.wgsl.expected.spvasm b/test/intrinsics/arrayLength/deprecated.wgsl.expected.spvasm new file mode 100644 index 0000000000..69ef765878 --- /dev/null +++ b/test/intrinsics/arrayLength/deprecated.wgsl.expected.spvasm @@ -0,0 +1,33 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 13 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" + OpExecutionMode %main LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "a" + OpName %G "G" + OpName %main "main" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %_runtimearr_int ArrayStride 4 + OpDecorate %G NonWritable + OpDecorate %G DescriptorSet 0 + OpDecorate %G Binding 0 + %int = OpTypeInt 32 1 +%_runtimearr_int = OpTypeRuntimeArray %int + %S = OpTypeStruct %_runtimearr_int +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %G = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %main = OpFunction %void None %6 + %9 = OpLabel + %10 = OpArrayLength %uint %G 0 + %12 = OpArrayLength %uint %G 0 + OpReturn + OpFunctionEnd diff --git a/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl b/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl new file mode 100644 index 0000000000..950c9f6ddb --- /dev/null +++ b/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let l1 : u32 = arrayLength(&(G.a)); + let p = &(G.a); + let l2 : u32 = arrayLength(p); +} diff --git a/test/intrinsics/arrayLength/simple.wgsl b/test/intrinsics/arrayLength/simple.wgsl new file mode 100644 index 0000000000..89471e3b52 --- /dev/null +++ b/test/intrinsics/arrayLength/simple.wgsl @@ -0,0 +1,11 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let l1 : u32 = arrayLength(&G.a); +} diff --git a/test/intrinsics/arrayLength/simple.wgsl.expected.hlsl b/test/intrinsics/arrayLength/simple.wgsl.expected.hlsl new file mode 100644 index 0000000000..de68f94ef5 --- /dev/null +++ b/test/intrinsics/arrayLength/simple.wgsl.expected.hlsl @@ -0,0 +1,12 @@ + +ByteAddressBuffer G : register(t0, space0); + +[numthreads(1, 1, 1)] +void main() { + uint tint_symbol_1 = 0u; + G.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + const uint l1 = tint_symbol_2; + return; +} + diff --git a/test/intrinsics/arrayLength/simple.wgsl.expected.msl b/test/intrinsics/arrayLength/simple.wgsl.expected.msl new file mode 100644 index 0000000000..61e65daf72 --- /dev/null +++ b/test/intrinsics/arrayLength/simple.wgsl.expected.msl @@ -0,0 +1,16 @@ +SKIP: FAILED + + +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn tint_symbol() { + let l1 : u32 = arrayLength(&(G.a)); +} + +Failed to generate: error: Unknown import method: arrayLength diff --git a/test/intrinsics/arrayLength/simple.wgsl.expected.spvasm b/test/intrinsics/arrayLength/simple.wgsl.expected.spvasm new file mode 100644 index 0000000000..4fd2f66b6f --- /dev/null +++ b/test/intrinsics/arrayLength/simple.wgsl.expected.spvasm @@ -0,0 +1,32 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 12 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" + OpExecutionMode %main LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "a" + OpName %G "G" + OpName %main "main" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %_runtimearr_int ArrayStride 4 + OpDecorate %G NonWritable + OpDecorate %G DescriptorSet 0 + OpDecorate %G Binding 0 + %int = OpTypeInt 32 1 +%_runtimearr_int = OpTypeRuntimeArray %int + %S = OpTypeStruct %_runtimearr_int +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %G = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %main = OpFunction %void None %6 + %9 = OpLabel + %10 = OpArrayLength %uint %G 0 + OpReturn + OpFunctionEnd diff --git a/test/intrinsics/arrayLength.wgsl.expected.wgsl b/test/intrinsics/arrayLength/simple.wgsl.expected.wgsl similarity index 77% rename from test/intrinsics/arrayLength.wgsl.expected.wgsl rename to test/intrinsics/arrayLength/simple.wgsl.expected.wgsl index bcbd967f76..5859b6204e 100644 --- a/test/intrinsics/arrayLength.wgsl.expected.wgsl +++ b/test/intrinsics/arrayLength/simple.wgsl.expected.wgsl @@ -7,4 +7,5 @@ struct S { [[stage(compute)]] fn main() { + let l1 : u32 = arrayLength(&(G.a)); } diff --git a/test/intrinsics/arrayLength/via_let.wgsl b/test/intrinsics/arrayLength/via_let.wgsl new file mode 100644 index 0000000000..eafb77afbb --- /dev/null +++ b/test/intrinsics/arrayLength/via_let.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let p = &G.a; + let p2 = p; + let l1 : u32 = arrayLength(p2); +} diff --git a/test/intrinsics/arrayLength/via_let.wgsl.expected.hlsl b/test/intrinsics/arrayLength/via_let.wgsl.expected.hlsl new file mode 100644 index 0000000000..de68f94ef5 --- /dev/null +++ b/test/intrinsics/arrayLength/via_let.wgsl.expected.hlsl @@ -0,0 +1,12 @@ + +ByteAddressBuffer G : register(t0, space0); + +[numthreads(1, 1, 1)] +void main() { + uint tint_symbol_1 = 0u; + G.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + const uint l1 = tint_symbol_2; + return; +} + diff --git a/test/intrinsics/arrayLength/via_let.wgsl.expected.msl b/test/intrinsics/arrayLength/via_let.wgsl.expected.msl new file mode 100644 index 0000000000..e87fc055cd --- /dev/null +++ b/test/intrinsics/arrayLength/via_let.wgsl.expected.msl @@ -0,0 +1,18 @@ +SKIP: FAILED + + +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn tint_symbol() { + let p = &(G.a); + let p2 = p; + let l1 : u32 = arrayLength(p2); +} + +Failed to generate: error: Unknown import method: arrayLength diff --git a/test/intrinsics/arrayLength/via_let.wgsl.expected.spvasm b/test/intrinsics/arrayLength/via_let.wgsl.expected.spvasm new file mode 100644 index 0000000000..4fd2f66b6f --- /dev/null +++ b/test/intrinsics/arrayLength/via_let.wgsl.expected.spvasm @@ -0,0 +1,32 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 12 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" + OpExecutionMode %main LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "a" + OpName %G "G" + OpName %main "main" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %_runtimearr_int ArrayStride 4 + OpDecorate %G NonWritable + OpDecorate %G DescriptorSet 0 + OpDecorate %G Binding 0 + %int = OpTypeInt 32 1 +%_runtimearr_int = OpTypeRuntimeArray %int + %S = OpTypeStruct %_runtimearr_int +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %G = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %main = OpFunction %void None %6 + %9 = OpLabel + %10 = OpArrayLength %uint %G 0 + OpReturn + OpFunctionEnd diff --git a/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl b/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl new file mode 100644 index 0000000000..306348974f --- /dev/null +++ b/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl @@ -0,0 +1,13 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let p = &(G.a); + let p2 = p; + let l1 : u32 = arrayLength(p2); +} diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl b/test/intrinsics/arrayLength/via_let_complex.wgsl new file mode 100644 index 0000000000..db95ecd3b2 --- /dev/null +++ b/test/intrinsics/arrayLength/via_let_complex.wgsl @@ -0,0 +1,14 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let p = &*&G; + let p2 = &*p; + let p3 = &((*p).a); + let l1 : u32 = arrayLength(&*p3); +} diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.hlsl b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.hlsl new file mode 100644 index 0000000000..de68f94ef5 --- /dev/null +++ b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.hlsl @@ -0,0 +1,12 @@ + +ByteAddressBuffer G : register(t0, space0); + +[numthreads(1, 1, 1)] +void main() { + uint tint_symbol_1 = 0u; + G.GetDimensions(tint_symbol_1); + const uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u); + const uint l1 = tint_symbol_2; + return; +} + diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl new file mode 100644 index 0000000000..9fba102d83 --- /dev/null +++ b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl @@ -0,0 +1,19 @@ +SKIP: FAILED + + +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn tint_symbol() { + let p = &(*(&(G))); + let p2 = &(*(p)); + let p3 = &((*(p)).a); + let l1 : u32 = arrayLength(&(*(p3))); +} + +Failed to generate: error: Unknown import method: arrayLength diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.spvasm b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.spvasm new file mode 100644 index 0000000000..4fd2f66b6f --- /dev/null +++ b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.spvasm @@ -0,0 +1,32 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 12 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" + OpExecutionMode %main LocalSize 1 1 1 + OpName %S "S" + OpMemberName %S 0 "a" + OpName %G "G" + OpName %main "main" + OpDecorate %S Block + OpMemberDecorate %S 0 Offset 0 + OpDecorate %_runtimearr_int ArrayStride 4 + OpDecorate %G NonWritable + OpDecorate %G DescriptorSet 0 + OpDecorate %G Binding 0 + %int = OpTypeInt 32 1 +%_runtimearr_int = OpTypeRuntimeArray %int + %S = OpTypeStruct %_runtimearr_int +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %G = OpVariable %_ptr_StorageBuffer_S StorageBuffer + %void = OpTypeVoid + %6 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %main = OpFunction %void None %6 + %9 = OpLabel + %10 = OpArrayLength %uint %G 0 + OpReturn + OpFunctionEnd diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl new file mode 100644 index 0000000000..e1d5e666fa --- /dev/null +++ b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl @@ -0,0 +1,14 @@ +[[block]] +struct S { + a : array; +}; + +[[group(0), binding(0)]] var G : S; + +[[stage(compute)]] +fn main() { + let p = &(*(&(G))); + let p2 = &(*(p)); + let p3 = &((*(p)).a); + let l1 : u32 = arrayLength(&(*(p3))); +} diff --git a/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.hlsl b/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.hlsl index 859f61e080..6488e630f4 100644 --- a/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.hlsl +++ b/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.hlsl @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/647a40.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + struct tint_symbol { float4 value : SV_Position; }; diff --git a/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.spvasm b/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.spvasm index 518d2d7685..9a38750971 100644 --- a/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.spvasm +++ b/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.spvasm @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/647a40.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 diff --git a/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.wgsl index c6b65fa28b..003f2376e7 100644 --- a/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.wgsl +++ b/test/intrinsics/gen/arrayLength/647a40.wgsl.expected.wgsl @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/647a40.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + [[block]] struct SB { arg_0 : array; diff --git a/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.hlsl b/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.hlsl index 5565005a8b..2444d9ea0a 100644 --- a/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.hlsl +++ b/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.hlsl @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/721c9d.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + struct tint_symbol { float4 value : SV_Position; }; diff --git a/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.spvasm b/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.spvasm index d41bd3b810..97e2b4613f 100644 --- a/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.spvasm +++ b/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.spvasm @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/721c9d.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 diff --git a/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.wgsl index 3bf1a0b91f..9874a52132 100644 --- a/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.wgsl +++ b/test/intrinsics/gen/arrayLength/721c9d.wgsl.expected.wgsl @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/721c9d.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + [[block]] struct SB { arg_0 : array; diff --git a/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.hlsl b/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.hlsl index 141f4dee60..f2d3ad8faa 100644 --- a/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.hlsl +++ b/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.hlsl @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/b083be.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + struct tint_symbol { float4 value : SV_Position; }; diff --git a/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.spvasm b/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.spvasm index b3a291f6ac..3860b51e00 100644 --- a/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.spvasm +++ b/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.spvasm @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/b083be.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 diff --git a/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.wgsl index 3b55b34c1e..3bb5cd84fc 100644 --- a/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.wgsl +++ b/test/intrinsics/gen/arrayLength/b083be.wgsl.expected.wgsl @@ -1,3 +1,7 @@ +intrinsics/gen/arrayLength/b083be.wgsl:31:18 warning: use of deprecated intrinsic + var res: u32 = arrayLength(sb.arg_0); + ^^^^^^^^^^^ + [[block]] struct SB { arg_0 : array;